This commit is contained in:
Imran Sulemanji 2016-02-08 09:12:04 +00:00
commit 8bf8db44fb
3 changed files with 10 additions and 4 deletions

View File

@ -5,6 +5,8 @@ import six
class InstanceType(object): class InstanceType(object):
def _get_true_type(self, _type):
return _type() if ('function' in str(type(_type))) else _type
def internal_type(self, schema): def internal_type(self, schema):
raise NotImplementedError("internal_type for type {} is not implemented".format(self.__class__.__name__)) raise NotImplementedError("internal_type for type {} is not implemented".format(self.__class__.__name__))

View File

@ -12,13 +12,16 @@ class OfType(MountedType):
self.of_type = of_type self.of_type = of_type
super(OfType, self).__init__(*args, **kwargs) super(OfType, self).__init__(*args, **kwargs)
def get_type(self):
return self._get_true_type(self.of_type)
def internal_type(self, schema): def internal_type(self, schema):
return self.T(schema.T(self.of_type)) return self.T(schema.T(self.get_type()))
def mount(self, cls): def mount(self, cls):
self.parent = cls self.parent = cls
if isinstance(self.of_type, MountType): if isinstance(self.of_type, MountType):
self.of_type.mount(cls) self.get_type().mount(cls)
class List(OfType): class List(OfType):

View File

@ -84,9 +84,10 @@ class Field(NamedType, OrderedType):
return default_getter return default_getter
def get_type(self, schema): def get_type(self, schema):
_type = self._get_true_type(self.type)
if self.required: if self.required:
return NonNull(self.type) return NonNull(_type)
return self.type return _type
def decorate_resolver(self, resolver): def decorate_resolver(self, resolver):
return snake_case_args(resolver) return snake_case_args(resolver)