fix: use dateutil-parse for < 3.11 support

This commit is contained in:
Erik Wrede 2024-10-27 19:02:55 +01:00
parent dca31dc61d
commit c9a4d5301c
No known key found for this signature in database
GPG Key ID: 2180166EDF80A9DA
3 changed files with 21 additions and 1 deletions

View File

@ -1,5 +1,7 @@
import datetime
from dateutil.parser import isoparse
from graphql.error import GraphQLError
from graphql.language import StringValueNode, print_ast
@ -71,7 +73,7 @@ class DateTime(Scalar):
f"DateTime cannot represent non-string value: {repr(value)}"
)
try:
return datetime.datetime.fromisoformat(value)
return isoparse(value)
except ValueError:
raise GraphQLError(f"DateTime cannot represent value: {repr(value)}")

View File

@ -226,6 +226,23 @@ def test_time_query_variable(sample_time):
assert not result.errors
assert result.data == {"time": isoformat}
def test_support_isoformat():
isoformat = 20111104
# test time variable provided as Python time
result = schema.execute(
"""query Test($time: Time){ time(at: $time) }""",
variables={"time": sample_time},
)
assert not result.errors
assert result.data == {"time": isoformat}
# test time variable in string representation
result = schema.execute(
"""query Test($time: Time){ time(at: $time) }""", variables={"time": isoformat}
)
assert not result.errors
assert result.data == {"time": isoformat}
def test_bad_variables(sample_date, sample_datetime, sample_time):
def _test_bad_variables(type_, input_):

View File

@ -84,6 +84,7 @@ setup(
"graphql-core>=3.1,<3.3",
"graphql-relay>=3.1,<3.3",
"typing-extensions>=4.7.1,<5",
"python-dateutil>=2.7.0,<3"
],
tests_require=tests_require,
extras_require={"test": tests_require, "dev": dev_requires},