Tim Peters wrote: > [Brett C.] > >>OK. This is where running: >> >> >>> import time >> >>> time.strftime("%c") >> >>> import _strptime >> >>> _strptime.TimeRE()['c'] >> >>can help me try to diagnose this (I can't reproduce this under OS X). >>This will give me what strftime is spitting out and what regex >>strptime would be using to match against it. > > > After reverting Jeremy's hack to test_logging, and hacking regrtest.py to > stop doing sys.exit(): > > C:\Code\python\PCbuild>python -i ../lib/test/regrtest.py test_strptime > test_logging > test_time > test_strptime > test_logging > test_time > test test_time failed -- Traceback (most recent call last): > File "C:\Code\python\lib\test\test_time.py", line 49, in test_strptime > self.fail('conversion specifier: %r failed.' % format) > File "C:\Code\python\lib\unittest.py", line 260, in fail > raise self.failureException, msg > AssertionError: conversion specifier: ' %c' failed. > > 2 tests OK. > 1 test failed: > test_time > >>>>import time >>>>time.strftime("%c") > > '07/22/2003 05:44:01 PM' > >>>>import _strptime >>>>_strptime.TimeRE()['c'] > > '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]| > [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d) > :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)' > > > Now the same thing with Jeremy's test_logging hack restored: > > C:\Code\python\PCbuild>python -i ../lib/test/regrtest.py test_strptime > test_logging > test_time > test_strptime > test_logging > test_time > All 3 tests OK. > >>>>import time >>>>time.strftime("%c") > > '07/22/03 17:47:26' > >>>>import _strptime >>>>_strptime.TimeRE()['c'] > > '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]| > [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d) > :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)' > > > The regexp appears to be the same, but strftime's result has switched from > (apparently) 12-hour + AM/PM time to 24-hour time. > OK, the only thing I can think of is that the locale info has changed ever so subtly and the checking of locale.getlocale(locale.LC_TIME)[0] or locale.getdefaultlocale()[0] is not cutting it. Next thing to try is to see what values locale.getlocale(locale.LC_TIME) and locale.getdefaultlocale() have (notice I am asking for the full value and not just the 0 item) after each test is run. It is possible the cache in _strptime is not being cleared because it is not picking up the change in locale by only checking the 0 item. If there is not some obvious difference in values then the cache will have to be deleted and strptime performance will drop but the problem will go away. -Brett
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4