cpython: 99e118951a80 (original) (raw)
Mercurial > cpython
changeset 73410:99e118951a80
Fix #13327. Remove the need for an explicit None as the second argument to os.utime in order to update to the current time. The second argument is now optional. [#13327]
Brian Curtin brian@python.org | |
---|---|
date | Sun, 06 Nov 2011 13:41:17 -0600 |
parents | 106f9e1ad7ab |
children | 00d4d6b85a01 |
files | Doc/library/os.rst Lib/test/test_os.py Misc/NEWS Modules/posixmodule.c |
diffstat | 4 files changed, 37 insertions(+), 18 deletions(-)[+] [-] Doc/library/os.rst 21 Lib/test/test_os.py 15 Misc/NEWS 3 Modules/posixmodule.c 16 |
line wrap: on
line diff
--- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -2134,18 +2134,19 @@ Files and Directories Availability: Unix, Windows. -.. function:: utime(path, times) +.. function:: utime(path[, times]) Set the access and modified times of the file specified by path. If times
- is
None
, then the file's access and modified times are set to the current - time. (The effect is similar to running the Unix program :program:
touch
on - the path.) Otherwise, times must be a 2-tuple of numbers, of the form
(atime, mtime)
which is used to set the access and modified times,- respectively. Whether a directory can be given for path depends on whether
- the operating system implements directories as files (for example, Windows
- does not). Note that the exact times you set here may not be returned by a
- subsequent :func:
~os.stat
call, depending on the resolution with which your - operating system records access and modification times; see :func:
~os.stat
.
- is
None
or not specified, then the file's access and modified times are - set to the current time. (The effect is similar to running the Unix program
- :program:
touch
on the path.) Otherwise, times must be a 2-tuple of - numbers, of the form
(atime, mtime)
which is used to set the access and - modified times, respectively. Whether a directory can be given for path
- depends on whether the operating system implements directories as files
- (for example, Windows does not). Note that the exact times you set here may
- not be returned by a subsequent :func:
~os.stat
call, depending on the - resolution with which your operating system records access and modification
- times; see :func:
~os.stat
. Availability: Unix, Windows.
--- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -270,6 +270,21 @@ class StatAttributeTests(unittest.TestCa st2 = os.stat(support.TESTFN) self.assertEqual(st2.st_mtime, int(st.st_mtime-delta))
- def test_utime_noargs(self):
# (insert issue#) removed the requirement to pass None as the[](#l2.8)
# second argument. Check that the previous methods of passing[](#l2.9)
# a time tuple or None work in addition to no argument.[](#l2.10)
st = os.stat(support.TESTFN)[](#l2.11)
# Doesn't set anything new, but sets the time tuple way[](#l2.12)
os.utime(support.TESTFN, (st.st_atime, st.st_mtime))[](#l2.13)
# Set to the current time in the old explicit way.[](#l2.14)
os.utime(support.TESTFN, None)[](#l2.15)
st1 = os.stat(support.TESTFN)[](#l2.16)
# Set to the current time in the new way[](#l2.17)
os.utime(support.TESTFN)[](#l2.18)
st2 = os.stat(support.TESTFN)[](#l2.19)
self.assertAlmostEqual(st1.st_mtime, st2.st_mtime, delta=10)[](#l2.20)
+ # Restrict test to Win32, since there is no guarantee other # systems support centiseconds if sys.platform == 'win32':
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1? Core and Builtins ----------------- +- Issue #13327: Remove the need for an explicit None as the second argument
- Issue #13350: Simplify some C code by replacing most usages of PyUnicode_Format by PyUnicode_FromFormat.
--- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -3543,7 +3543,7 @@ static PyObject * posix_utime(PyObject *self, PyObject *args) { #ifdef MS_WINDOWS
- PyObject *arg = NULL; PyObject *obwpath; wchar_t *wpath = NULL; PyObject *oapath; @@ -3554,7 +3554,7 @@ posix_utime(PyObject *self, PyObject *ar FILETIME atime, mtime; PyObject *result = NULL;
- if (PyArg_ParseTuple(args, "U|O:utime", &obwpath, &arg)) { wpath = PyUnicode_AsUnicode(obwpath); if (wpath == NULL) return NULL;
@@ -3571,7 +3571,7 @@ posix_utime(PyObject *self, PyObject *ar are also valid. */ PyErr_Clear();
if (!PyArg_ParseTuple(args, "O&O:utime",[](#l4.25)
if (!PyArg_ParseTuple(args, "O&|O:utime",[](#l4.26) PyUnicode_FSConverter, &oapath, &arg))[](#l4.27) return NULL;[](#l4.28)
@@ -3589,7 +3589,7 @@ posix_utime(PyObject *self, PyObject *ar Py_DECREF(oapath); }
- if (!arg || (arg == Py_None)) { SYSTEMTIME now; GetSystemTime(&now); if (!SystemTimeToFileTime(&now, &mtime) ||
@@ -3633,13 +3633,13 @@ done: time_t atime, mtime; long ausec, musec; int res;