Skip to content

Commit ffa2453

Browse files
committed
account for differing datetime strings in dict comparison utility function
1 parent 3149918 commit ffa2453

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

pystac/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def to_dict(self, include_self_link=True):
7474

7575
assets = dict(map(lambda x: (x[0], x[1].to_dict()), self.assets.items()))
7676

77-
self.properties['datetime'] = '{}Z'.format(self.datetime.replace(microsecond=0, tzinfo=None))
77+
self.properties['datetime'] = self.datetime.isoformat()
7878

7979
d = {
8080
'type': 'Feature',

tests/utils.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import os
22
import json
33
from datetime import datetime
4-
4+
from copy import copy
5+
from dateutil.parser import parse
56
import jsonschema
67
from jsonschema.validators import RefResolver
78

@@ -164,4 +165,23 @@ def validate_dict(self, d, obj_type):
164165
raise e
165166

166167
def test_to_from_dict(stac_object_class, d):
167-
return stac_object_class.from_dict(d).to_dict() == d
168+
def _parse_times(dd):
169+
a_dict = copy(dd)
170+
for k, v in a_dict.items():
171+
if isinstance(v, dict):
172+
_parse_times(v)
173+
elif isinstance(v, (tuple, list, set)):
174+
for vv in v:
175+
if isinstance(vv, dict):
176+
_parse_times(vv)
177+
else:
178+
if k == 'datetime':
179+
if not isinstance(v, datetime):
180+
a_dict[k] = parse(v)
181+
182+
return a_dict
183+
184+
d1 = _parse_times(d)
185+
d2 = _parse_times(stac_object_class.from_dict(d).to_dict())
186+
187+
return d1 == d2

0 commit comments

Comments
 (0)