summaryrefslogtreecommitdiffstats
path: root/Modules/timemodule.c
Commit message (Collapse)AuthorAgeFilesLines
* Issue 24244: Prevents termination when an invalid format string is ↵Steve Dower2015-05-221-7/+2
| | | | encountered on Windows.
* PEP 475: on EINTR, retry the function even if the timeout is equals to zeroVictor Stinner2015-03-301-1/+1
| | | | | | | | | Retry: * signal.sigtimedwait() * threading.Lock.acquire() * threading.RLock.acquire() * time.sleep()
* Issue #22117: Replace usage of _PyTime_ROUND_UP with _PyTime_ROUND_CEILINGVictor Stinner2015-03-301-3/+3
| | | | | All these functions only accept positive timeouts, so this change has no effect in practice.
* Issue #22117: Fix usage of _PyTime_AsTimeval()Victor Stinner2015-03-301-4/+1
| | | | | Add _PyTime_AsTimeval_noraise() function. Call it when it's not possible (or not useful) to raise a Python exception on overflow.
* Issue #22117: Add the new _PyTime_ROUND_FLOOR rounding method for the datetimeVictor Stinner2015-03-281-2/+2
| | | | | module. time.clock_settime() now uses this rounding method instead of _PyTime_ROUND_DOWN to handle correctly dates before 1970.
* Issue #22117: Use the _PyTime_t API for time.clock_settime()Victor Stinner2015-03-281-5/+5
| | | | Remove also the now unused _PyTime_AddDouble() function.
* Issue #22117: Write unit tests for _PyTime_AsTimeval()Victor Stinner2015-03-281-1/+4
| | | | | | | * _PyTime_AsTimeval() now ensures that tv_usec is always positive * _PyTime_AsTimespec() now ensures that tv_nsec is always positive * _PyTime_AsTimeval() now returns an integer on overflow instead of raising an exception
* Issue #22117: time.time() now uses the new _PyTime_t APIVictor Stinner2015-03-271-3/+5
| | | | * Add _PyTime_GetSystemClockWithInfo()
* Issue #22117: time.monotonic() now uses the new _PyTime_t APIVictor Stinner2015-03-271-3/+5
| | | | | | * Add _PyTime_FromNanoseconds() * Add _PyTime_AsSecondsDouble() * Add unit tests for _PyTime_AsSecondsDouble()
* Issue #22117: Fix rounding in _PyTime_FromSecondsObject()Victor Stinner2015-03-271-1/+1
| | | | | | * Rename _PyTime_FromObject() to _PyTime_FromSecondsObject() * Add _PyTime_AsNanosecondsObject() and _testcapi.pytime_fromsecondsobject() * Add unit tests
* Issue #22117: Add a new Python timestamp format _PyTime_t to pytime.hVictor Stinner2015-03-271-21/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | In practice, _PyTime_t is a number of nanoseconds. Its C type is a 64-bit signed number. It's integer value is in the range [-2^63; 2^63-1]. In seconds, the range is around [-292 years; +292 years]. In term of Epoch timestamp (1970-01-01), it can store a date between 1677-09-21 and 2262-04-11. The API has a resolution of 1 nanosecond and use integer number. With a resolution on 1 nanosecond, 64-bit IEEE 754 floating point numbers loose precision after 194 days. It's not the case with this API. The drawback is overflow for values outside [-2^63; 2^63-1], but these values are unlikely for most Python modules, except of the datetime module. New functions: - _PyTime_GetMonotonicClock() - _PyTime_FromObject() - _PyTime_AsMilliseconds() - _PyTime_AsTimeval() This change uses these new functions in time.sleep() to avoid rounding issues. The new API will be extended step by step, and the old API will be removed step by step. Currently, some code is duplicated just to be able to move incrementally, instead of pushing a large change at once.
* Issue #23646: Fix test_threading on WindowsVictor Stinner2015-03-201-1/+1
|
* Issue #23646: Enhance precision of time.sleep() and socket timeout whenVictor Stinner2015-03-201-2/+2
| | | | | | | | interrupted by a signal Add a new _PyTime_AddDouble() function and remove _PyTime_ADD_SECONDS() macro. The _PyTime_ADD_SECONDS only supported an integer number of seconds, the _PyTime_AddDouble() has subsecond resolution.
* Issue #23646: If time.sleep() is interrupted by a signal, the sleep is nowVictor Stinner2015-03-191-51/+56
| | | | | | | retried with the recomputed delay, except if the signal handler raises an exception (PEP 475). Modify also test_signal to use a monotonic clock instead of the system clock.
* Revert changeset d927047b1d8eb87738676980a24930d053ba2150Victor Stinner2015-03-171-69/+49
| | | | Sorry, it was a mistake, the patch is still under review: issue #23646.
* testVictor Stinner2015-03-121-49/+69
|
* Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015), ↵Steve Dower2014-11-221-13/+0
| | | | which will be used for the official 3.5 release.
* Issue #22592: Drop support of the Borland C compiler to build PythonVictor Stinner2014-10-221-9/+2
| | | | The distutils module still supports it to build extensions.
* Issue #22043: time.monotonic() is now always availableVictor Stinner2014-09-021-135/+6
| | | | | threading.Lock.acquire(), threading.RLock.acquire() and socket operations now use a monotonic clock, instead of the system clock, when a timeout is used.
* Issue #22043: Oops, fix perf_counter() on UNIX if no monotonic clock isVictor Stinner2014-08-291-2/+1
| | | | available (unlikely)
* Issue #22043: Simplify time.perf_counter() on WindowsVictor Stinner2014-08-291-30/+16
| | | | | | QueryPerformanceFrequency() cannot fail on Windows XP and later according to its documentation: raise an exception on error and drop the fallback to the system clock.
* Issue #22043: _PyTime_Init() now checks if the system clock works.Victor Stinner2014-08-291-1/+4
| | | | | | | | | Other changes: * The whole _PyTime API is private (not defined if Py_LIMITED_API is set) * _PyTime_gettimeofday_info() also returns -1 on error * Simplify PyTime_gettimeofday(): only use clock_gettime(CLOCK_REALTIME) or gettimeofday() on UNIX. Don't fallback to ftime() or time() anymore.
* Issue #22287: On UNIX, _PyTime_gettimeofday() now usesVictor Stinner2014-08-291-22/+0
| | | | | | clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now depends on the librt library on Solaris and on Linux (only with glibc older than 2.17).
* timemodule.c: Replace PyExc_IOError with PyExc_OSErrorVictor Stinner2014-07-311-5/+5
|
* Issue #19748: On AIX, time.mktime() now raises an OverflowError for yearVictor Stinner2014-02-211-0/+11
| | | | outsize range [1902; 2037].
* Issue #20320: select.select() and select.kqueue.control() now round the timeoutVictor Stinner2014-02-161-2/+2
| | | | | | aways from zero, instead of rounding towards zero. It should make test_asyncio more reliable, especially test_timeout_rounding() test.
* Issue #19634: time.strftime("%y") now raises a ValueError on Solaris when givenVictor Stinner2013-11-231-1/+1
| | | | a year before 1900.
* Issue #19634: Fix time_strftime() on AIX, format is a wchar_t* not a PyObject*Victor Stinner2013-11-181-2/+1
|
* Issue #19634: time.strftime("%y") now raises a ValueError on AIX when given aVictor Stinner2013-11-171-0/+14
| | | | year before 1900.
* Issue13674 Correct crash with strftime %y format under WindowsTim Golden2013-11-121-0/+7
|\
| * Issue13674 Correct crash with strftime %y format under WindowsTim Golden2013-11-121-0/+7
| |
* | Issue #18520: Add a new PyStructSequence_InitType2() function, same thanVictor Stinner2013-07-221-2/+3
| | | | | | | | | | | | | | | | PyStructSequence_InitType() except that it has a return value (0 on success, -1 on error). * PyStructSequence_InitType2() now raises MemoryError on memory allocation failure * Fix also some calls to PyDict_SetItemString(): handle error
* | Issue #18408: Fix time.tzset(), detect exception when calling PyInit_timezone()Victor Stinner2013-07-171-0/+2
| |
* | Fix time.mktime() and datetime.datetime.timestamp() on AIXVictor Stinner2013-06-251-1/+10
| | | | | | | | | | | | On AIX, the C function mktime() alwaysd sets tm_wday, even on error. So tm_wday cannot be used as a sentinel to detect an error, we can only check if the result is (time_t)-1.
* | (Merge 3.3) Fix time.strftime("%Y") on AIX: raise a ValueError for year > 9999Victor Stinner2013-06-251-1/+1
|\ \ | |/ | | | | time.strtime("%Y") returned "2345" when formatting year 12345.
| * Fix time.strftime("%Y") on AIX: raise a ValueError for year > 9999Victor Stinner2013-06-251-1/+1
| | | | | | | | time.strtime("%Y") returned "2345" when formatting year 12345.
* | Merge.Richard Oudkerk2013-04-171-1/+5
|\ \ | |/
| * - Issue #17782: Fix undefined behaviour on platforms where ``struct ↵Antoine Pitrou2013-04-171-1/+5
| | | | | | | | timespec``'s "tv_nsec" member is not a C long.
* | Replace WaitForSingleObject with WaitForSingleObjectEx,Martin v. Löwis2013-01-251-1/+1
| | | | | | | | for better WinRT compatibility.
* | #16135: Removal of OS/2 support (Modules/*)Jesus Cea2012-10-051-27/+0
| |
* | Issue #9650: List commonly used format codes in time.strftime and ↵Alexander Belopolsky2012-10-021-3/+25
|/ | | | time.strptime docsttings.
* Issue #1667546: On platforms supporting tm_zone and tm_gmtoff fieldsAlexander Belopolsky2012-06-141-2/+34
| | | | | | in struct tm, time.struct_time objects returned by time.gmtime(), time.localtime() and time.strptime() functions now have tm_zone and tm_gmtoff attributes. Original patch by Paul Boddie.
* PEP 418: Rename adjusted attribute to adjustable in time.get_clock_info() resultVictor Stinner2012-06-121-21/+15
| | | | | | | | Fix also its value on Windows and Linux according to its documentation: "adjustable" indicates if the clock *can be* adjusted, not if it is or was adjusted. In most cases, it is not possible to indicate if a clock is or was adjusted.
* time.get_clock_info() uses a namespace instead of structseqVictor Stinner2012-06-121-37/+20
|
* Fixed a typo in time_localtime()Alexander Belopolsky2012-06-121-1/+1
|
* strip is_ prefixes on clock_info fieldsBenjamin Peterson2012-05-011-31/+31
|
* Issue #14428, #14397: Implement the PEP 418Victor Stinner2012-04-291-89/+460
| | | | | | | | | * Rename time.steady() to time.monotonic() * On Windows, time.monotonic() uses GetTickCount/GetTickCount64() instead of QueryPerformanceCounter() * time.monotonic() uses CLOCK_HIGHRES if available * Add time.get_clock_info(), time.perf_counter() and time.process_time() functions
* Fix clock_gettime/getres/settime: PyArg_ParseTuple() expects an intVictor Stinner2012-04-131-10/+4
| | | | Only use a single #ifdef for the 3 functions.
* Expose clock_settime() as time.clock_settime()Victor Stinner2012-04-021-0/+30
|
* Add time.CLOCK_HIGHRES constant, needed on SolarisVictor Stinner2012-04-021-0/+3
|