diff --git a/.travis.yml b/.travis.yml index 76a4dc6f..713d720e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,3 +57,4 @@ deploy: tags: true password: secure: q0ey31cWljGB30l43aEd1KIPuAHRutzmsd2lBb/2zvD79ReBrzvCdFAkH2xcyo4Volk3aazQQTNUIurnTuvBxmtqja0e+gUaO5LdOcokVdOGyLABXh7qhd2kdvbTDWgSwA4EWneLGXn/SjXSe0f3pCcrwc6WDcLAHxtffMvO9gulpYQtUoOqXfMipMOkRD9iDWTJBsSo3trL70X1FHOVr6Yqi0mfkX2Y/imxn6wlTWRz28Ru94xrj27OmUnCv7qcG0taO8LNlUCquNFAr2sZ+l+U/GkQrrM1y+ehPz3pmI0cCCd7SX/7+EG9ViZ07BZ31nk4pgnqjmj3nFwqnCE/4IApGnduqtrMDF63C9TnB1TU8oJmbbUCu4ODwRpBPZMnwzaHsLnrpdrB89/98NtTfujdrh3U5bVB+t33yxrXVh+FjgLYj9PVeDixpFDn6V/Xcnv4BbRMNOhXIQT7a7/5b99RiXBjCk6KRu+Jdu5DZ+3G4Nbr4oim3kZFPUHa555qbzTlwAfkrQxKv3C3OdVJR7eGc9ADsbHyEJbdPNAh/T+xblXTXLS3hPYDvgM+WEGy3CytBDG3JVcXm25ZP96EDWjweJ7MyfylubhuKj/iR1Y1wiHeIsYq9CqRrFQUWL8gFJBfmgjs96xRXXXnvyLtKUKpKw3wFg5cR/6FnLeYZ8k= + distributions: "sdist bdist_wheel" diff --git a/README.md b/README.md index 7178e99f..876381d5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -Please read [UPGRADE-v1.0.md](https://github.com/graphql-python/graphene/blob/master/UPGRADE-v1.0.md) -to learn how to upgrade to Graphene `1.0`. +Please read [UPGRADE-v2.0.md](https://github.com/graphql-python/graphene/blob/master/UPGRADE-v2.0.md) +to learn how to upgrade to Graphene `2.0`. --- @@ -13,7 +13,7 @@ A [SQLAlchemy](http://www.sqlalchemy.org/) integration for [Graphene](http://gra For instaling graphene, just run this command in your shell ```bash -pip install "graphene-sqlalchemy>=1.0" +pip install "graphene-sqlalchemy>=2.0" ``` ## Examples @@ -47,8 +47,8 @@ class User(SQLAlchemyObjectType): class Query(graphene.ObjectType): users = graphene.List(User) - def resolve_users(self, args, context, info): - query = User.get_query(context) # SQLAlchemy query + def resolve_users(self, info): + query = User.get_query(info.context) # SQLAlchemy query return query.all() schema = graphene.Schema(query=Query) diff --git a/README.rst b/README.rst index e1983a2a..e367d430 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,6 @@ Please read -`UPGRADE-v1.0.md `__ -to learn how to upgrade to Graphene ``1.0``. +`UPGRADE-v2.0.md `__ +to learn how to upgrade to Graphene ``2.0``. -------------- @@ -17,7 +17,7 @@ For instaling graphene, just run this command in your shell .. code:: bash - pip install "graphene-sqlalchemy>=1.0" + pip install "graphene-sqlalchemy>=2.0" Examples -------- @@ -53,8 +53,8 @@ following: class Query(graphene.ObjectType): users = graphene.List(User) - def resolve_users(self, args, context, info): - query = User.get_query(context) # SQLAlchemy query + def resolve_users(self, info): + query = User.get_query(info.context) # SQLAlchemy query return query.all() schema = graphene.Schema(query=Query) diff --git a/graphene_sqlalchemy/__init__.py b/graphene_sqlalchemy/__init__.py index 5c6c0b38..a6438b9a 100644 --- a/graphene_sqlalchemy/__init__.py +++ b/graphene_sqlalchemy/__init__.py @@ -9,7 +9,12 @@ get_session ) -__all__ = ['SQLAlchemyObjectType', - 'SQLAlchemyConnectionField', - 'get_query', - 'get_session'] +__version__ = '2.0.dev2017072601' + +__all__ = [ + '__version__', + 'SQLAlchemyObjectType', + 'SQLAlchemyConnectionField', + 'get_query', + 'get_session' +] diff --git a/graphene_sqlalchemy/fields.py b/graphene_sqlalchemy/fields.py index 01fd392f..bb084b3a 100644 --- a/graphene_sqlalchemy/fields.py +++ b/graphene_sqlalchemy/fields.py @@ -2,7 +2,6 @@ from sqlalchemy.orm.query import Query -from graphene import final_resolver from graphene.relay import ConnectionField from graphene.relay.connection import PageInfo from graphql_relay.connection.arrayconnection import connection_from_list_slice @@ -17,8 +16,8 @@ def model(self): return self.type._meta.node._meta.model @classmethod - def get_query(cls, model, context, info, args): - return get_query(model, context) + def get_query(cls, model, info, **args): + return get_query(model, info.context) @property def type(self): @@ -31,10 +30,10 @@ def type(self): return _type._meta.connection @classmethod - def connection_resolver(cls, resolver, connection, model, root, args, context, info): - iterable = resolver(root, args, context, info) + def connection_resolver(cls, resolver, connection, model, root, info, **args): + iterable = resolver(root, info, **args) if iterable is None: - iterable = cls.get_query(model, context, info, args) + iterable = cls.get_query(model, info, **args) if isinstance(iterable, Query): _len = iterable.count() else: @@ -54,7 +53,7 @@ def connection_resolver(cls, resolver, connection, model, root, args, context, i return connection def get_resolver(self, parent_resolver): - return final_resolver(partial(self.connection_resolver, parent_resolver, self.type, self.model)) + return partial(self.connection_resolver, parent_resolver, self.type, self.model) __connectionFactory = SQLAlchemyConnectionField diff --git a/graphene_sqlalchemy/tests/test_query.py b/graphene_sqlalchemy/tests/test_query.py index 707d7b95..e4c3f835 100644 --- a/graphene_sqlalchemy/tests/test_query.py +++ b/graphene_sqlalchemy/tests/test_query.py @@ -277,7 +277,7 @@ class Arguments: ok = graphene.Boolean() article = graphene.Field(ArticleNode) - def mutate(self, headline, reporter_id): + def mutate(self, info, headline, reporter_id): new_article = Article( headline=headline, reporter_id=reporter_id, diff --git a/graphene_sqlalchemy/tests/test_utils.py b/graphene_sqlalchemy/tests/test_utils.py index e4b68e6e..8af3c61e 100644 --- a/graphene_sqlalchemy/tests/test_utils.py +++ b/graphene_sqlalchemy/tests/test_utils.py @@ -1,4 +1,4 @@ -from graphene import ObjectType, Schema, String, annotate, Context +from graphene import ObjectType, Schema, String from ..utils import get_session @@ -9,9 +9,8 @@ def test_get_session(): class Query(ObjectType): x = String() - @annotate(context=Context) - def resolve_x(self, context): - return get_session(context) + def resolve_x(self, info): + return get_session(info.context) query = ''' query ReporterQuery { diff --git a/graphene_sqlalchemy/types.py b/graphene_sqlalchemy/types.py index d7c98cab..44bf9c27 100644 --- a/graphene_sqlalchemy/types.py +++ b/graphene_sqlalchemy/types.py @@ -134,7 +134,7 @@ def __init_subclass_with_meta__(cls, model=None, registry=None, skip_registry=Fa registry.register(cls) @classmethod - def is_type_of(cls, root, context, info): + def is_type_of(cls, root, info): if isinstance(root, cls): return True if not is_mapped_instance(root): @@ -144,19 +144,18 @@ def is_type_of(cls, root, context, info): return isinstance(root, cls._meta.model) @classmethod - def get_query(cls, context): + def get_query(cls, info): model = cls._meta.model - return get_query(model, context) + return get_query(model, info.context) @classmethod - def get_node(cls, id, context, info): + def get_node(cls, info, id): try: - return cls.get_query(context).get(id) + return cls.get_query(info).get(id) except NoResultFound: return None - # @annotate(info=ResolveInfo) - def resolve_id(self): + def resolve_id(self, info): # graphene_type = info.parent_type.graphene_type keys = self.__mapper__.primary_key_from_instance(self) return tuple(keys) if len(keys) > 1 else keys[0] diff --git a/setup.cfg b/setup.cfg index 558f31d7..d8d54e3f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,3 +24,6 @@ norecursedirs = filterwarnings = error ignore::DeprecationWarning + +[bdist_wheel] +universal=1 diff --git a/setup.py b/setup.py index 2494ffad..1853009b 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,18 @@ from setuptools import find_packages, setup +import sys +import ast +import re + +_version_re = re.compile(r'__version__\s+=\s+(.*)') + +with open('graphene_django/__init__.py', 'rb') as f: + version = str(ast.literal_eval(_version_re.search( + f.read().decode('utf-8')).group(1))) + setup( name='graphene-sqlalchemy', - version='2.0.dev2017072601', + version=version, description='Graphene SQLAlchemy integration', long_description=open('README.rst').read(),