mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
bpo-29097: Forego fold detection on windows for low timestamp values (GH-2385)
On Windows, passing a negative value to local results in an OSError because localtime_s on Windows does not support negative timestamps. Unfortunately this means that fold detection for timestamps between 0 and max_fold_seconds will result in this OSError since we subtract max_fold_seconds from the timestamp to detect a fold. However, since we know there haven't been any folds in the interval [0, max_fold_seconds) in any timezone, we can hackily just forego fold detection for this time range on Windows.
This commit is contained in:
parent
74102c9a5f
commit
96d1e69a12
4 changed files with 34 additions and 2 deletions
|
@ -70,7 +70,7 @@ class TestModule(unittest.TestCase):
|
|||
if not name.startswith('__') and not name.endswith('__'))
|
||||
allowed = set(['MAXYEAR', 'MINYEAR', 'date', 'datetime',
|
||||
'datetime_CAPI', 'time', 'timedelta', 'timezone',
|
||||
'tzinfo'])
|
||||
'tzinfo', 'sys'])
|
||||
self.assertEqual(names - allowed, set([]))
|
||||
|
||||
def test_divide_and_round(self):
|
||||
|
@ -4955,6 +4955,11 @@ class TestLocalTimeDisambiguation(unittest.TestCase):
|
|||
self.assertEqual(t0.fold, 0)
|
||||
self.assertEqual(t1.fold, 1)
|
||||
|
||||
def test_fromtimestamp_low_fold_detection(self):
|
||||
# Ensure that fold detection doesn't cause an
|
||||
# OSError for really low values, see bpo-29097
|
||||
self.assertEqual(datetime.fromtimestamp(0).fold, 0)
|
||||
|
||||
@support.run_with_tz('EST+05EDT,M3.2.0,M11.1.0')
|
||||
def test_timestamp(self):
|
||||
dt0 = datetime(2014, 11, 2, 1, 30)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue