3
3
import datetime
4
4
5
5
from graphql .language import ast
6
+ from aniso8601 import parse_datetime , parse_date , parse_time
6
7
7
8
from .scalars import Scalar
8
9
9
- try :
10
- import iso8601
11
- except ImportError :
12
- raise ImportError (
13
- "iso8601 package is required for DateTime Scalar.\n "
14
- "You can install it using: pip install iso8601."
15
- )
16
-
17
10
18
11
class Date (Scalar ):
19
12
'''
@@ -39,8 +32,8 @@ def parse_literal(cls, node):
39
32
@staticmethod
40
33
def parse_value (value ):
41
34
try :
42
- return iso8601 . parse_date (value ). date ( )
43
- except iso8601 . ParseError :
35
+ return parse_date (value )
36
+ except ValueError :
44
37
return None
45
38
46
39
@@ -66,8 +59,8 @@ def parse_literal(cls, node):
66
59
@staticmethod
67
60
def parse_value (value ):
68
61
try :
69
- return iso8601 . parse_date (value )
70
- except iso8601 . ParseError :
62
+ return parse_datetime (value )
63
+ except ValueError :
71
64
return None
72
65
73
66
@@ -77,7 +70,6 @@ class Time(Scalar):
77
70
specified by
78
71
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
79
72
'''
80
- epoch_date = '1970-01-01'
81
73
82
74
@staticmethod
83
75
def serialize (time ):
@@ -94,7 +86,6 @@ def parse_literal(cls, node):
94
86
@classmethod
95
87
def parse_value (cls , value ):
96
88
try :
97
- dt = iso8601 .parse_date ('{}T{}' .format (cls .epoch_date , value ))
98
- return datetime .time (dt .hour , dt .minute , dt .second , dt .microsecond , dt .tzinfo )
99
- except iso8601 .ParseError :
89
+ return parse_time (value )
90
+ except ValueError :
100
91
return None
0 commit comments