| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
module. time.clock_settime() now uses this rounding method instead of
_PyTime_ROUND_DOWN to handle correctly dates before 1970.
|
|
|
|
| |
Remove also the now unused _PyTime_AddDouble() function.
|
|
|
|
|
|
|
| |
* _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
|
|
|
|
| |
* Add _PyTime_GetSystemClockWithInfo()
|
|
|
|
|
|
| |
* Add _PyTime_FromNanoseconds()
* Add _PyTime_AsSecondsDouble()
* Add unit tests for _PyTime_AsSecondsDouble()
|
|
|
|
|
|
| |
* Rename _PyTime_FromObject() to _PyTime_FromSecondsObject()
* Add _PyTime_AsNanosecondsObject() and _testcapi.pytime_fromsecondsobject()
* Add unit tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Sorry, it was a mistake, the patch is still under review: issue #23646.
|
| |
|
|
|
|
| |
which will be used for the official 3.5 release.
|
|
|
|
| |
The distutils module still supports it to build extensions.
|
|
|
|
|
| |
threading.Lock.acquire(), threading.RLock.acquire() and socket operations now
use a monotonic clock, instead of the system clock, when a timeout is used.
|
|
|
|
| |
available (unlikely)
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
| |
outsize range [1902; 2037].
|
|
|
|
|
|
| |
aways from zero, instead of rounding towards zero.
It should make test_asyncio more reliable, especially test_timeout_rounding() test.
|
|
|
|
| |
a year before 1900.
|
| |
|
|
|
|
| |
year before 1900.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| |/
| |
| | |
time.strtime("%Y") returned "2345" when formatting year 12345.
|
| |
| |
| |
| | |
time.strtime("%Y") returned "2345" when formatting year 12345.
|
|\ \
| |/ |
|
| |
| |
| |
| | |
timespec``'s "tv_nsec" member is not a C long.
|
| |
| |
| |
| | |
for better WinRT compatibility.
|
| | |
|
|/
|
|
| |
time.strptime docsttings.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
| |
Only use a single #ifdef for the 3 functions.
|
| |
|
| |
|
|
|
|
|
|
| |
clock_gettime(CLOCK_REALTIME) has a better resolution than gettimeofday().
time.time() falls back on gettimeofday() (and then on other functions) on
error.
|
|
|
|
| |
And call mach_absolute_time() after mach_timebase_info().
|
| |
|
|
|
|
| |
floattime() must not raise an error if the current time is 1970.1.1 at 00:00.
|