datetime.datetime now round microseconds to nearest with ties going away from
zero (ROUND_HALF_UP), as Python 2 and Python older than 3.3, instead of
rounding towards -Infinity (ROUND_FLOOR).
eintr_tester.py calls signal.setitimer() to send signals to the current process
every 100 ms. The test sometimes hangs on FreeBSD. Maybe there is a race
condition in the child process after fork(). It's unsafe to run arbitrary code
after fork().
This change replace os.fork() with a regular call to subprocess.Popen(). This
change avoids the risk of having a child process which continue to execute
eintr_tester.py instead of exiting. It also ensures that the child process
doesn't inherit unexpected file descriptors by mistake.
Since I'm unable to reproduce the issue on FreeBSD, I will have to watch
FreeBSD buildbots to check if the issue is fixed or not.
Remove previous attempt to debug: remove call to
faulthandler.dump_traceback_later().
Don't check anymore at runtime that the monotonic clock doesn't go backward.
Yes, it happens. It occurs sometimes each month on a Debian buildbot slave
running in a VM.
The problem is that Python cannot do anything useful if a monotonic clock goes
backward. It was decided in the PEP 418 to not fix the system, but only expose
the clock provided by the OS.
BaseTest now ensures that unittest.TestCase.assertWarns() uses the same
warnings module than warnings.catch_warnings(). Otherwise,
warnings.catch_warnings() will be unable to remove the added filter.
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: the change broke test_datetime. datetime.timedelta() rounding
mode must also be changed, and test_datetime must be updated for the new
rounding mode (half up).
datetime.datetime.utcfromtimestamp() now rounds to nearest with ties going away
from zero, instead of rounding towards minus infinity (-inf), as Python 2 and
Python older than 3.3.