mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-23 23:20:47 +03:00
Allow setting of private metadata.
This commit is contained in:
parent
3c99302ed6
commit
f728de311e
|
@ -8,8 +8,9 @@ from .dynamic import Dynamic
|
||||||
|
|
||||||
class Argument(OrderedType):
|
class Argument(OrderedType):
|
||||||
|
|
||||||
def __init__(self, type, default_value=None, description=None, name=None, required=False, _creation_counter=None):
|
def __init__(self, type, default_value=None, description=None, name=None, required=False,
|
||||||
super(Argument, self).__init__(_creation_counter=_creation_counter)
|
_creation_counter=None, _metadata=None):
|
||||||
|
super(Argument, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||||
|
|
||||||
if required:
|
if required:
|
||||||
type = NonNull(type)
|
type = NonNull(type)
|
||||||
|
|
|
@ -23,8 +23,8 @@ class Field(OrderedType):
|
||||||
def __init__(self, type, args=None, resolver=None, source=None,
|
def __init__(self, type, args=None, resolver=None, source=None,
|
||||||
deprecation_reason=None, name=None, description=None,
|
deprecation_reason=None, name=None, description=None,
|
||||||
required=False, _creation_counter=None, default_value=None,
|
required=False, _creation_counter=None, default_value=None,
|
||||||
**extra_args):
|
_metadata=None, **extra_args):
|
||||||
super(Field, self).__init__(_creation_counter=_creation_counter)
|
super(Field, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||||
assert not args or isinstance(args, Mapping), (
|
assert not args or isinstance(args, Mapping), (
|
||||||
'Arguments in a field have to be a mapping, received "{}".'
|
'Arguments in a field have to be a mapping, received "{}".'
|
||||||
).format(args)
|
).format(args)
|
||||||
|
|
|
@ -6,8 +6,8 @@ class InputField(OrderedType):
|
||||||
|
|
||||||
def __init__(self, type, name=None, default_value=None,
|
def __init__(self, type, name=None, default_value=None,
|
||||||
deprecation_reason=None, description=None,
|
deprecation_reason=None, description=None,
|
||||||
required=False, _creation_counter=None, **extra_args):
|
required=False, _creation_counter=None, _metadata=None, **extra_args):
|
||||||
super(InputField, self).__init__(_creation_counter=_creation_counter)
|
super(InputField, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||||
self.name = name
|
self.name = name
|
||||||
if required:
|
if required:
|
||||||
type = NonNull(type)
|
type = NonNull(type)
|
||||||
|
|
44
graphene/types/tests/test_unmounted_type.py
Normal file
44
graphene/types/tests/test_unmounted_type.py
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
from ..unmountedtype import UnmountedType
|
||||||
|
|
||||||
|
|
||||||
|
class MyUnmountedType(UnmountedType):
|
||||||
|
@classmethod
|
||||||
|
def get_type(cls):
|
||||||
|
'''
|
||||||
|
This function is called when the unmounted type (Scalar instance)
|
||||||
|
is mounted (as a Field, InputField or Argument)
|
||||||
|
'''
|
||||||
|
return cls
|
||||||
|
|
||||||
|
|
||||||
|
def test_unmountedtype_allows_setting_of_metadata():
|
||||||
|
one = UnmountedType(_metadata='Test')
|
||||||
|
|
||||||
|
assert one.metadata == 'Test'
|
||||||
|
|
||||||
|
|
||||||
|
def test_unmountedtype_metadata_defaults_to_none():
|
||||||
|
one = UnmountedType()
|
||||||
|
|
||||||
|
assert one.metadata is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_unmountedtype_passes_on_metadata_to_field():
|
||||||
|
one = MyUnmountedType(_metadata='Other Test')
|
||||||
|
one_field = one.Field()
|
||||||
|
|
||||||
|
assert one_field.metadata == 'Other Test'
|
||||||
|
|
||||||
|
|
||||||
|
def test_unmountedtype_passes_on_metadata_to_input_field():
|
||||||
|
one = MyUnmountedType(_metadata='Other Test')
|
||||||
|
one_input_field = one.InputField()
|
||||||
|
|
||||||
|
assert one_input_field.metadata == 'Other Test'
|
||||||
|
|
||||||
|
|
||||||
|
def test_unmountedtype_passes_on_metadata_to_argument():
|
||||||
|
one = MyUnmountedType(_metadata='Other Test')
|
||||||
|
one_argument = one.Argument()
|
||||||
|
|
||||||
|
assert one_argument.metadata == 'Other Test'
|
|
@ -15,10 +15,11 @@ class UnmountedType(OrderedType):
|
||||||
>>> my_field = String(description='Description here')
|
>>> my_field = String(description='Description here')
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, _metadata=None, *args, **kwargs):
|
||||||
super(UnmountedType, self).__init__()
|
super(UnmountedType, self).__init__()
|
||||||
self.args = args
|
self.args = args
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
|
self.metadata = _metadata
|
||||||
|
|
||||||
def get_type(self):
|
def get_type(self):
|
||||||
'''
|
'''
|
||||||
|
@ -36,6 +37,7 @@ class UnmountedType(OrderedType):
|
||||||
self.get_type(),
|
self.get_type(),
|
||||||
*self.args,
|
*self.args,
|
||||||
_creation_counter=self.creation_counter,
|
_creation_counter=self.creation_counter,
|
||||||
|
_metadata=self.metadata,
|
||||||
**self.kwargs
|
**self.kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -48,6 +50,7 @@ class UnmountedType(OrderedType):
|
||||||
self.get_type(),
|
self.get_type(),
|
||||||
*self.args,
|
*self.args,
|
||||||
_creation_counter=self.creation_counter,
|
_creation_counter=self.creation_counter,
|
||||||
|
_metadata=self.metadata,
|
||||||
**self.kwargs
|
**self.kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -60,6 +63,7 @@ class UnmountedType(OrderedType):
|
||||||
self.get_type(),
|
self.get_type(),
|
||||||
*self.args,
|
*self.args,
|
||||||
_creation_counter=self.creation_counter,
|
_creation_counter=self.creation_counter,
|
||||||
|
_metadata=self.metadata,
|
||||||
**self.kwargs
|
**self.kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,9 @@ from functools import total_ordering
|
||||||
class OrderedType(object):
|
class OrderedType(object):
|
||||||
creation_counter = 1
|
creation_counter = 1
|
||||||
|
|
||||||
def __init__(self, _creation_counter=None):
|
def __init__(self, _creation_counter=None, _metadata=None):
|
||||||
self.creation_counter = _creation_counter or self.gen_counter()
|
self.creation_counter = _creation_counter or self.gen_counter()
|
||||||
|
self.metadata = _metadata
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def gen_counter():
|
def gen_counter():
|
||||||
|
|
|
@ -39,3 +39,15 @@ def test_orderedtype_non_orderabletypes():
|
||||||
assert one.__lt__(1) == NotImplemented
|
assert one.__lt__(1) == NotImplemented
|
||||||
assert one.__gt__(1) == NotImplemented
|
assert one.__gt__(1) == NotImplemented
|
||||||
assert not one == 1
|
assert not one == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_orderedtype_has_metadata():
|
||||||
|
one = OrderedType(_metadata='Test')
|
||||||
|
|
||||||
|
assert one.metadata == 'Test'
|
||||||
|
|
||||||
|
|
||||||
|
def test_orderedtype_metadata_defaults_to_none():
|
||||||
|
one = OrderedType()
|
||||||
|
|
||||||
|
assert one.metadata == None
|
||||||
|
|
Loading…
Reference in New Issue
Block a user