Closes issue #23600: Wrong results from tzinfo.fromutc().
This commit is contained in:
parent
36aff2db4a
commit
365ba8f6c1
|
@ -192,6 +192,29 @@ class TestTZInfo(unittest.TestCase):
|
|||
self.assertEqual(derived.utcoffset(None), offset)
|
||||
self.assertEqual(derived.tzname(None), oname)
|
||||
|
||||
def test_issue23600(self):
|
||||
DSTDIFF = DSTOFFSET = timedelta(hours=1)
|
||||
|
||||
class UKSummerTime(tzinfo):
|
||||
"""Simple time zone which pretends to always be in summer time, since
|
||||
that's what shows the failure.
|
||||
"""
|
||||
|
||||
def utcoffset(self, dt):
|
||||
return DSTOFFSET
|
||||
|
||||
def dst(self, dt):
|
||||
return DSTDIFF
|
||||
|
||||
def tzname(self, dt):
|
||||
return 'UKSummerTime'
|
||||
|
||||
tz = UKSummerTime()
|
||||
u = datetime(2014, 4, 26, 12, 1, tzinfo=tz)
|
||||
t = tz.fromutc(u)
|
||||
self.assertEqual(t - t.utcoffset(), u)
|
||||
|
||||
|
||||
class TestTimeZone(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
|
@ -24,6 +24,9 @@ Library
|
|||
- Issue #25203: Failed readline.set_completer_delims() no longer left the
|
||||
module in inconsistent state.
|
||||
|
||||
- Issue #23600: Default implementation of tzinfo.fromutc() was returning
|
||||
wrong results in some cases.
|
||||
|
||||
- Issue #23329: Allow the ssl module to be built with older versions of
|
||||
LibreSSL.
|
||||
|
||||
|
|
|
@ -3046,7 +3046,7 @@ tzinfo_fromutc(PyDateTime_TZInfo *self, PyObject *dt)
|
|||
goto Fail;
|
||||
if (dst == Py_None)
|
||||
goto Inconsistent;
|
||||
if (delta_bool(delta) != 0) {
|
||||
if (delta_bool((PyDateTime_Delta *)dst) != 0) {
|
||||
PyObject *temp = result;
|
||||
result = add_datetime_timedelta((PyDateTime_DateTime *)result,
|
||||
(PyDateTime_Delta *)dst, 1);
|
||||
|
|
Loading…
Reference in New Issue