Skip to content

Commit 4873a48

Browse files
authored
Merge pull request #1016 from stefan-jozefowicz-bayer/bugfix-datetime-serialization-utc-zero-offset
Bugfix datetime serialization utc zero offset
2 parents cfaa45a + 8c5daae commit 4873a48

File tree

3 files changed

+7
-15
lines changed

3 files changed

+7
-15
lines changed

planet/data_filter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def date_range_filter(field_name: str,
149149
def _datetime_to_rfc3339(value: datetime) -> str:
150150
"""Converts the datetime to an RFC3339 string"""
151151
iso = value.isoformat()
152-
if not value.utcoffset():
152+
if value.utcoffset() is None:
153153
# rfc3339 needs a Z if there is no timezone offset
154154
iso += 'Z'
155155
return iso

planet/subscription_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ def planetary_variable_source(
358358
def _datetime_to_rfc3339(value: datetime) -> str:
359359
"""Converts the datetime to an RFC3339 string"""
360360
iso = value.isoformat()
361-
if not value.utcoffset():
361+
if value.utcoffset() is None:
362362
# rfc3339 needs a Z if there is no timezone offset
363363
iso += 'Z'
364364
return iso

tests/unit/test_data_filter.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
15-
from datetime import datetime, timedelta, tzinfo
15+
from datetime import datetime, timedelta, timezone
1616
import logging
1717
import pytest
1818

@@ -98,24 +98,16 @@ def _test_callback(x): # pragma: no cover
9898
callback=_test_callback)
9999

100100

101-
class TZTest(tzinfo):
102-
103-
def __init__(self, offset=None):
104-
self.offset = offset
105-
super().__init__()
106-
107-
def utcoffset(self, dt):
108-
return timedelta(hours=self.offset) if self.offset else None
109-
110-
111101
@pytest.mark.parametrize(
112102
"dtime,expected",
113103
[(datetime(2022, 5, 1, 1, 0, 0, 1), '2022-05-01T01:00:00.000001Z'),
114104
(datetime(2022, 5, 1, 1, 0, 1), '2022-05-01T01:00:01Z'),
115105
(datetime(2022, 6, 1, 1, 1), '2022-06-01T01:01:00Z'),
116106
(datetime(2022, 6, 1, 1), '2022-06-01T01:00:00Z'),
117-
(datetime(2022, 6, 1, 1, tzinfo=TZTest(0)), '2022-06-01T01:00:00Z'),
118-
(datetime(2022, 6, 1, 1, tzinfo=TZTest(1)), '2022-06-01T01:00:00+01:00')])
107+
(datetime(2022, 6, 1, 1, tzinfo=timezone(timedelta(hours=1))),
108+
'2022-06-01T01:00:00+01:00'),
109+
(datetime(2022, 6, 1, 1, tzinfo=timezone(timedelta(0))),
110+
'2022-06-01T01:00:00+00:00')])
119111
def test__datetime_to_rfc3339_basic(dtime, expected):
120112
assert data_filter._datetime_to_rfc3339(dtime) == expected
121113

0 commit comments

Comments
 (0)