Skip to content

Commit ec12459

Browse files
authored
Merge pull request #2323 from gavenren/fix/timezone-float-formatting
fix: format float timezone offsets as integer fields
2 parents 97f8882 + 04cd8a1 commit ec12459

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

‎git/objects/util.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ def altz_to_utctz_str(altz: float) -> str:
161161
:param altz:
162162
Timezone offset in seconds west of UTC.
163163
"""
164-
hours = abs(altz) // 3600
165-
minutes = (abs(altz) % 3600) // 60
164+
hours, minutes = divmod(int(abs(altz) // 60), 60)
166165
sign = "-" if altz >= 60 else "+"
167166
return "{}{:02}{:02}".format(sign, hours, minutes)
168167

‎test/test_util.py‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,17 @@ def __repr__(self):
301301
return f"{type(self).__name__}({self.name!r})"
302302

303303

304+
@pytest.mark.parametrize(
305+
"offset, expected",
306+
[(0.0, "+0000"), (19800.0, "-0530"), (-19800.0, "+0530"), (34200.9, "-0930"), (60.1, "-0001"), (-59.9, "+0000")],
307+
)
308+
def test_altz_to_utctz_str_accepts_float_seconds(offset, expected):
309+
result = altz_to_utctz_str(offset)
310+
assert result == expected
311+
assert verify_utctz(result) == result
312+
assert utctz_to_altz(result) == utctz_to_altz(expected)
313+
314+
304315
@ddt.ddt
305316
class TestUtils(TestBase):
306317
"""Tests for most utilities in :mod:`git.util`."""

0 commit comments

Comments
 (0)