Skip to content

Commit 154f0f1

Browse files
committed
v2.2.5 Ensure 4-digit years
1 parent 3c2d3ed commit 154f0f1

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

datapackage_pipelines/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
2.2.4
1+
2.2.5
22

datapackage_pipelines/utilities/extended_json.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@
66

77
from .lazy_dict import LazyDict
88

9-
10-
DATE_FORMAT = '%Y-%m-%d'
11-
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
9+
if datetime.date(1, 1, 1).strftime('%04Y') == '4Y':
10+
DATE_F_FORMAT = '%Y-%m-%d'
11+
DATETIME_F_FORMAT = '%Y-%m-%d %H:%M:%S'
12+
else:
13+
DATE_F_FORMAT = '%04Y-%m-%d'
14+
DATETIME_F_FORMAT = '%04Y-%m-%d %H:%M:%S'
15+
DATE_FORMAT = DATE_F_FORMAT
16+
DATETIME_FORMAT = DATETIME_F_FORMAT
17+
DATE_P_FORMAT = '%Y-%m-%d'
18+
DATETIME_P_FORMAT = '%Y-%m-%d %H:%M:%S'
1219
TIME_FORMAT = '%H:%M:%S'
1320

1421

@@ -57,13 +64,13 @@ def object_hook(cls, obj):
5764
if 'type{datetime}' in obj:
5865
try:
5966
return datetime.datetime \
60-
.strptime(obj["type{datetime}"], DATETIME_FORMAT)
67+
.strptime(obj["type{datetime}"], DATETIME_P_FORMAT)
6168
except ValueError:
6269
pass
6370
if 'type{date}' in obj:
6471
try:
6572
return datetime.datetime \
66-
.strptime(obj["type{date}"], DATE_FORMAT) \
73+
.strptime(obj["type{date}"], DATE_P_FORMAT) \
6774
.date()
6875
except ValueError:
6976
pass
@@ -98,9 +105,9 @@ def default(self, obj):
98105
elif isinstance(obj, datetime.time):
99106
return {'type{time}': obj.strftime(TIME_FORMAT)}
100107
elif isinstance(obj, datetime.datetime):
101-
return {'type{datetime}': obj.strftime(DATETIME_FORMAT)}
108+
return {'type{datetime}': obj.strftime(DATETIME_F_FORMAT)}
102109
elif isinstance(obj, datetime.date):
103-
return {'type{date}': obj.strftime(DATE_FORMAT)}
110+
return {'type{date}': obj.strftime(DATE_F_FORMAT)}
104111
elif isinstance(obj, (isodate.Duration, datetime.timedelta)):
105112
return {'type{duration}': isodate.duration_isoformat(obj)}
106113
elif isinstance(obj, set):

0 commit comments

Comments
 (0)