From f4a8d53409fa41971b34a3a1e7bc2b7e692f79b3 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Fri, 13 Nov 2015 18:34:02 -0800 Subject: [PATCH] Remove unused code. Add more tests --- graphene/core/options.py | 5 +---- graphene/core/scalars.py | 10 ---------- graphene/core/types/argument.py | 11 ++++++++++- graphene/core/types/field.py | 15 +++------------ graphene/core/types/objecttype.py | 13 +------------ graphene/core/types/tests/test_argument.py | 8 +++++++- graphene/relay/fields.py | 5 +++-- graphene/relay/types.py | 2 +- 8 files changed, 26 insertions(+), 43 deletions(-) delete mode 100644 graphene/core/scalars.py diff --git a/graphene/core/options.py b/graphene/core/options.py index fac5081a..1a1ff691 100644 --- a/graphene/core/options.py +++ b/graphene/core/options.py @@ -3,7 +3,7 @@ from collections import OrderedDict from graphene.utils import cached_property DEFAULT_NAMES = ('description', 'name', 'is_interface', 'is_mutation', - 'type_name', 'interfaces', 'proxy') + 'type_name', 'interfaces') class Options(object): @@ -13,7 +13,6 @@ class Options(object): self.local_fields = [] self.is_interface = False self.is_mutation = False - self.proxy = False self.interfaces = [] self.parents = [] self.valid_attrs = DEFAULT_NAMES @@ -55,8 +54,6 @@ class Options(object): "'class Meta' got invalid attribute(s): %s" % ','.join( meta_attrs.keys())) - else: - self.proxy = False del self.meta diff --git a/graphene/core/scalars.py b/graphene/core/scalars.py deleted file mode 100644 index 2b6a9494..00000000 --- a/graphene/core/scalars.py +++ /dev/null @@ -1,10 +0,0 @@ -from graphql.core.type.definition import GraphQLScalarType - - -def skip(value): - return None - -GraphQLSkipField = GraphQLScalarType(name='SkipField', - serialize=skip, - parse_value=skip, - parse_literal=skip) diff --git a/graphene/core/types/argument.py b/graphene/core/types/argument.py index 6f2de8f5..0b23461b 100644 --- a/graphene/core/types/argument.py +++ b/graphene/core/types/argument.py @@ -1,9 +1,10 @@ from collections import OrderedDict +from functools import wraps from itertools import chain from graphql.core.type import GraphQLArgument -from ...utils import to_camel_case +from ...utils import to_camel_case, ProxySnakeDict from .base import ArgumentType, BaseType, OrderedType @@ -69,3 +70,11 @@ def to_arguments(*args, **kwargs): arguments[argument.name] = argument return sorted(arguments.values()) + + +def snake_case_args(resolver): + @wraps(resolver) + def wrapped_resolver(instance, args, info): + return resolver(instance, ProxySnakeDict(args), info) + + return wrapped_resolver diff --git a/graphene/core/types/field.py b/graphene/core/types/field.py index 5b91a1c7..f9e33a5b 100644 --- a/graphene/core/types/field.py +++ b/graphene/core/types/field.py @@ -1,25 +1,16 @@ from collections import OrderedDict -from functools import wraps import six from graphql.core.type import GraphQLField, GraphQLInputObjectField -from ...utils import ProxySnakeDict, to_camel_case +from ...utils import to_camel_case from ..types import BaseObjectType, InputObjectType -from .argument import ArgumentsGroup +from .argument import ArgumentsGroup, snake_case_args from .base import LazyType, MountType, OrderedType from .definitions import NonNull -def make_args_snake_case(resolver): - @wraps(resolver) - def wrapped_resolver(instance, args, info): - return resolver(instance, ProxySnakeDict(args), info) - - return wrapped_resolver - - class Empty(object): pass @@ -91,7 +82,7 @@ class Field(OrderedType): arguments = type_objecttype.get_arguments() resolver = getattr(type_objecttype, 'mutate') - resolver = make_args_snake_case(resolver) + resolver = snake_case_args(resolver) assert type, 'Internal type for field %s is None' % str(self) return GraphQLField(type, args=schema.T(arguments), resolver=resolver, description=description,) diff --git a/graphene/core/types/objecttype.py b/graphene/core/types/objecttype.py index 27628222..3959ca37 100644 --- a/graphene/core/types/objecttype.py +++ b/graphene/core/types/objecttype.py @@ -168,20 +168,9 @@ class BaseObjectType(BaseType): signals.post_init.send(self.__class__, instance=self) - @classmethod - def fields_as_arguments(cls, schema): - return OrderedDict( - [(f.attname, GraphQLArgument(f.internal_type(schema))) - for f in cls._meta.fields]) - - @classmethod - def resolve_objecttype(cls, schema, instance, *args): - return instance.__class__ - @classmethod def resolve_type(cls, schema, instance, *args): - objecttype = cls.resolve_objecttype(schema, instance, *args) - return schema.T(objecttype) + return schema.T(instance.__class__) @classmethod def internal_type(cls, schema): diff --git a/graphene/core/types/tests/test_argument.py b/graphene/core/types/tests/test_argument.py index fed2f29c..73d760d5 100644 --- a/graphene/core/types/tests/test_argument.py +++ b/graphene/core/types/tests/test_argument.py @@ -4,7 +4,7 @@ from graphene.core.schema import Schema from graphene.core.types import ObjectType from graphql.core.type import GraphQLArgument -from ..argument import Argument, to_arguments +from ..argument import Argument, to_arguments, snake_case_args from ..scalars import String @@ -45,3 +45,9 @@ def test_to_arguments_wrong_type(): p=3 ) assert 'Unknown argument p=3' == str(excinfo.value) + + +def test_snake_case_args(): + resolver = lambda instance, args, info: args['my_arg']['inner_arg'] + r = snake_case_args(resolver) + assert r(None, {'myArg': {'innerArg': 3}}, None) == 3 diff --git a/graphene/relay/fields.py b/graphene/relay/fields.py index 98154fd3..4fa766a2 100644 --- a/graphene/relay/fields.py +++ b/graphene/relay/fields.py @@ -1,6 +1,7 @@ from collections import Iterable from graphene.core.fields import Field +from graphene.core.types.definitions import NonNull from graphene.core.types.scalars import ID, Int, String from graphql_relay.connection.arrayconnection import connection_from_list from graphql_relay.node.node import from_global_id @@ -67,6 +68,7 @@ class ConnectionField(Field): class NodeField(Field): + '''Fetches an object given its ID''' def __init__(self, object_type=None, *args, **kwargs): from graphene.relay.types import Node @@ -96,8 +98,7 @@ class GlobalIDField(Field): '''The ID of an object''' def __init__(self, *args, **kwargs): - super(GlobalIDField, self).__init__(ID(), *args, **kwargs) - self.required = True + super(GlobalIDField, self).__init__(NonNull(ID()), *args, **kwargs) def contribute_to_class(self, cls, name): from graphene.relay.utils import is_node, is_node_type diff --git a/graphene/relay/types.py b/graphene/relay/types.py index f1dfacc0..3525dbc9 100644 --- a/graphene/relay/types.py +++ b/graphene/relay/types.py @@ -99,7 +99,7 @@ class BaseNode(object): class Node(BaseNode, Interface): '''An object with an ID''' - id = GlobalIDField(required=True) + id = GlobalIDField() class MutationInputType(InputObjectType):