Merge pull request #1421 from Cito/upgrade-dev-env

Make Graphene compatible with GraphQL-Core 3.2
This commit is contained in:
Christoph Zwerschke 2022-05-07 00:53:24 +02:00 committed by GitHub
commit 9c3e4bb7da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 80 additions and 89 deletions

View File

@ -3,7 +3,7 @@ default_language_version:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.1.0
rev: v4.2.0
hooks:
- id: check-merge-conflict
- id: check-json
@ -17,11 +17,11 @@ repos:
- id: trailing-whitespace
exclude: README.md
- repo: https://github.com/asottile/pyupgrade
rev: v2.31.0
rev: v2.32.1
hooks:
- id: pyupgrade
- repo: https://github.com/ambv/black
rev: 21.12b0
rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/PyCQA/flake8

View File

@ -64,18 +64,18 @@ source_suffix = ".rst"
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 @@ latex_elements = {
# (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 @@ latex_documents = [
# 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 @@ texinfo_documents = [
(
master_doc,
"Graphene",
u"Graphene Documentation",
"Graphene Documentation",
author,
"Graphene",
"One line description of project.",

View File

@ -115,5 +115,4 @@ input IntroduceShipInput {
shipName: String!
factionId: String!
clientMutationId: String
}
'''
}'''

View File

@ -9,7 +9,7 @@ client = Client(schema)
def test_str_schema(snapshot):
snapshot.assert_match(str(schema))
snapshot.assert_match(str(schema).strip())
def test_correctly_fetches_id_name_rebels(snapshot):

View File

@ -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,7 +171,9 @@ def test_node_field_only_lazy_type_wrong():
def test_str_schema():
assert str(schema) == dedent(
assert (
str(schema).strip()
== dedent(
'''
schema {
query: RootQuery
@ -213,4 +215,5 @@ def test_str_schema():
): MyNode
}
'''
).strip()
)

View File

@ -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,7 +54,9 @@ graphql_schema = schema.graphql_schema
def test_str_schema_correct():
assert str(schema) == dedent(
assert (
str(schema).strip()
== dedent(
'''
schema {
query: RootQuery
@ -93,6 +95,7 @@ def test_str_schema_correct():
): Node
}
'''
).strip()
)

View File

@ -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 @@ from graphene.types.schema import Schema
def default_format_error(error):
if isinstance(error, GraphQLError):
return format_graphql_error(error)
return error.formatted
return {"message": str(error)}

View File

@ -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"))

View File

@ -7,7 +7,6 @@ from graphql import (
GraphQLObjectType,
GraphQLScalarType,
GraphQLUnionType,
Undefined,
)
@ -50,7 +49,7 @@ class GrapheneEnumType(GrapheneGraphQLType, GraphQLEnumType):
try:
value = enum[value]
except KeyError:
return Undefined
pass
return super(GrapheneEnumType, self).serialize(value)

View File

@ -143,7 +143,7 @@ class String(Scalar):
@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

View File

@ -376,20 +376,12 @@ class TypeMap(dict):
def resolve_type(self, resolve_type_func, type_name, root, info, _type):
type_ = resolve_type_func(root, info)
if not type_:
if inspect.isclass(type_) and issubclass(type_, ObjectType):
return type_._meta.name
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_
class Schema:
"""Schema Definition.

View File

@ -251,8 +251,10 @@ def test_enum_types():
schema = Schema(query=Query)
assert str(schema) == dedent(
'''\
assert (
str(schema).strip()
== dedent(
'''
type Query {
color: Color!
}
@ -264,6 +266,7 @@ def test_enum_types():
BLUE
}
'''
).strip()
)
@ -345,10 +348,7 @@ def test_enum_resolver_invalid():
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,7 +460,8 @@ def test_mutation_enum_input_type():
schema = Schema(query=Query, mutation=MyMutation)
result = schema.execute(
""" mutation MyMutation {
"""
mutation MyMutation {
createPaint(colorInput: { color: RED }) {
color
}

View File

@ -38,7 +38,7 @@ def test_serializes_output_string():
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():

View File

@ -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,7 +44,9 @@ def test_schema_get_type_error():
def test_schema_str():
schema = Schema(Query)
assert str(schema) == dedent(
assert (
str(schema).strip()
== dedent(
"""
type Query {
inner: MyOtherType
@ -53,6 +56,7 @@ def test_schema_str():
field: String
}
"""
).strip()
)

View File

@ -53,12 +53,12 @@ tests_require = [
"snapshottest>=0.6,<1",
"coveralls>=3.3,<4",
"promise>=2.3,<3",
"mock>=4.0,<5",
"pytz==2021.3",
"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",
@ -84,8 +84,8 @@ setup(
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,

View File

@ -22,7 +22,7 @@ commands =
[testenv:mypy]
basepython = python3.9
deps =
mypy>=0.931,<1
mypy>=0.950,<1
commands =
mypy graphene