def is_type()

in facebook_business/typechecker.py [0:0]


    def is_type(self, value_type, value, allow_dict_as_obj=True):
        if value is None or value_type is None:
            return True

        if value_type in self._enum_data:
            return value in self._enum_data[value_type]
        if value_type == 'file':
            return os.path.isfile(value)
        if value_type == 'list':
            return isinstance(value, list)

        if isinstance(value, dict) and value_type in ['map', 'Object']:
            return True
        if isinstance(value, bool):
            return value_type in ['bool']
        if isinstance(value, six.string_types):
            if value_type in ['string', 'unicode', 'file', 'datetime']:
                return True
            elif value_type == 'bool' and value in ['true', 'false']:
                return True
            elif value_type in ['int', 'unsigned int', 'float']:
                return value.isdigit()
            else:
                return False
        if isinstance(value, (int, float)):
            return value_type in ['int', 'unsigned int', 'float', 'string', 'datetime']

        if self.is_type_collection(value_type, 'list'):
            if not isinstance(value, list):
                return False
            sub_type = self.get_type_from_collection(value_type, 'list')[0]
            return all([self.is_type(sub_type, item) for item in value])
        if self.is_type_collection(value_type, 'map'):
            if not isinstance(value, dict):
                return False
            sub_types = self.get_type_from_collection(value_type, 'map')
            sub_type_key = sub_types[0]
            sub_type_value = sub_types[1]
            return all([self.is_type(sub_type_key, k) and
                self.is_type(sub_type_value, v) for k, v in value.items()])

        if (type(value).__name__ == value_type or
                    hasattr(value, '_is' + value_type)):
            return True

        if allow_dict_as_obj and isinstance(value, dict):
            return self._type_is_ad_object(value_type)

        return False