14
14
import logging
15
15
import posixpath
16
16
17
+ from datetime import datetime , timezone
17
18
from typing import Optional
18
19
19
- import arrow
20
20
import attr
21
21
import attr .validators
22
22
import cattr
33
33
34
34
_cattr = cattr .Converter ()
35
35
_cattr .register_structure_hook (
36
- arrow .Arrow , lambda d , t : arrow .get (d [5 :- 4 ], "DD MMM YYYY HH:mm:ss" )
36
+ datetime ,
37
+ lambda d , t : datetime .strptime (d [5 :- 4 ], "%d %b %Y %H:%M:%S" ).replace (
38
+ tzinfo = timezone .utc
39
+ ),
37
40
)
38
41
39
42
@@ -145,7 +148,6 @@ class PackageType(enum.Enum):
145
148
146
149
@attr .s (slots = True , frozen = True )
147
150
class File :
148
-
149
151
filename = attr .ib (validator = attr .validators .instance_of (str ))
150
152
project = attr .ib (validator = attr .validators .instance_of (str ))
151
153
version = attr .ib (validator = attr .validators .instance_of (str ))
@@ -154,8 +156,7 @@ class File:
154
156
155
157
@attr .s (slots = True , frozen = True )
156
158
class Download :
157
-
158
- timestamp = attr .ib (type = arrow .Arrow )
159
+ timestamp = attr .ib (type = datetime )
159
160
url = attr .ib (validator = attr .validators .instance_of (str ))
160
161
project = attr .ib (validator = attr .validators .instance_of (str ))
161
162
file = attr .ib (type = File )
@@ -176,8 +177,7 @@ class Download:
176
177
177
178
@attr .s (slots = True , frozen = True )
178
179
class Simple :
179
-
180
- timestamp = attr .ib (type = arrow .Arrow )
180
+ timestamp = attr .ib (type = datetime )
181
181
url = attr .ib (validator = attr .validators .instance_of (str ))
182
182
project = attr .ib (validator = attr .validators .instance_of (str ))
183
183
tls_protocol = attr .ib (
0 commit comments