On 02/15/2012 09:43 AM, Guido van Rossum wrote:
*Apart* from the specific use case of making an exact copy of a
directory tree that can be verified by other tools that simply compare
the nanosecond times for equality,
A data point on this specific use case. The following code throws its
assert ~90% of the time in Python 3.2.2 on a modern Linux machine
(assuming "foo" exists and "bar" does not):
import shutil
import os
shutil.copy2("foo", "bar")
assert os.stat("foo").st_mtime == os.stat("bar").st_mtime
The problem is with os.utime. IIUC stat() on Linux added nanosecond
atime/mtime support back in 2.5. But the corresponding utime()
functions to write nanosecond atime/mtime didn't appear until relatively
recently--and Python 3.2 doesn't use them. With stat_float_times turned
on, os.stat effectively reads with ~100-nanosecond precision, but
os.utime still only writes with microsecond precision. I fixed this in
trunk last September (issue 12904); os.utime now preserves all the
precision that Python currently conveys.
One way of looking at it: in Python 3.2 it's already pretty bad and
almost nobody is complaining. (There's me, I guess, but I scratched my
itch.)
/arry
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com