The subclass polyfill was only needed for Python 2.7-3.5
Python 3.6 introduced the __init_subclass__, so since Graphene now requires Python 3.6+, this is no longer needed.
https://www.python.org/dev/peps/pep-0487/
* v3.0 - remove Python 2.x from build (#983)
* Change travis to only compile for p3.6+
* Changed tox to only run Python 3.6+
* Changed library classifiers to reflect support in Python 3.6+
* Changed version to 3.0.0 development
In [15]: get_version((3, 0, 0, "alpha", 0))
Out[15]: '3.0.dev20190601212304'
* Reorganize Tests (#985)
We no longer need a dedicated folder for Python3.6+ tests
We no longer need to check six.PY3 in tests
* Upgrade black to 19.3b0 (#987)
* Remove six dependency (#986)
* No one is using func_name
* Remove six simple usages
* Remove six requirement
* Remove `six.with_metaclass` calls
* pytest-asyncio should be a regular dependency now with Py3 move
* Change dependency to graphql-core-next (#988)
* Changed dependencies to core-next
* Converted Scalars
* ResolveInfo name change
* Ignore .venv
* Make Schema compatible with GraphQL-core-next
* Ignore more venv names and mypy and pytest caches
* Remove print statements for debugging in schema test
* core-next now provides out_type and out_name
* Adapt date and time scalar types to core-next
* Ignore the non-standard result.invalid flag
* Results are named tuples in core-next (immutable)
* Enum values are returned as dict in core-next
* Fix mutation tests with promises
* Make all 345 tests pass with graphql-core-next
* Remove the compat module which was only needed for older Py version
* Remove object as base class (not needed in Py 3)
* We can assume that dicts are ordered in Py 3.6+
* Make use of the fact that dicts are iterable
* Use consistent style of importing from pytest
* Restore compatibility with graphql-relay-py v3
Add adpaters for the PageInfo and Connection args.
* Avoid various deprecation warnings
* Use graphql-core 3 instead of graphql-core-next
* Update dependencies, reformat changes with black
* Update graphene/relay/connection.py
Co-Authored-By: Jonathan Kim <jkimbo@gmail.com>
* Run black on setup.py
* Remove trailing whitespace
The goal of this commit is to be able to subclass mutations like this:
```
class BaseMutation(graphene.Mutation):
class Arguments:
name = graphene.String()
def mutate(self, info, **kwargs):
# do something
class ChildMutation(BaseMutation):
class Arguments(BaseMutation.Arguments):
other_arg = graphene.String()
def mutate(self, info, **kwargs):
# do other things
```
Note:
vars(x).get(key, gettattr(x, key)) is used instead of the
simpler gettatrr(x, key) for python2.7 compat.
Indeed python2 and python3 lead to different results for
class Foo(object):
def bar(self):
pass
getattr(Foo, 'bar')
# python 2.7 : > unbound method bar
# python 3.x : > function Foo.bar
Warning filtering is the responsibility of the application, not a library, and this current use causes all warnings from an application (at least those after this function is evaluated the first time) to print their contents.
This makes the library a better citizen in the Python ecosystem, and more closely matches what developers would expect.
(For what it's worth, we also can't start using this library without this patch because the logging is too verbose and may obscure more important warnings. We depend on being able to accurately control warning and logging output)