summaryrefslogtreecommitdiffstats
path: root/Include/pytime.h
Commit message (Collapse)AuthorAgeFilesLines
* bpo-35134, Include: Move pytime.h to cpython/pytime.h (GH-23988)Nicholas Sim2021-02-161-250/+0
| | | | This change is backward compatible since C extension modules must not include "pytime.h" directly, but only include "Python.h".
* bpo-37205: time.time() cannot fail with fatal error (GH-23314)Victor Stinner2020-11-161-24/+28
| | | | | | | | | | | | | | | time.time(), time.perf_counter() and time.monotonic() functions can no longer fail with a Python fatal error, instead raise a regular Python exception on failure. Remove _PyTime_Init(): don't check system, monotonic and perf counter clocks at startup anymore. On error, _PyTime_GetSystemClock(), _PyTime_GetMonotonicClock() and _PyTime_GetPerfCounter() now silently ignore the error and return 0. They cannot fail with a Python fatal error anymore. Add py_mach_timebase_info() and win_perf_counter_frequency() sub-functions.
* Fix _PyTime_MIN/MAX values (GH-15384)Sergey Fedoseev2019-08-231-2/+2
| | | | _PyTime_t type is defined as int64_t, and so min/max are INT64_MIN/INT64_MAX, not PY_LLONG_MIN/PY_LLONG_MAX.
* bpo-31784: Implement PEP 564: add time.time_ns() (#3989)Victor Stinner2017-11-021-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | Add new time functions: * time.clock_gettime_ns() * time.clock_settime_ns() * time.monotonic_ns() * time.perf_counter_ns() * time.process_time_ns() * time.time_ns() Add new _PyTime functions: * _PyTime_FromTimespec() * _PyTime_FromNanosecondsObject() * _PyTime_FromTimeval() Other changes: * Add also os.times() tests to test_os. * pytime_fromtimeval() and pytime_fromtimeval() now return _PyTime_MAX or _PyTime_MIN on overflow, rather than undefined behaviour * _PyTime_FromNanoseconds() parameter type changes from long long to _PyTime_t
* Fix trailing whitespaces in C files. (#4130)Serhiy Storchaka2017-10-261-2/+2
|
* bpo-31786: Make functions in the select module blocking when timeout is a ↵Pablo Galindo2017-10-171-1/+12
| | | | small negative value. (#4003)
* bpo-31773: _PyTime_GetPerfCounter() uses _PyTime_t (GH-3983)Victor Stinner2017-10-161-3/+3
| | | | | | | | * Rewrite win_perf_counter() to only use integers internally. * Add _PyTime_MulDiv() which compute "ticks * mul / div" in two parts (int part and remaining) to prevent integer overflow. * Clock frequency is checked at initialization for integer overflow. * Enhance also pymonotonic() to reduce the precision loss on macOS (mach_absolute_time() clock).
* bpo-31773: time.perf_counter() uses again double (GH-3964)Victor Stinner2017-10-121-11/+12
| | | | | | | | time.clock() and time.perf_counter() now use again C double internally. Remove also _PyTime_GetWinPerfCounterWithInfo(): use _PyTime_GetPerfCounterDoubleWithInfo() instead on Windows.
* bpo-31415: Add _PyTime_GetPerfCounter() and use it for -X importtime (#3936)Victor Stinner2017-10-101-0/+16
| | | | | * Add _PyTime_GetPerfCounter() * Use _PyTime_GetPerfCounter() for -X importtime
* Issue #28148: Stop using localtime() and gmtime() in the time module.Alexander Belopolsky2016-09-281-0/+8
| | | | | | Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
* replace Python aliases for standard integer types with the standard integer ↵Benjamin Peterson2016-09-061-5/+1
| | | | types (#17884)
* replace PY_LONG_LONG with long longBenjamin Peterson2016-09-061-1/+1
|
* Issue #25155: Add _PyTime_AsTimevalTime_t() functionVictor Stinner2015-09-181-0/+12
| | | | | | | | | | | | | | On Windows, the tv_sec field of the timeval structure has the type C long, whereas it has the type C time_t on all other platforms. A C long has a size of 32 bits (signed inter, 1 bit for the sign, 31 bits for the value) which is not enough to store an Epoch timestamp after the year 2038. Add the _PyTime_AsTimevalTime_t() function written for datetime.datetime.now(): convert a _PyTime_t timestamp to a (secs, us) tuple where secs type is time_t. It allows to support dates after the year 2038 on Windows. Enhance also _PyTime_AsTimeval_impl() to detect overflow on the number of seconds when rounding the number of microseconds.
* Make _PyTime_RoundHalfEven() private againVictor Stinner2015-09-091-5/+0
|
* Issue #23517: fromtimestamp() and utcfromtimestamp() methods ofVictor Stinner2015-09-081-4/+5
| | | | | | | | | | | | datetime.datetime now round microseconds to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding towards -Infinity (ROUND_FLOOR). pytime API: replace _PyTime_ROUND_HALF_UP with _PyTime_ROUND_HALF_EVEN. Fix also _PyTime_Divide() for negative numbers. _PyTime_AsTimeval_impl() now reuses _PyTime_Divide() instead of reimplementing rounding modes.
* Issue #23517: datetime.timedelta constructor now rounds microseconds to nearestVictor Stinner2015-09-021-0/+4
| | | | | | with ties going away from zero (ROUND_HALF_UP), as Python 2 and Python older than 3.3, instead of rounding to nearest with ties going to nearest even integer (ROUND_HALF_EVEN).
* Issue #23517: Add "half up" rounding mode to the _PyTime APIVictor Stinner2015-09-011-1/+4
|
* Issue #23834: Fix the default socket timeoutVictor Stinner2015-04-091-1/+6
| | | | Use -1 second by default, not -1 nanosecond.
* Issue #22117: Add a new _PyTime_FromSeconds() functionVictor Stinner2015-04-031-1/+4
| | | | | Fix also _Py_InitializeEx_Private(): initialize time before initializing import, import_init() uses the _PyTime API (for thread locks).
* Issue #23485: Add _PyTime_FromMillisecondsObject() functionVictor Stinner2015-03-301-1/+7
|
* Issue #22117: Remove _PyTime_ROUND_DOWN and _PyTime_ROUND_UP rounding methodsVictor Stinner2015-03-301-6/+1
| | | | Use _PyTime_ROUND_FLOOR and _PyTime_ROUND_CEILING instead.
* Issue #22117: Add _PyTime_ROUND_CEILING rounding method for timestampsVictor Stinner2015-03-301-1/+4
| | | | Add also more tests for ROUNd_FLOOR.
* Issue #22117: Fix usage of _PyTime_AsTimeval()Victor Stinner2015-03-301-1/+7
| | | | | Add _PyTime_AsTimeval_noraise() function. Call it when it's not possible (or not useful) to raise a Python exception on overflow.
* Issue #22117: Cleanup pytime.c/.hVictor Stinner2015-03-291-37/+37
|
* Issue #22117: Use the _PyTime_t API in _datetime.datetime() constructorVictor Stinner2015-03-291-14/+6
| | | | | * Remove _PyTime_gettimeofday() * Add _PyTime_GetSystemClock()
* Issue #22117: Add the new _PyTime_ROUND_FLOOR rounding method for the datetimeVictor Stinner2015-03-281-2/+9
| | | | | 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/+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-18/+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: remove _PyTime_INTERVAL() macroVictor Stinner2015-03-281-10/+0
|
* Issue #22117: Write unit tests for _PyTime_AsTimeval()Victor Stinner2015-03-281-1/+3
| | | | | | | * _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/+6
| | | | | * Add _PyTime_AsTimespec() * Add unit tests for _PyTime_AsTimespec()
* Issue #22117: time.time() now uses the new _PyTime_t APIVictor Stinner2015-03-271-0/+8
| | | | * Add _PyTime_GetSystemClockWithInfo()
* Issue #22117: time.monotonic() now uses the new _PyTime_t APIVictor Stinner2015-03-271-1/+20
| | | | | | * Add _PyTime_FromNanoseconds() * Add _PyTime_AsSecondsDouble() * Add unit tests for _PyTime_AsSecondsDouble()
* Issue #22117: Fix rounding in _PyTime_FromSecondsObject()Victor Stinner2015-03-271-3/+6
| | | | | | * 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-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | 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: Enhance precision of time.sleep() and socket timeout whenVictor Stinner2015-03-201-7/+5
| | | | | | | | 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 #22043: time.monotonic() is now always availableVictor Stinner2014-09-021-0/+18
| | | | | threading.Lock.acquire(), threading.RLock.acquire() and socket operations now use a monotonic clock, instead of the system clock, when a timeout is used.
* pytime.h: remove duplicated "#ifndef Py_LIMITED_API"Victor Stinner2014-08-311-3/+0
|
* Issue #22043: _PyTime_Init() now checks if the system clock works.Victor Stinner2014-08-291-6/+7
| | | | | | | | | 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 #20320: select.select() and select.kqueue.control() now round the timeoutVictor Stinner2014-02-161-3/+14
| | | | | | 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-1/+1
| | | | | | | | 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-0/+4
| | | | | | 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-2/+2
|
* Issue #14428, #14397: Implement the PEP 418Victor Stinner2012-04-291-0/+14
| | | | | | | | | * 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/+4
|
* Close #14180: Factorize code to convert a number of seconds to time_t, ↵Victor Stinner2012-03-131-2/+15
| | | | | | | | | | | | | 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/+11
| | | | 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-27/+1
|
* PEP 410Victor Stinner2012-02-081-1/+27
|