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
'''
@@ -38,7 +31,7 @@ def parse_literal(cls, node):
38
31
39
32
@staticmethod
40
33
def parse_value (value ):
41
- return iso8601 . parse_date (value ). date ( )
34
+ return parse_date (value )
42
35
43
36
44
37
class DateTime (Scalar ):
@@ -62,7 +55,7 @@ def parse_literal(cls, node):
62
55
63
56
@staticmethod
64
57
def parse_value (value ):
65
- return iso8601 . parse_date (value )
58
+ return parse_datetime (value )
66
59
67
60
68
61
class Time (Scalar ):
@@ -71,7 +64,6 @@ class Time(Scalar):
71
64
specified by
72
65
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
73
66
'''
74
- epoch_date = '1970-01-01'
75
67
76
68
@staticmethod
77
69
def serialize (time ):
@@ -87,5 +79,4 @@ def parse_literal(cls, node):
87
79
88
80
@classmethod
89
81
def parse_value (cls , value ):
90
- dt = iso8601 .parse_date ('{}T{}' .format (cls .epoch_date , value ))
91
- return datetime .time (dt .hour , dt .minute , dt .second , dt .microsecond , dt .tzinfo )
82
+ return parse_time (value )
0 commit comments