graphql-epoxy
Advanced tools
| from collections import OrderedDict | ||
| from six import wraps | ||
| def wrap_resolver_translating_arguments(resolver, arguments_to_original_case): | ||
| translate_key = arguments_to_original_case.get | ||
| @wraps(resolver) | ||
| def wrapped(obj, args, info): | ||
| new_args = OrderedDict() if isinstance(args, OrderedDict) else {} | ||
| for k in args: | ||
| new_args[translate_key(k, k)] = args[k] | ||
| return resolver(obj, new_args, info) | ||
| return wrapped |
+24
-6
| from collections import OrderedDict | ||
| from graphql.core.type import GraphQLField, GraphQLInputObjectField | ||
| from ..types.argument import Argument | ||
@@ -9,2 +7,3 @@ from ..utils.gen_id import gen_id | ||
| from ..utils.to_camel_case import to_camel_case | ||
| from ..utils.wrap_resolver_translating_arguments import wrap_resolver_translating_arguments | ||
@@ -24,9 +23,15 @@ | ||
| def to_field(self, registry, resolver): | ||
| return GraphQLField(registry[self.type](), args=self.get_arguments(registry), resolver=resolver) | ||
| args, arguments_to_original_case = self.get_arguments(registry) | ||
| if arguments_to_original_case: | ||
| resolver = wrap_resolver_translating_arguments(resolver, arguments_to_original_case) | ||
| return GraphQLField(registry[self.type](), args=args, resolver=resolver) | ||
| def get_arguments(self, registry): | ||
| if not self.args: | ||
| return None | ||
| return None, None | ||
| arguments = [] | ||
| arguments_to_original_case = {} | ||
@@ -40,4 +45,12 @@ for k, argument in self.args.items(): | ||
| camel_cased_name = to_camel_case(k) | ||
| if camel_cased_name in arguments_to_original_case: | ||
| raise ValueError( | ||
| 'Argument %s already exists as %s' % | ||
| (k, arguments_to_original_case[camel_cased_name]) | ||
| ) | ||
| arguments_to_original_case[camel_cased_name] = k | ||
| arguments.append(( | ||
| to_camel_case(k), argument | ||
| camel_cased_name, argument | ||
| )) | ||
@@ -50,5 +63,10 @@ | ||
| return OrderedDict([(k, v.to_argument(registry)) for k, v in arguments]) | ||
| # Remove things that wouldn't perform any meaningful translation. | ||
| for k, v in list(arguments_to_original_case.items()): | ||
| if k == v: | ||
| del arguments_to_original_case[k] | ||
| return OrderedDict([(k, v.to_argument(registry)) for k, v in arguments]), arguments_to_original_case | ||
| class InputField(object): | ||
@@ -55,0 +73,0 @@ def __init__(self, type, description=None, default_value=None, name=None, _counter=None): |
| Metadata-Version: 1.1 | ||
| Name: graphql-epoxy | ||
| Version: 0.2 | ||
| Version: 0.2.1 | ||
| Summary: GraphQL implementation for Python | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/graphql-python/graphql-core |
| graphql-core>=0.4.7b1 | ||
| singledispatch>=3.4.0 |
@@ -46,2 +46,3 @@ setup.cfg | ||
| epoxy/utils/weak_ref_holder.py | ||
| epoxy/utils/wrap_resolver_translating_arguments.py | ||
| epoxy/utils/yank_potential_fields.py | ||
@@ -48,0 +49,0 @@ graphql_epoxy.egg-info/PKG-INFO |
@@ -0,2 +1,2 @@ | ||
| epoxy | ||
| tests | ||
| epoxy |
+1
-1
| Metadata-Version: 1.1 | ||
| Name: graphql-epoxy | ||
| Version: 0.2 | ||
| Version: 0.2.1 | ||
| Summary: GraphQL implementation for Python | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/graphql-python/graphql-core |
+1
-1
@@ -6,5 +6,5 @@ [flake8] | ||
| [egg_info] | ||
| tag_date = 0 | ||
| tag_build = | ||
| tag_date = 0 | ||
| tag_svn_revision = 0 | ||
+1
-1
@@ -14,3 +14,3 @@ from setuptools import setup, find_packages | ||
| name='graphql-epoxy', | ||
| version='0.2', | ||
| version='0.2.1', | ||
| description='GraphQL implementation for Python', | ||
@@ -17,0 +17,0 @@ url='https://github.com/graphql-python/graphql-core', |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
74483
1.93%62
1.64%1892
1.45%