New submission from STINNER Victor <victor.stin...@gmail.com>:

There are various ways to convert a Python int/float to a C time_t, timeval or 
timespec structure. Attached patch factorize code by adding functions to 
convert a Python object to a C type (time_t, timeval or timespec).

My patch changes how datetime rounds microsecond: round towards zero instead of 
rounding to nearest with ties going away from zero. I chose this rounding 
method because it is the method used by int(float) and int(time.time()) is a 
common in programs (more than round(time.time()). Rounding towards zero avoids 
also producing timestamps in the future.

On overflow, an OverflowError is now raises instead of a ValueError. I prefer 
OverflowError over ValueError because it is an implementation detail. For 
example, time_t is 32 bits on Linux 32 bits, 64 bits on Linux 64 bits or on 
Windows (32 or 64 bits).

PyTime_ObjectToXXX() functions are part of Python and so can be used by the 
posix, time, datetime and select modules. The patch removes _time.c, _time.h 
and timefunc.h because these files were only used for one function 
(_PyTime_DoubleToTime_t) which is no more used and it required to link a module 
to _time.c to get this function.

--

If it is a problem to replace ValueError with OverflowError for backward 
compatibility, it is easy to adapt the patch to raise ValueError instead.

timedelta*float and timedelta/float rounding method may also be changed.

----------
components: Library (Lib)
files: pytime.patch
keywords: patch
messages: 154811
nosy: belopolsky, georg.brandl, gregory.p.smith, haypo
priority: normal
severity: normal
status: open
title: Factorize code to convert int/float to time_t, timeval or timespec
versions: Python 3.3
Added file: http://bugs.python.org/file24716/pytime.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14180>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to