summaryrefslogtreecommitdiffstats
path: root/Python/pytime.c
Commit message (Collapse)AuthorAgeFilesLines
* Issue #23517: Try to fix test_time on "x86 Ubuntu Shared 3.x" buildbotVictor Stinner2015-09-021-7/+10
|
* Issue #23517: Fix _PyTime_ObjectToDenominator()Victor Stinner2015-09-021-18/+17
| | | | | * initialize numerator on overflow error ensure that numerator is smaller than * denominator.
* Issue #23517: Add "half up" rounding mode to the _PyTime APIVictor Stinner2015-09-011-10/+54
|
* Move assertion inside _PyTime_ObjectToTimeval()Victor Stinner2015-09-011-6/+14
| | | | | Change also _PyTime_FromSeconds() assertion to ensure that the _PyTime_t type is used.
* Refactor pytime.cVictor Stinner2015-09-011-48/+65
| | | | Move code to convert double timestamp to subfunctions.
* Issue #22117: Add a new _PyTime_FromSeconds() functionVictor Stinner2015-04-031-0/+17
| | | | | Fix also _Py_InitializeEx_Private(): initialize time before initializing import, import_init() uses the _PyTime API (for thread locks).
* Issue #22117, issue #23485: Fix _PyTime_AsMilliseconds() andVictor Stinner2015-04-011-13/+13
| | | | | | _PyTime_AsMicroseconds() rounding. Add also unit tests.
* Issue #23485: Add _PyTime_FromMillisecondsObject() functionVictor Stinner2015-03-301-5/+18
|
* Issue #22117: Try to fix rounding in conversion from Python double to _PyTime_tVictor Stinner2015-03-301-1/+2
| | | | using the C volatile keyword.
* Issue #22117: Remove _PyTime_ROUND_DOWN and _PyTime_ROUND_UP rounding methodsVictor Stinner2015-03-301-15/+5
| | | | Use _PyTime_ROUND_FLOOR and _PyTime_ROUND_CEILING instead.
* Issue #22117: Add _PyTime_ROUND_CEILING rounding method for timestampsVictor Stinner2015-03-301-0/+2
| | | | Add also more tests for ROUNd_FLOOR.
* Issue #22117: Add assertions to _PyTime_AsTimeval() and _PyTime_AsTimespec() toVictor Stinner2015-03-301-0/+4
| | | | check that microseconds and nanoseconds fits into the specified range.
* Issue #22117: Fix usage of _PyTime_AsTimeval()Victor Stinner2015-03-301-2/+17
| | | | | Add _PyTime_AsTimeval_noraise() function. Call it when it's not possible (or not useful) to raise a Python exception on overflow.
* Issue #22117: Fix rounding and implement _PyTime_ROUND_FLOOR in:Victor Stinner2015-03-291-24/+20
| | | | | | - _PyTime_ObjectToTime_t() - _PyTime_ObjectToTimespec() - _PyTime_ObjectToTimeval()
* Issue #22117: Cleanup pytime.c/.hVictor Stinner2015-03-291-7/+5
|
* Issue #22117: Use the _PyTime_t API in _datetime.datetime() constructorVictor Stinner2015-03-291-105/+14
| | | | | * Remove _PyTime_gettimeofday() * Add _PyTime_GetSystemClock()
* Issue #22117: Fix _PyTime_GetMonotonicClock() andVictor Stinner2015-03-281-12/+20
| | | | | _PyTime_GetSystemClockWithInfo() to not raise an exception and return 0 on error (it should never occur)
* Issue #22117: Add the new _PyTime_ROUND_FLOOR rounding method for the datetimeVictor Stinner2015-03-281-3/+12
| | | | | 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-17/+0
| | | | Remove also the now unused _PyTime_AddDouble() function.
* Issue #22117: Use the new _PyTime_t API in the select moduleVictor Stinner2015-03-281-1/+1
|
* Issue #22117: The thread module uses the new _PyTime_t timestamp APIVictor Stinner2015-03-281-126/+6
| | | | | | | | | Add also a new _PyTime_AsMicroseconds() function. threading.TIMEOUT_MAX is now be smaller: only 292 years instead of 292,271 years on 64-bit system for example. Sorry, your threads will hang a *little bit* shorter. Call me if you want to ensure that your locks wait longer, I can share some tricks with you.
* Issue #22117: Write unit tests for _PyTime_AsTimeval()Victor Stinner2015-03-281-13/+27
| | | | | | | * _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: The signal modules uses the new _PyTime_t APIVictor Stinner2015-03-271-0/+21
| | | | | * Add _PyTime_AsTimespec() * Add unit tests for _PyTime_AsTimespec()
* Issue #22117: time.time() now uses the new _PyTime_t APIVictor Stinner2015-03-271-9/+120
| | | | * Add _PyTime_GetSystemClockWithInfo()
* Issue #22117: time.monotonic() now uses the new _PyTime_t APIVictor Stinner2015-03-271-0/+26
| | | | | | * Add _PyTime_FromNanoseconds() * Add _PyTime_AsSecondsDouble() * Add unit tests for _PyTime_AsSecondsDouble()
* Issue #22117: Fix rounding in _PyTime_FromSecondsObject()Victor Stinner2015-03-271-3/+14
| | | | | | * Rename _PyTime_FromObject() to _PyTime_FromSecondsObject() * Add _PyTime_AsNanosecondsObject() and _testcapi.pytime_fromsecondsobject() * Add unit tests
* Issue #23451, #22117: Python 3.5 now requires Windows Vista or newer, soVictor Stinner2015-03-271-47/+2
| | | | GetTickCount64() is now always available.
* Issue #22117: Add a new Python timestamp format _PyTime_t to pytime.hVictor Stinner2015-03-271-1/+310
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Cleanup pytime.c: add XXX_TO_YYY constants (ex: SEC_TO_US)Victor Stinner2015-03-201-13/+19
|
* Issue #23646: Enhance precision of time.sleep() and socket timeout whenVictor Stinner2015-03-201-0/+17
| | | | | | | | 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 #23451: Update pyconfig.h for Windows to require Vista headers and ↵Steve Dower2015-03-021-47/+2
| | | | remove unnecessary version checks.
* Issue #22043: Fix pymonotonic(), use tv_usec=-1 as a marker to skipVictor Stinner2014-09-031-2/+3
| | | | the monotonic test
* Issue #22043: time.monotonic() is now always availableVictor Stinner2014-09-021-0/+175
| | | | | 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: Fix _PyTime_gettimeofday() if HAVE_GETTIMEOFDAYVictor Stinner2014-09-021-5/+2
| | | | Ensure also that the tv_usec field is consistent: in range [0; 999999].
* Issue #22043: _PyTime_Init() now checks if the system clock works.Victor Stinner2014-08-291-85/+60
| | | | | | | | | 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-13/+41
| | | | | | 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).
* Issue #20320: select.select() and select.kqueue.control() now round the timeoutVictor Stinner2014-02-161-7/+28
| | | | | | aways from zero, instead of rounding towards zero. It should make test_asyncio more reliable, especially test_timeout_rounding() test.
* PEP 418: Rename adjusted attribute to adjustable in time.get_clock_info() resultVictor Stinner2012-06-121-7/+4
| | | | | | | | 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.
* Issue #14127: Add ns= parameter to utime, futimes, and lutimes.Larry Hastings2012-05-031-1/+1
| | | | | | Removed futimens as it is now redundant. Changed shutil.copystat to use st_atime_ns and st_mtime_ns from os.stat and ns= parameter to utime--it once again preserves exact metadata on Linux!
* strip is_ prefixes on clock_info fieldsBenjamin Peterson2012-05-011-9/+9
|
* Issue #14428, #14397: Implement the PEP 418Victor Stinner2012-04-291-8/+54
| | | | | | | | | * 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
* Issue #14127: Add st_{cma}time_ns fields to os.stat() result object.Larry Hastings2012-04-191-0/+11
|
* Issue #14180: Fix an invalid rounding when compiler optimization are enabledVictor Stinner2012-03-131-1/+3
| | | | Use volatile keyword to disable localy unsafe float optimizations.
* Issue #14180: Remove commented codeVictor Stinner2012-03-131-2/+0
|
* Close #14180: Factorize code to convert a number of seconds to time_t, ↵Victor Stinner2012-03-131-22/+77
| | | | | | | | | | | | | timeval or timespec time.ctime(), gmtime(), time.localtime(), datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() now raises an OverflowError, instead of a ValueError, if the timestamp does not fit in time_t. datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() now round microseconds towards zero instead of rounding to nearest with ties going away from zero.
* Issue #13964: signal.sigtimedwait() timeout is now a float instead of a tupleVictor Stinner2012-03-021-0/+45
| | | | Add a private API to convert an int or float to a C timespec structure.
* Backout f8409b3d6449: the PEP 410 is not accepted yetVictor Stinner2012-02-081-325/+18
|
* PEP 410Victor Stinner2012-02-081-18/+325
|
* Issue #13845: time.time() now uses GetSystemTimeAsFileTime() instead of ftime()Victor Stinner2012-02-071-8/+25
| | | | | to have a resolution of 100 ns instead of 1 ms (the clock accuracy is between 0.5 ms and 15 ms).
* Issue #9079: Added _PyTime_gettimeofday(_PyTime_timeval *tp) to C APIAlexander Belopolsky2010-08-051-0/+60
exposed in Python.h. This function is similar to POSIX gettimeofday(struct timeval *tp), but available on platforms without gettimeofday().