Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-graphene for openSUSE:Factory
checked in at 2022-08-10 17:14:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-graphene (Old)
and /work/SRC/openSUSE:Factory/.python-graphene.new.1521 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-graphene"
Wed Aug 10 17:14:48 2022 rev:6 rq:994268 version:3.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-graphene/python-graphene.changes
2022-03-21 20:13:28.120526207 +0100
+++
/work/SRC/openSUSE:Factory/.python-graphene.new.1521/python-graphene.changes
2022-08-10 17:15:55.878120074 +0200
@@ -1,0 +2,10 @@
+Wed Aug 10 07:54:15 UTC 2022 - Mark??ta Machov?? <[email protected]>
+
+- Update to version 3.1.0
+ * Refactor Multi Expression Code
+ * Add Python 3.9 and 3.10 to the test matrix
+ * fix: default value for argument should be Undefined (Issue #1394)
+ * fix: add default param _variables to parse_literal #1419
+ * Make Graphene compatible with GraphQL-Core 3.2
+
+-------------------------------------------------------------------
Old:
----
graphene-3.0.0.tar.gz
New:
----
graphene-3.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-graphene.spec ++++++
--- /var/tmp/diff_new_pack.e1D2PV/_old 2022-08-10 17:15:56.530121776 +0200
+++ /var/tmp/diff_new_pack.e1D2PV/_new 2022-08-10 17:15:56.534121787 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-graphene
-Version: 3.0.0
+Version: 3.1.0
Release: 0
Summary: GraphQL Framework for Python
License: MIT
@@ -27,8 +27,8 @@
URL: https://github.com/graphql-python/graphene
Source:
https://github.com/graphql-python/graphene/archive/v%{version}.tar.gz#/graphene-%{version}.tar.gz
BuildRequires: %{python_module aniso8601 >= 8}
-BuildRequires: %{python_module graphql-core >= 3.1.2}
-BuildRequires: %{python_module graphql-relay >= 3.0}
+BuildRequires: %{python_module graphql-core >= 3.1}
+BuildRequires: %{python_module graphql-relay >= 3.1}
BuildRequires: %{python_module promise}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-benchmark}
@@ -40,8 +40,8 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-aniso8601 >= 8
-Requires: python-graphql-core >= 3.1.2
-Requires: python-graphql-relay >= 3.0
+Requires: python-graphql-core >= 3.1
+Requires: python-graphql-relay >= 3.1
Requires: python-six
BuildArch: noarch
%python_subpackages
@@ -61,12 +61,8 @@
%check
# The example depend on snapshottest, which is a bit messy to package as of
v0.5.1
-# https://github.com/syrusakbary/snapshottest/pull/114
-
-# test_objecttype_as_container_extra_args and
test_objecttype_as_container_invalid_kwargs
-# have slightly different output on Python 3.10, that the tests do not expect
-# https://github.com/graphql-python/graphene/issues/1400
-%pytest --ignore examples -k 'not (test_objecttype_as_container_extra_args or
test_objecttype_as_container_invalid_kwargs)'
+# https://github.com/syrusakbary/snapshottest/issues/92
+%pytest --ignore examples
%files %{python_files}
%doc README.rst
++++++ graphene-3.0.0.tar.gz -> graphene-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/.github/workflows/deploy.yml
new/graphene-3.1.0/.github/workflows/deploy.yml
--- old/graphene-3.0.0/.github/workflows/deploy.yml 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/.github/workflows/deploy.yml 2022-05-30
14:57:16.000000000 +0200
@@ -11,10 +11,10 @@
steps:
- uses: actions/checkout@v2
- - name: Set up Python 3.8
+ - name: Set up Python 3.9
uses: actions/setup-python@v2
with:
- python-version: 3.8
+ python-version: 3.9
- name: Build wheel and source tarball
run: |
pip install wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/.github/workflows/lint.yml
new/graphene-3.1.0/.github/workflows/lint.yml
--- old/graphene-3.0.0/.github/workflows/lint.yml 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/.github/workflows/lint.yml 2022-05-30
14:57:16.000000000 +0200
@@ -8,10 +8,10 @@
steps:
- uses: actions/checkout@v2
- - name: Set up Python 3.8
+ - name: Set up Python 3.9
uses: actions/setup-python@v2
with:
- python-version: 3.8
+ python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/.github/workflows/tests.yml
new/graphene-3.1.0/.github/workflows/tests.yml
--- old/graphene-3.0.0/.github/workflows/tests.yml 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/.github/workflows/tests.yml 2022-05-30
14:57:16.000000000 +0200
@@ -25,6 +25,8 @@
fail-fast: false
matrix:
include:
+ - {name: '3.10', python: '3.10', os: ubuntu-latest, tox: py310}
+ - {name: '3.9', python: '3.9', os: ubuntu-latest, tox: py39}
- {name: '3.8', python: '3.8', os: ubuntu-latest, tox: py38}
- {name: '3.7', python: '3.7', os: ubuntu-latest, tox: py37}
- {name: '3.6', python: '3.6', os: ubuntu-latest, tox: py36}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/.pre-commit-config.yaml
new/graphene-3.1.0/.pre-commit-config.yaml
--- old/graphene-3.0.0/.pre-commit-config.yaml 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/.pre-commit-config.yaml 2022-05-30 14:57:16.000000000
+0200
@@ -1,9 +1,9 @@
default_language_version:
- python: python3.8
+ python: python3.9
repos:
-- repo: git://github.com/pre-commit/pre-commit-hooks
- rev: v2.3.0
+- repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.2.0
hooks:
- id: check-merge-conflict
- id: check-json
@@ -16,15 +16,15 @@
- --autofix
- id: trailing-whitespace
exclude: README.md
-- repo: git://github.com/asottile/pyupgrade
- rev: v2.24.0
+- repo: https://github.com/asottile/pyupgrade
+ rev: v2.32.1
hooks:
- id: pyupgrade
-- repo: git://github.com/ambv/black
- rev: 19.3b0
+- repo: https://github.com/ambv/black
+ rev: 22.3.0
hooks:
- id: black
-- repo: git://github.com/PyCQA/flake8
- rev: 3.8.4
+- repo: https://github.com/PyCQA/flake8
+ rev: 4.0.1
hooks:
- id: flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/README.rst
new/graphene-3.1.0/README.rst
--- old/graphene-3.0.0/README.rst 2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/README.rst 2022-05-30 14:57:16.000000000 +0200
@@ -1,18 +1,18 @@
-**We are looking for contributors**! Please check the
-`ROADMAP <https://github.com/graphql-python/graphene/blob/master/ROADMAP.md>`__
-to see how you can help ??????
-
---------------
-
|Graphene Logo| `Graphene <http://graphene-python.org>`__ |Build Status| |PyPI
version| |Coverage Status|
=========================================================================================================
+`???? Join the community on
+Slack
<https://join.slack.com/t/graphenetools/shared_invite/enQtOTE2MDQ1NTg4MDM1LTA4Nzk0MGU0NGEwNzUxZGNjNDQ4ZjAwNDJjMjY0OGE1ZDgxZTg4YjM2ZTc4MjE2ZTAzZjE2ZThhZTQzZTkyMmM>`__
+
+**We are looking for contributors**! Please check the
+`ROADMAP <https://github.com/graphql-python/graphene/blob/master/ROADMAP.md>`__
+to see how you can help ??????
Introduction
------------
-`Graphene <http://graphene-python.org>`__ is a Python library for
-building GraphQL schemas/types fast and easily.
+`Graphene <http://graphene-python.org>`__ is an opinionated Python
+library for building GraphQL schemas/types fast and easily.
- **Easy to use:** Graphene helps you use GraphQL in Python without
effort.
@@ -27,17 +27,18 @@
Graphene has multiple integrations with different frameworks:
-+---------------------+----------------------------------------------------------------------------------------------+
-| integration | Package
|
-+=====================+==============================================================================================+
-| Django | `graphene-django
<https://github.com/graphql-python/graphene-django/>`__ |
-+---------------------+----------------------------------------------------------------------------------------------+
-| SQLAlchemy | `graphene-sqlalchemy
<https://github.com/graphql-python/graphene-sqlalchemy/>`__ |
-+---------------------+----------------------------------------------------------------------------------------------+
-| Google App Engine | `graphene-gae
<https://github.com/graphql-python/graphene-gae/>`__ |
-+---------------------+----------------------------------------------------------------------------------------------+
-| Peewee | *In progress* (`Tracking Issue
<https://github.com/graphql-python/graphene/issues/289>`__) |
-+---------------------+----------------------------------------------------------------------------------------------+
++-------------------+-------------------------------------------------+
+| integration | Package |
++===================+=================================================+
+| Django | `graphene-django <https:/ |
+| | /github.com/graphql-python/graphene-django/>`__ |
++-------------------+-------------------------------------------------+
+| SQLAlchemy | `graphene-sqlalchemy <https://git |
+| | hub.com/graphql-python/graphene-sqlalchemy/>`__ |
++-------------------+-------------------------------------------------+
+| Google App Engine | `graphene-gae <http |
+| | s://github.com/graphql-python/graphene-gae/>`__ |
++-------------------+-------------------------------------------------+
Also, Graphene is fully compatible with the GraphQL spec, working
seamlessly with all GraphQL clients, such as
@@ -52,13 +53,7 @@
.. code:: bash
- pip install "graphene>=2.0"
-
-2.0 Upgrade Guide
------------------
-
-Please read `UPGRADE-v2.0.md </UPGRADE-v2.0.md>`__ to learn how to
-upgrade.
+ pip install "graphene>=3.0"
Examples
--------
@@ -67,26 +62,26 @@
.. code:: python
- import graphene
+ import graphene
- class Query(graphene.ObjectType):
- hello = graphene.String(description='A typical hello world')
+ class Query(graphene.ObjectType):
+ hello = graphene.String(description='A typical hello world')
- def resolve_hello(self, info):
- return 'World'
+ def resolve_hello(self, info):
+ return 'World'
- schema = graphene.Schema(query=Query)
+ schema = graphene.Schema(query=Query)
Then Querying ``graphene.Schema`` is as simple as:
.. code:: python
- query = '''
- query SayHello {
- hello
- }
- '''
- result = schema.execute(query)
+ query = '''
+ query SayHello {
+ hello
+ }
+ '''
+ result = schema.execute(query)
If you want to learn even more, you can also check the following
`examples <examples/>`__:
@@ -110,20 +105,20 @@
.. code:: sh
- virtualenv venv
- source venv/bin/activate
- pip install -e ".[test]"
+ virtualenv venv
+ source venv/bin/activate
+ pip install -e ".[test]"
Well-written tests and maintaining good test coverage is important to
this project. While developing, run new and existing tests with:
.. code:: sh
- py.test graphene/relay/tests/test_node.py # Single file
- py.test graphene/relay # All tests in directory
+ py.test graphene/relay/tests/test_node.py # Single file
+ py.test graphene/relay # All tests in directory
Add the ``-s`` flag if you have introduced breakpoints into the code for
-debugging. Add the ``-v`` ("verbose") flag to get more detailed test
+debugging. Add the ``-v`` (???verbose???) flag to get more detailed test
output. For even more detailed output, use ``-vv``. Check out the
`pytest documentation <https://docs.pytest.org/en/latest/>`__ for more
options and test running controls.
@@ -132,7 +127,7 @@
.. code:: sh
- py.test graphene --benchmark-only
+ py.test graphene --benchmark-only
Graphene supports several versions of Python. To make sure that changes
do not break compatibility with any of those versions, we use ``tox`` to
@@ -142,14 +137,14 @@
.. code:: sh
- tox
+ tox
If you wish to run against a specific version defined in the ``tox.ini``
file:
.. code:: sh
- tox -e py36
+ tox -e py36
Tox can only use whatever versions of Python are installed on your
system. When you create a pull request, Travis will also be running the
@@ -168,7 +163,7 @@
.. code:: sh
- make docs
+ make docs
.. |Graphene Logo| image:: http://graphene-python.org/favicon.png
.. |Build Status| image::
https://travis-ci.org/graphql-python/graphene.svg?branch=master
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/UPGRADE-v2.0.md
new/graphene-3.1.0/UPGRADE-v2.0.md
--- old/graphene-3.0.0/UPGRADE-v2.0.md 2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/UPGRADE-v2.0.md 2022-05-30 14:57:16.000000000 +0200
@@ -123,7 +123,7 @@
return ...
```
-**PS.: Take care with receiving args like `my_arg` as above. This doesn't work
for optional (non-required) arguments as stantard `Connection`'s arguments
(first, before, after, before).**
+**PS.: Take care with receiving args like `my_arg` as above. This doesn't work
for optional (non-required) arguments as stantard `Connection`'s arguments
(first, last, after, before).**
You may need something like this:
```python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/conf.py
new/graphene-3.1.0/docs/conf.py
--- old/graphene-3.0.0/docs/conf.py 2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/docs/conf.py 2022-05-30 14:57:16.000000000 +0200
@@ -64,18 +64,18 @@
master_doc = "index"
# General information about the project.
-project = u"Graphene"
-copyright = u"Graphene 2016"
-author = u"Syrus Akbary"
+project = "Graphene"
+copyright = "Graphene 2016"
+author = "Syrus Akbary"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = u"1.0"
+version = "1.0"
# The full version, including alpha/beta/rc tags.
-release = u"1.0"
+release = "1.0"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -278,7 +278,7 @@
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- (master_doc, "Graphene.tex", u"Graphene Documentation", u"Syrus Akbary",
"manual")
+ (master_doc, "Graphene.tex", "Graphene Documentation", "Syrus Akbary",
"manual")
]
# The name of an image file (relative to this directory) to place at the top of
@@ -318,7 +318,7 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
-man_pages = [(master_doc, "graphene", u"Graphene Documentation", [author], 1)]
+man_pages = [(master_doc, "graphene", "Graphene Documentation", [author], 1)]
# If true, show URL addresses after external links.
#
@@ -334,7 +334,7 @@
(
master_doc,
"Graphene",
- u"Graphene Documentation",
+ "Graphene Documentation",
author,
"Graphene",
"One line description of project.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/execution/dataloader.rst
new/graphene-3.1.0/docs/execution/dataloader.rst
--- old/graphene-3.0.0/docs/execution/dataloader.rst 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/docs/execution/dataloader.rst 2022-05-30
14:57:16.000000000 +0200
@@ -28,10 +28,9 @@
A batch loading function accepts a list of keys, and returns a ``Promise``
which resolves to a list of ``values``.
-Then load individual values from the loader. ``DataLoader`` will coalesce all
-individual loads which occur within a single frame of execution (executed once
-the wrapping promise is resolved) and then call your batch function with all
-requested keys.
+``DataLoader`` will coalesce all individual loads which occur within a
+single frame of execution (executed once the wrapping promise is resolved)
+and then call your batch function with all requested keys.
.. code:: python
@@ -96,7 +95,7 @@
}
-Naively, if ``me``, ``bestFriend`` and ``friends`` each need to request the
backend,
+If ``me``, ``bestFriend`` and ``friends`` each need to send a request to the
backend,
there could be at most 13 database requests!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/execution/middleware.rst
new/graphene-3.1.0/docs/execution/middleware.rst
--- old/graphene-3.0.0/docs/execution/middleware.rst 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/docs/execution/middleware.rst 2022-05-30
14:57:16.000000000 +0200
@@ -46,7 +46,7 @@
------------------
Middleware can also be defined as a function. Here we define a middleware that
-logs the time it takes to resolve each field
+logs the time it takes to resolve each field:
.. code:: python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/types/interfaces.rst
new/graphene-3.1.0/docs/types/interfaces.rst
--- old/graphene-3.0.0/docs/types/interfaces.rst 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/docs/types/interfaces.rst 2022-05-30
14:57:16.000000000 +0200
@@ -44,7 +44,7 @@
but also bring in extra fields, ``home_planet``, ``starships`` and
``primary_function``, that are specific to that particular type of character.
-The full GraphQL schema defition will look like this:
+The full GraphQL schema definition will look like this:
.. code::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/types/mutations.rst
new/graphene-3.1.0/docs/types/mutations.rst
--- old/graphene-3.0.0/docs/types/mutations.rst 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/docs/types/mutations.rst 2022-05-30 14:57:16.000000000
+0200
@@ -85,9 +85,9 @@
InputFields and InputObjectTypes
----------------------------------
-InputFields are used in mutations to allow nested input data for mutations
+InputFields are used in mutations to allow nested input data for mutations.
-To use an InputField you define an InputObjectType that specifies the
structure of your input data
+To use an InputField you define an InputObjectType that specifies the
structure of your input data:
.. code:: python
@@ -112,7 +112,7 @@
return CreatePerson(person=person)
-Note that **name** and **age** are part of **person_data** now
+Note that **name** and **age** are part of **person_data** now.
Using the above mutation your new query would look like this:
@@ -128,7 +128,7 @@
}
InputObjectTypes can also be fields of InputObjectTypes allowing you to have
-as complex of input data as you need
+as complex of input data as you need:
.. code:: python
@@ -160,7 +160,7 @@
def mutate(root, info, name):
return Person(name=name)
-Then, if we query (``schema.execute(query_str)``) the following:
+Then, if we query (``schema.execute(query_str)``) with the following:
.. code::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/types/schema.rst
new/graphene-3.1.0/docs/types/schema.rst
--- old/graphene-3.0.0/docs/types/schema.rst 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/docs/types/schema.rst 2022-05-30 14:57:16.000000000
+0200
@@ -44,7 +44,7 @@
For example, when a field returns an ``Interface``, the schema doesn't know
about any of the
implementations.
-In this case, we need to use the ``types`` argument when creating the Schema.
+In this case, we need to use the ``types`` argument when creating the Schema:
.. code:: python
@@ -63,7 +63,7 @@
explicitly set with the ``name`` arg) will be converted from
``snake_case`` to ``camelCase`` (as the API is usually being consumed by a
js/mobile client)
-For example with the ObjectType
+For example with the ObjectType the ``last_name`` field name is converted to
``lastName``:
.. code:: python
@@ -71,12 +71,10 @@
last_name = graphene.String()
other_name = graphene.String(name='_other_Name')
-the ``last_name`` field name is converted to ``lastName``.
-
In case you don't want to apply this transformation, provide a ``name``
argument to the field constructor.
``other_name`` converts to ``_other_Name`` (without further transformations).
-Your query should look like
+Your query should look like:
.. code::
@@ -86,7 +84,7 @@
}
-To disable this behavior, set the ``auto_camelcase`` to ``False`` upon schema
instantiation.
+To disable this behavior, set the ``auto_camelcase`` to ``False`` upon schema
instantiation:
.. code:: python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/docs/types/unions.rst
new/graphene-3.1.0/docs/types/unions.rst
--- old/graphene-3.0.0/docs/types/unions.rst 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/docs/types/unions.rst 2022-05-30 14:57:16.000000000
+0200
@@ -7,7 +7,7 @@
The basics:
- Each Union is a Python class that inherits from ``graphene.Union``.
-- Unions don't have any fields on it, just links to the possible objecttypes.
+- Unions don't have any fields on it, just links to the possible ObjectTypes.
Quick example
-------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py
new/graphene-3.1.0/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py
---
old/graphene-3.0.0/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py
2021-11-13 23:15:18.000000000 +0100
+++
new/graphene-3.1.0/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py
2022-05-30 14:57:16.000000000 +0200
@@ -49,7 +49,7 @@
name: String
"""The ships used by the faction."""
- ships(before: String = null, after: String = null, first: Int = null, last:
Int = null): ShipConnection
+ ships(before: String, after: String, first: Int, last: Int): ShipConnection
}
"""An object with an ID"""
@@ -115,5 +115,4 @@
shipName: String!
factionId: String!
clientMutationId: String
-}
-'''
+}'''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/examples/starwars_relay/tests/test_objectidentification.py
new/graphene-3.1.0/examples/starwars_relay/tests/test_objectidentification.py
---
old/graphene-3.0.0/examples/starwars_relay/tests/test_objectidentification.py
2021-11-13 23:15:18.000000000 +0100
+++
new/graphene-3.1.0/examples/starwars_relay/tests/test_objectidentification.py
2022-05-30 14:57:16.000000000 +0200
@@ -9,7 +9,7 @@
def test_str_schema(snapshot):
- snapshot.assert_match(str(schema))
+ snapshot.assert_match(str(schema).strip())
def test_correctly_fetches_id_name_rebels(snapshot):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/__init__.py
new/graphene-3.1.0/graphene/__init__.py
--- old/graphene-3.0.0/graphene/__init__.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/__init__.py 2022-05-30 14:57:16.000000000
+0200
@@ -41,7 +41,7 @@
from .utils.module_loading import lazy_import
from .utils.resolve_only_args import resolve_only_args
-VERSION = (3, 0, 0, "final", 0)
+VERSION = (3, 1, 0, "final", 0)
__version__ = get_version(VERSION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/pyutils/version.py
new/graphene-3.1.0/graphene/pyutils/version.py
--- old/graphene-3.0.0/graphene/pyutils/version.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/pyutils/version.py 2022-05-30
14:57:16.000000000 +0200
@@ -19,10 +19,7 @@
sub = ""
if version[3] == "alpha" and version[4] == 0:
git_changeset = get_git_changeset()
- if git_changeset:
- sub = ".dev%s" % git_changeset
- else:
- sub = ".dev"
+ sub = ".dev%s" % git_changeset if git_changeset else ".dev"
elif version[3] != "final":
mapping = {"alpha": "a", "beta": "b", "rc": "rc"}
sub = mapping[version[3]] + str(version[4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/relay/node.py
new/graphene-3.1.0/graphene/relay/node.py
--- old/graphene-3.0.0/graphene/relay/node.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/relay/node.py 2022-05-30 14:57:16.000000000
+0200
@@ -18,11 +18,7 @@
if not issubclass(objecttype, ObjectType):
return False
- for i in objecttype._meta.interfaces:
- if issubclass(i, Node):
- return True
-
- return False
+ return any(issubclass(i, Node) for i in objecttype._meta.interfaces)
class GlobalID(Field):
@@ -90,11 +86,13 @@
def get_node_from_global_id(cls, info, global_id, only_type=None):
try:
_type, _id = cls.from_global_id(global_id)
+ if not _type:
+ raise ValueError("Invalid Global ID")
except Exception as e:
raise Exception(
f'Unable to parse global ID "{global_id}". '
'Make sure it is a base64 encoded string in the format:
"TypeName:id". '
- f"Exception message: {str(e)}"
+ f"Exception message: {e}"
)
graphene_type = info.schema.get_type(_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/relay/tests/test_node.py
new/graphene-3.1.0/graphene/relay/tests/test_node.py
--- old/graphene-3.0.0/graphene/relay/tests/test_node.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/relay/tests/test_node.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,7 +1,7 @@
import re
-from graphql_relay import to_global_id
+from textwrap import dedent
-from graphene.tests.utils import dedent
+from graphql_relay import to_global_id
from ...types import ObjectType, Schema, String
from ..node import Node, is_node
@@ -171,8 +171,10 @@
def test_str_schema():
- assert str(schema) == dedent(
- '''
+ assert (
+ str(schema).strip()
+ == dedent(
+ '''
schema {
query: RootQuery
}
@@ -213,4 +215,5 @@
): MyNode
}
'''
+ ).strip()
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/relay/tests/test_node_custom.py
new/graphene-3.1.0/graphene/relay/tests/test_node_custom.py
--- old/graphene-3.0.0/graphene/relay/tests/test_node_custom.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/relay/tests/test_node_custom.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,6 +1,6 @@
-from graphql import graphql_sync
+from textwrap import dedent
-from graphene.tests.utils import dedent
+from graphql import graphql_sync
from ...types import Interface, ObjectType, Schema
from ...types.scalars import Int, String
@@ -54,8 +54,10 @@
def test_str_schema_correct():
- assert str(schema) == dedent(
- '''
+ assert (
+ str(schema).strip()
+ == dedent(
+ '''
schema {
query: RootQuery
}
@@ -93,6 +95,7 @@
): Node
}
'''
+ ).strip()
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/test/__init__.py
new/graphene-3.1.0/graphene/test/__init__.py
--- old/graphene-3.0.0/graphene/test/__init__.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/test/__init__.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,5 +1,4 @@
from promise import Promise, is_thenable
-from graphql.error import format_error as format_graphql_error
from graphql.error import GraphQLError
from graphene.types.schema import Schema
@@ -7,7 +6,7 @@
def default_format_error(error):
if isinstance(error, GraphQLError):
- return format_graphql_error(error)
+ return error.formatted
return {"message": str(error)}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/tests/issues/test_1394.py
new/graphene-3.1.0/graphene/tests/issues/test_1394.py
--- old/graphene-3.0.0/graphene/tests/issues/test_1394.py 1970-01-01
01:00:00.000000000 +0100
+++ new/graphene-3.1.0/graphene/tests/issues/test_1394.py 2022-05-30
14:57:16.000000000 +0200
@@ -0,0 +1,36 @@
+from ...types import ObjectType, Schema, String, NonNull
+
+
+class Query(ObjectType):
+ hello = String(input=NonNull(String))
+
+ def resolve_hello(self, info, input):
+ if input == "nothing":
+ return None
+ return f"Hello {input}!"
+
+
+schema = Schema(query=Query)
+
+
+def test_required_input_provided():
+ """
+ Test that a required argument works when provided.
+ """
+ input_value = "Potato"
+ result = schema.execute('{ hello(input: "%s") }' % input_value)
+ assert not result.errors
+ assert result.data == {"hello": "Hello Potato!"}
+
+
+def test_required_input_missing():
+ """
+ Test that a required argument raised an error if not provided.
+ """
+ result = schema.execute("{ hello }")
+ assert result.errors
+ assert len(result.errors) == 1
+ assert (
+ result.errors[0].message
+ == "Field 'hello' argument 'input' of type 'String!' is required, but
it was not provided."
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/tests/issues/test_1419.py
new/graphene-3.1.0/graphene/tests/issues/test_1419.py
--- old/graphene-3.0.0/graphene/tests/issues/test_1419.py 1970-01-01
01:00:00.000000000 +0100
+++ new/graphene-3.1.0/graphene/tests/issues/test_1419.py 2022-05-30
14:57:16.000000000 +0200
@@ -0,0 +1,53 @@
+import pytest
+
+from ...types.base64 import Base64
+from ...types.datetime import Date, DateTime
+from ...types.decimal import Decimal
+from ...types.generic import GenericScalar
+from ...types.json import JSONString
+from ...types.objecttype import ObjectType
+from ...types.scalars import ID, BigInt, Boolean, Float, Int, String
+from ...types.schema import Schema
+from ...types.uuid import UUID
+
+
[email protected](
+ "input_type,input_value",
+ [
+ (Date, '"2022-02-02"'),
+ (GenericScalar, '"foo"'),
+ (Int, "1"),
+ (BigInt, "12345678901234567890"),
+ (Float, "1.1"),
+ (String, '"foo"'),
+ (Boolean, "true"),
+ (ID, "1"),
+ (DateTime, '"2022-02-02T11:11:11"'),
+ (UUID, '"cbebbc62-758e-4f75-a890-bc73b5017d81"'),
+ (Decimal, "1.1"),
+ (JSONString, '{key:"foo",value:"bar"}'),
+ (Base64, '"Q2hlbG8gd29ycmxkCg=="'),
+ ],
+)
+def test_parse_literal_with_variables(input_type, input_value):
+ # input_b needs to be evaluated as literal while the variable dict for
+ # input_a is passed along.
+
+ class Query(ObjectType):
+ generic = GenericScalar(input_a=GenericScalar(), input_b=input_type())
+
+ def resolve_generic(self, info, input_a=None, input_b=None):
+ return input
+
+ schema = Schema(query=Query)
+
+ query = f"""
+ query Test($a: GenericScalar){{
+ generic(inputA: $a, inputB: {input_value})
+ }}
+ """
+ result = schema.execute(
+ query,
+ variables={"a": "bar"},
+ )
+ assert not result.errors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/tests/utils.py
new/graphene-3.1.0/graphene/tests/utils.py
--- old/graphene-3.0.0/graphene/tests/utils.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/tests/utils.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,9 +0,0 @@
-from textwrap import dedent as _dedent
-
-
-def dedent(text: str) -> str:
- """Fix indentation of given text by removing leading spaces and tabs.
- Also removes leading newlines and trailing spaces and tabs, but keeps
trailing
- newlines.
- """
- return _dedent(text.lstrip("\n").rstrip(" \t"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/argument.py
new/graphene-3.1.0/graphene/types/argument.py
--- old/graphene-3.0.0/graphene/types/argument.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/argument.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,4 +1,5 @@
from itertools import chain
+from graphql import Undefined
from .dynamic import Dynamic
from .mountedtype import MountedType
@@ -41,7 +42,7 @@
def __init__(
self,
type_,
- default_value=None,
+ default_value=Undefined,
description=None,
name=None,
required=False,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/base64.py
new/graphene-3.1.0/graphene/types/base64.py
--- old/graphene-3.0.0/graphene/types/base64.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/types/base64.py 2022-05-30 14:57:16.000000000
+0200
@@ -22,7 +22,7 @@
return b64encode(value).decode("utf-8")
@classmethod
- def parse_literal(cls, node):
+ def parse_literal(cls, node, _variables=None):
if not isinstance(node, StringValueNode):
raise GraphQLError(
f"Base64 cannot represent non-string value: {print_ast(node)}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/decimal.py
new/graphene-3.1.0/graphene/types/decimal.py
--- old/graphene-3.0.0/graphene/types/decimal.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/decimal.py 2022-05-30
14:57:16.000000000 +0200
@@ -22,7 +22,7 @@
return str(dec)
@classmethod
- def parse_literal(cls, node):
+ def parse_literal(cls, node, _variables=None):
if isinstance(node, (StringValueNode, IntValueNode)):
return cls.parse_value(node.value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/definitions.py
new/graphene-3.1.0/graphene/types/definitions.py
--- old/graphene-3.0.0/graphene/types/definitions.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/definitions.py 2022-05-30
14:57:16.000000000 +0200
@@ -7,7 +7,6 @@
GraphQLObjectType,
GraphQLScalarType,
GraphQLUnionType,
- Undefined,
)
@@ -50,7 +49,7 @@
try:
value = enum[value]
except KeyError:
- return Undefined
+ pass
return super(GrapheneEnumType, self).serialize(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/generic.py
new/graphene-3.1.0/graphene/types/generic.py
--- old/graphene-3.0.0/graphene/types/generic.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/generic.py 2022-05-30
14:57:16.000000000 +0200
@@ -29,7 +29,7 @@
parse_value = identity
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, (StringValueNode, BooleanValueNode)):
return ast.value
elif isinstance(ast, IntValueNode):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/json.py
new/graphene-3.1.0/graphene/types/json.py
--- old/graphene-3.0.0/graphene/types/json.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/types/json.py 2022-05-30 14:57:16.000000000
+0200
@@ -20,7 +20,7 @@
return json.dumps(dt)
@staticmethod
- def parse_literal(node):
+ def parse_literal(node, _variables=None):
if isinstance(node, StringValueNode):
return json.loads(node.value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/mutation.py
new/graphene-3.1.0/graphene/types/mutation.py
--- old/graphene-3.0.0/graphene/types/mutation.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/mutation.py 2022-05-30
14:57:16.000000000 +0200
@@ -101,10 +101,7 @@
"Read more:"
"
https://github.com/graphql-python/graphene/blob/v2.0.0/UPGRADE-v2.0.md#mutation-input"
)
- if input_class:
- arguments = props(input_class)
- else:
- arguments = {}
+ arguments = props(input_class) if input_class else {}
if not resolver:
mutate = getattr(cls, "mutate", None)
assert mutate, "All mutations must define a mutate method in it"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/resolver.py
new/graphene-3.1.0/graphene/types/resolver.py
--- old/graphene-3.0.0/graphene/types/resolver.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/resolver.py 2022-05-30
14:57:16.000000000 +0200
@@ -7,9 +7,7 @@
def dict_or_attr_resolver(attname, default_value, root, info, **args):
- resolver = attr_resolver
- if isinstance(root, dict):
- resolver = dict_resolver
+ resolver = dict_resolver if isinstance(root, dict) else attr_resolver
return resolver(attname, default_value, root, info, **args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/scalars.py
new/graphene-3.1.0/graphene/types/scalars.py
--- old/graphene-3.0.0/graphene/types/scalars.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/scalars.py 2022-05-30
14:57:16.000000000 +0200
@@ -75,7 +75,7 @@
parse_value = coerce_int
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, IntValueNode):
num = int(ast.value)
if MIN_INT <= num <= MAX_INT:
@@ -104,7 +104,7 @@
parse_value = coerce_int
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, IntValueNode):
return int(ast.value)
@@ -128,7 +128,7 @@
parse_value = coerce_float
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, (FloatValueNode, IntValueNode)):
return float(ast.value)
@@ -143,14 +143,14 @@
@staticmethod
def coerce_string(value):
if isinstance(value, bool):
- return u"true" if value else u"false"
+ return "true" if value else "false"
return str(value)
serialize = coerce_string
parse_value = coerce_string
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, StringValueNode):
return ast.value
@@ -164,7 +164,7 @@
parse_value = bool
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, BooleanValueNode):
return ast.value
@@ -182,6 +182,6 @@
parse_value = str
@staticmethod
- def parse_literal(ast):
+ def parse_literal(ast, _variables=None):
if isinstance(ast, (StringValueNode, IntValueNode)):
return ast.value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/schema.py
new/graphene-3.1.0/graphene/types/schema.py
--- old/graphene-3.0.0/graphene/types/schema.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/types/schema.py 2022-05-30 14:57:16.000000000
+0200
@@ -376,19 +376,11 @@
def resolve_type(self, resolve_type_func, type_name, root, info, _type):
type_ = resolve_type_func(root, info)
- if not type_:
- return_type = self[type_name]
- return default_type_resolver(root, info, return_type)
-
if inspect.isclass(type_) and issubclass(type_, ObjectType):
- graphql_type = self.get(type_._meta.name)
- assert graphql_type, f"Can't find type {type_._meta.name} in
schema"
- assert (
- graphql_type.graphene_type == type_
- ), f"The type {type_} does not match with the associated graphene
type {graphql_type.graphene_type}."
- return graphql_type
+ return type_._meta.name
- return type_
+ return_type = self[type_name]
+ return default_type_resolver(root, info, return_type)
class Schema:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/tests/test_enum.py
new/graphene-3.1.0/graphene/types/tests/test_enum.py
--- old/graphene-3.0.0/graphene/types/tests/test_enum.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_enum.py 2022-05-30
14:57:16.000000000 +0200
@@ -251,19 +251,22 @@
schema = Schema(query=Query)
- assert str(schema) == dedent(
- '''\
- type Query {
- color: Color!
- }
+ assert (
+ str(schema).strip()
+ == dedent(
+ '''
+ type Query {
+ color: Color!
+ }
- """Primary colors"""
- enum Color {
- RED
- YELLOW
- BLUE
- }
- '''
+ """Primary colors"""
+ enum Color {
+ RED
+ YELLOW
+ BLUE
+ }
+ '''
+ ).strip()
)
@@ -345,10 +348,7 @@
results = schema.execute("query { color }")
assert results.errors
- assert (
- results.errors[0].message
- == "Expected a value of type 'Color' but received: 'BLACK'"
- )
+ assert results.errors[0].message == "Enum 'Color' cannot represent value:
'BLACK'"
def test_field_enum_argument():
@@ -460,12 +460,13 @@
schema = Schema(query=Query, mutation=MyMutation)
result = schema.execute(
- """ mutation MyMutation {
- createPaint(colorInput: { color: RED }) {
- color
+ """
+ mutation MyMutation {
+ createPaint(colorInput: { color: RED }) {
+ color
+ }
}
- }
- """
+ """
)
assert not result.errors
assert result.data == {"createPaint": {"color": "RED"}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/types/tests/test_objecttype.py
new/graphene-3.1.0/graphene/types/tests/test_objecttype.py
--- old/graphene-3.0.0/graphene/types/tests/test_objecttype.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_objecttype.py 2022-05-30
14:57:16.000000000 +0200
@@ -191,21 +191,15 @@
def test_objecttype_as_container_extra_args():
- with raises(TypeError) as excinfo:
- Container("1", "2", "3")
-
- assert "__init__() takes from 1 to 3 positional arguments but 4 were
given" == str(
- excinfo.value
- )
+ msg = r"__init__\(\) takes from 1 to 3 positional arguments but 4 were
given"
+ with raises(TypeError, match=msg):
+ Container("1", "2", "3") # type: ignore
def test_objecttype_as_container_invalid_kwargs():
- with raises(TypeError) as excinfo:
- Container(unexisting_field="3")
-
- assert "__init__() got an unexpected keyword argument 'unexisting_field'"
== str(
- excinfo.value
- )
+ msg = r"__init__\(\) got an unexpected keyword argument 'unexisting_field'"
+ with raises(TypeError, match=msg):
+ Container(unexisting_field="3") # type: ignore
def test_objecttype_container_benchmark(benchmark):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/tests/test_query.py
new/graphene-3.1.0/graphene/types/tests/test_query.py
--- old/graphene-3.0.0/graphene/types/tests/test_query.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_query.py 2022-05-30
14:57:16.000000000 +0200
@@ -229,11 +229,11 @@
result = test_schema.execute("{ test }", None)
assert not result.errors
- assert result.data == {"test": '[null,{"a_str":null,"a_int":null}]'}
+ assert result.data == {"test": "[null,{}]"}
result = test_schema.execute('{ test(aStr: "String!") }', "Source!")
assert not result.errors
- assert result.data == {"test":
'["Source!",{"a_str":"String!","a_int":null}]'}
+ assert result.data == {"test": '["Source!",{"a_str":"String!"}]'}
result = test_schema.execute('{ test(aInt: -123, aStr: "String!") }',
"Source!")
assert not result.errors
@@ -258,7 +258,7 @@
result = test_schema.execute("{ test }", None)
assert not result.errors
- assert result.data == {"test": '[null,{"a_input":null}]'}
+ assert result.data == {"test": "[null,{}]"}
result = test_schema.execute('{ test(aInput: {aField: "String!"} ) }',
"Source!")
assert not result.errors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/tests/test_scalar.py
new/graphene-3.1.0/graphene/types/tests/test_scalar.py
--- old/graphene-3.0.0/graphene/types/tests/test_scalar.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_scalar.py 2022-05-30
14:57:16.000000000 +0200
@@ -11,19 +11,19 @@
def test_ints():
- assert Int.parse_value(2 ** 31 - 1) is not None
+ assert Int.parse_value(2**31 - 1) is not None
assert Int.parse_value("2.0") is not None
- assert Int.parse_value(2 ** 31) is None
+ assert Int.parse_value(2**31) is None
- assert Int.parse_literal(IntValueNode(value=str(2 ** 31 - 1))) == 2 ** 31
- 1
- assert Int.parse_literal(IntValueNode(value=str(2 ** 31))) is None
+ assert Int.parse_literal(IntValueNode(value=str(2**31 - 1))) == 2**31 - 1
+ assert Int.parse_literal(IntValueNode(value=str(2**31))) is None
- assert Int.parse_value(-(2 ** 31)) is not None
- assert Int.parse_value(-(2 ** 31) - 1) is None
+ assert Int.parse_value(-(2**31)) is not None
+ assert Int.parse_value(-(2**31) - 1) is None
- assert BigInt.parse_value(2 ** 31) is not None
+ assert BigInt.parse_value(2**31) is not None
assert BigInt.parse_value("2.0") is not None
- assert BigInt.parse_value(-(2 ** 31) - 1) is not None
+ assert BigInt.parse_value(-(2**31) - 1) is not None
- assert BigInt.parse_literal(IntValueNode(value=str(2 ** 31 - 1))) == 2 **
31 - 1
- assert BigInt.parse_literal(IntValueNode(value=str(2 ** 31))) == 2 ** 31
+ assert BigInt.parse_literal(IntValueNode(value=str(2**31 - 1))) == 2**31 -
1
+ assert BigInt.parse_literal(IntValueNode(value=str(2**31))) == 2**31
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/types/tests/test_scalars_serialization.py
new/graphene-3.1.0/graphene/types/tests/test_scalars_serialization.py
--- old/graphene-3.0.0/graphene/types/tests/test_scalars_serialization.py
2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_scalars_serialization.py
2022-05-30 14:57:16.000000000 +0200
@@ -38,7 +38,7 @@
assert String.serialize(-1.1) == "-1.1"
assert String.serialize(True) == "true"
assert String.serialize(False) == "false"
- assert String.serialize(u"\U0001F601") == u"\U0001F601"
+ assert String.serialize("\U0001F601") == "\U0001F601"
def test_serializes_output_boolean():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/tests/test_schema.py
new/graphene-3.1.0/graphene/types/tests/test_schema.py
--- old/graphene-3.0.0/graphene/types/tests/test_schema.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_schema.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,7 +1,8 @@
-from graphql.type import GraphQLObjectType, GraphQLSchema
+from textwrap import dedent
+
from pytest import raises
-from graphene.tests.utils import dedent
+from graphql.type import GraphQLObjectType, GraphQLSchema
from ..field import Field
from ..objecttype import ObjectType
@@ -43,8 +44,10 @@
def test_schema_str():
schema = Schema(Query)
- assert str(schema) == dedent(
- """
+ assert (
+ str(schema).strip()
+ == dedent(
+ """
type Query {
inner: MyOtherType
}
@@ -53,6 +56,7 @@
field: String
}
"""
+ ).strip()
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/types/tests/test_subscribe_async.py
new/graphene-3.1.0/graphene/types/tests/test_subscribe_async.py
--- old/graphene-3.0.0/graphene/types/tests/test_subscribe_async.py
2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_subscribe_async.py
2022-05-30 14:57:16.000000000 +0200
@@ -14,9 +14,7 @@
count_to_ten = Field(Int)
async def subscribe_count_to_ten(root, info):
- count = 0
- while count < 10:
- count += 1
+ for count in range(1, 11):
yield count
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/tests/test_type_map.py
new/graphene-3.1.0/graphene/types/tests/test_type_map.py
--- old/graphene-3.0.0/graphene/types/tests/test_type_map.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/types/tests/test_type_map.py 2022-05-30
14:57:16.000000000 +0200
@@ -1,3 +1,4 @@
+from graphql import Undefined
from graphql.type import (
GraphQLArgument,
GraphQLEnumType,
@@ -244,7 +245,9 @@
foo_field = fields["fooBar"]
assert isinstance(foo_field, GraphQLField)
assert foo_field.args == {
- "barFoo": GraphQLArgument(GraphQLString, default_value=None,
out_name="bar_foo")
+ "barFoo": GraphQLArgument(
+ GraphQLString, default_value=Undefined, out_name="bar_foo"
+ )
}
@@ -267,7 +270,7 @@
assert isinstance(foo_field, GraphQLField)
assert foo_field.args == {
"bar_foo": GraphQLArgument(
- GraphQLString, default_value=None, out_name="bar_foo"
+ GraphQLString, default_value=Undefined, out_name="bar_foo"
)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/types/uuid.py
new/graphene-3.1.0/graphene/types/uuid.py
--- old/graphene-3.0.0/graphene/types/uuid.py 2021-11-13 23:15:18.000000000
+0100
+++ new/graphene-3.1.0/graphene/types/uuid.py 2022-05-30 14:57:16.000000000
+0200
@@ -21,7 +21,7 @@
return str(uuid)
@staticmethod
- def parse_literal(node):
+ def parse_literal(node, _variables=None):
if isinstance(node, StringValueNode):
return _UUID(node.value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/graphene/utils/module_loading.py
new/graphene-3.1.0/graphene/utils/module_loading.py
--- old/graphene-3.0.0/graphene/utils/module_loading.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/utils/module_loading.py 2022-05-30
14:57:16.000000000 +0200
@@ -27,19 +27,18 @@
if not dotted_attributes:
return result
- else:
- attributes = dotted_attributes.split(".")
- traveled_attributes = []
- try:
- for attribute in attributes:
- traveled_attributes.append(attribute)
- result = getattr(result, attribute)
- return result
- except AttributeError:
- raise ImportError(
- 'Module "%s" does not define a "%s" attribute inside
attribute/class "%s"'
- % (module_path, ".".join(traveled_attributes), class_name)
- )
+ attributes = dotted_attributes.split(".")
+ traveled_attributes = []
+ try:
+ for attribute in attributes:
+ traveled_attributes.append(attribute)
+ result = getattr(result, attribute)
+ return result
+ except AttributeError:
+ raise ImportError(
+ 'Module "%s" does not define a "%s" attribute inside
attribute/class "%s"'
+ % (module_path, ".".join(traveled_attributes), class_name)
+ )
def lazy_import(dotted_path, dotted_attributes=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/utils/tests/test_deduplicator.py
new/graphene-3.1.0/graphene/utils/tests/test_deduplicator.py
--- old/graphene-3.0.0/graphene/utils/tests/test_deduplicator.py
2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/utils/tests/test_deduplicator.py
2022-05-30 14:57:16.000000000 +0200
@@ -94,6 +94,7 @@
],
"movies": {
"1198359": {
+ "id": "1198359",
"name": "King Arthur: Legend of the Sword",
"synopsis": (
"When the child Arthur's father is murdered, Vortigern, "
@@ -159,7 +160,7 @@
"date": "2017-05-19",
"movie": {
"__typename": "Movie",
- "id": "TW92aWU6Tm9uZQ==",
+ "id": "TW92aWU6MTE5ODM1OQ==",
"name": "King Arthur: Legend of the Sword",
"synopsis": (
"When the child Arthur's father is murdered,
Vortigern, "
@@ -172,7 +173,7 @@
"__typename": "Event",
"id": "RXZlbnQ6MjM0",
"date": "2017-05-20",
- "movie": {"__typename": "Movie", "id": "TW92aWU6Tm9uZQ=="},
+ "movie": {"__typename": "Movie", "id": "TW92aWU6MTE5ODM1OQ=="},
},
]
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/utils/tests/test_orderedtype.py
new/graphene-3.1.0/graphene/utils/tests/test_orderedtype.py
--- old/graphene-3.0.0/graphene/utils/tests/test_orderedtype.py 2021-11-13
23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/utils/tests/test_orderedtype.py 2022-05-30
14:57:16.000000000 +0200
@@ -38,4 +38,4 @@
assert one.__lt__(1) == NotImplemented
assert one.__gt__(1) == NotImplemented
- assert not one == 1
+ assert one != 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/graphene-3.0.0/graphene/validation/tests/test_disable_introspection.py
new/graphene-3.1.0/graphene/validation/tests/test_disable_introspection.py
--- old/graphene-3.0.0/graphene/validation/tests/test_disable_introspection.py
2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/graphene/validation/tests/test_disable_introspection.py
2022-05-30 14:57:16.000000000 +0200
@@ -18,14 +18,12 @@
def run_query(query: str):
document = parse(query)
- errors = validate(
+ return validate(
schema=schema.graphql_schema,
document_ast=document,
rules=(DisableIntrospection,),
)
- return errors
-
def test_disallows_introspection_queries():
errors = run_query("{ __schema { queryType { name } } }")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/setup.py new/graphene-3.1.0/setup.py
--- old/graphene-3.0.0/setup.py 2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/setup.py 2022-05-30 14:57:16.000000000 +0200
@@ -45,20 +45,20 @@
tests_require = [
- "pytest>=5.3,<6",
- "pytest-benchmark>=3.2,<4",
- "pytest-cov>=2.8,<3",
- "pytest-mock>=2,<3",
- "pytest-asyncio>=0.10,<2",
- "snapshottest>=0.5,<1",
- "coveralls>=1.11,<2",
+ "pytest>=6,<7",
+ "pytest-benchmark>=3.4,<4",
+ "pytest-cov>=3,<4",
+ "pytest-mock>=3,<4",
+ "pytest-asyncio>=0.16,<2",
+ "snapshottest>=0.6,<1",
+ "coveralls>=3.3,<4",
"promise>=2.3,<3",
- "mock>=4.0,<5",
- "pytz==2021.1",
- "iso8601>=0.1,<2",
+ "mock>=4,<5",
+ "pytz==2022.1",
+ "iso8601>=1,<2",
]
-dev_requires = ["black==19.10b0", "flake8>=3.7,<4"] + tests_require
+dev_requires = ["black==22.3.0", "flake8>=4,<5"] + tests_require
setup(
name="graphene",
@@ -78,12 +78,14 @@
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
],
keywords="api graphql protocol rest relay graphene",
packages=find_packages(exclude=["examples*"]),
install_requires=[
- "graphql-core~=3.1.2",
- "graphql-relay>=3.0,<4",
+ "graphql-core>=3.1,<3.3",
+ "graphql-relay>=3.1,<3.3",
"aniso8601>=8,<10",
],
tests_require=tests_require,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/graphene-3.0.0/tox.ini new/graphene-3.1.0/tox.ini
--- old/graphene-3.0.0/tox.ini 2021-11-13 23:15:18.000000000 +0100
+++ new/graphene-3.1.0/tox.ini 2022-05-30 14:57:16.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist = flake8,py36,py37,py38,pre-commit,mypy
+envlist = py3{6,7,8,9,10}, flake8, mypy, pre-commit
skipsdist = true
[testenv]
@@ -8,28 +8,28 @@
setenv =
PYTHONPATH = .:{envdir}
commands =
- py{36,37,38}: pytest --cov=graphene graphene examples {posargs}
+ py{36,37,38,39,310}: pytest --cov=graphene graphene examples {posargs}
[testenv:pre-commit]
-basepython=python3.8
+basepython = python3.9
deps =
- pre-commit>=2,<3
+ pre-commit>=2.16,<3
setenv =
LC_CTYPE=en_US.UTF-8
commands =
pre-commit run --all-files --show-diff-on-failure
[testenv:mypy]
-basepython=python3.8
+basepython = python3.9
deps =
- mypy>=0.761,<1
+ mypy>=0.950,<1
commands =
mypy graphene
[testenv:flake8]
-basepython=python3.8
+basepython = python3.9
deps =
- flake8>=3.8,<4
+ flake8>=4,<5
commands =
pip install --pre -e .
flake8 graphene