Migrate datetime.date.fromtimestamp to Argument Clinic (GH-8535)

This commit is contained in:
Tim Hoffmann 2018-09-24 10:39:02 +02:00 committed by Petr Viktorin
parent 9718b59ee5
commit a0fd7f1b55
4 changed files with 35 additions and 18 deletions

View File

@ -672,6 +672,7 @@ Benjamin Hodgson
Joerg-Cyril Hoehle Joerg-Cyril Hoehle
Gregor Hoffleit Gregor Hoffleit
Chris Hoffman Chris Hoffman
Tim Hoffmann
Stefan Hoffmeister Stefan Hoffmeister
Albert Hofkamp Albert Hofkamp
Chris Hogan Chris Hogan

View File

@ -0,0 +1 @@
Migrate datetime.date.fromtimestamp to Argument Clinic. Patch by Tim Hoffmann.

View File

@ -23,8 +23,9 @@
/*[clinic input] /*[clinic input]
module datetime module datetime
class datetime.datetime "PyDateTime_DateTime *" "&PyDateTime_DateTimeType" class datetime.datetime "PyDateTime_DateTime *" "&PyDateTime_DateTimeType"
class datetime.date "PyDateTime_Date *" "&PyDateTime_DateType"
[clinic start generated code]*/ [clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=78142cb64b9e98bc]*/ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=25138ad6a696b785]*/
#include "clinic/_datetimemodule.c.h" #include "clinic/_datetimemodule.c.h"
@ -2788,9 +2789,8 @@ date_new(PyTypeObject *type, PyObject *args, PyObject *kw)
return self; return self;
} }
/* Return new date from localtime(t). */
static PyObject * static PyObject *
date_local_from_object(PyObject *cls, PyObject *obj) date_fromtimestamp(PyObject *cls, PyObject *obj)
{ {
struct tm tm; struct tm tm;
time_t t; time_t t;
@ -2835,19 +2835,26 @@ date_today(PyObject *cls, PyObject *dummy)
return result; return result;
} }
/* Return new date from given timestamp (Python timestamp -- a double). */ /*[clinic input]
@classmethod
datetime.date.fromtimestamp
timestamp: object
/
Create a date from a POSIX timestamp.
The timestamp is a number, e.g. created via time.time(), that is interpreted
as local time.
[clinic start generated code]*/
static PyObject * static PyObject *
date_fromtimestamp(PyObject *cls, PyObject *args) datetime_date_fromtimestamp(PyTypeObject *type, PyObject *timestamp)
/*[clinic end generated code: output=fd045fda58168869 input=eabb3fe7f40491fe]*/
{ {
PyObject *timestamp; return date_fromtimestamp((PyObject *) type, timestamp);
PyObject *result = NULL;
if (PyArg_ParseTuple(args, "O:fromtimestamp", &timestamp))
result = date_local_from_object(cls, timestamp);
return result;
} }
/* Return new date from proleptic Gregorian ordinal. Raises ValueError if /* Return new date from proleptic Gregorian ordinal. Raises ValueError if
* the ordinal is out of range. * the ordinal is out of range.
*/ */
@ -3193,11 +3200,7 @@ date_reduce(PyDateTime_Date *self, PyObject *arg)
static PyMethodDef date_methods[] = { static PyMethodDef date_methods[] = {
/* Class methods: */ /* Class methods: */
DATETIME_DATE_FROMTIMESTAMP_METHODDEF
{"fromtimestamp", (PyCFunction)date_fromtimestamp, METH_VARARGS |
METH_CLASS,
PyDoc_STR("timestamp -> local date from a POSIX timestamp (like "
"time.time()).")},
{"fromordinal", (PyCFunction)date_fromordinal, METH_VARARGS | {"fromordinal", (PyCFunction)date_fromordinal, METH_VARARGS |
METH_CLASS, METH_CLASS,

View File

@ -2,6 +2,18 @@
preserve preserve
[clinic start generated code]*/ [clinic start generated code]*/
PyDoc_STRVAR(datetime_date_fromtimestamp__doc__,
"fromtimestamp($type, timestamp, /)\n"
"--\n"
"\n"
"Create a date from a POSIX timestamp.\n"
"\n"
"The timestamp is a number, e.g. created via time.time(), that is interpreted\n"
"as local time.");
#define DATETIME_DATE_FROMTIMESTAMP_METHODDEF \
{"fromtimestamp", (PyCFunction)datetime_date_fromtimestamp, METH_O|METH_CLASS, datetime_date_fromtimestamp__doc__},
PyDoc_STRVAR(datetime_datetime_now__doc__, PyDoc_STRVAR(datetime_datetime_now__doc__,
"now($type, /, tz=None)\n" "now($type, /, tz=None)\n"
"--\n" "--\n"
@ -36,4 +48,4 @@ datetime_datetime_now(PyTypeObject *type, PyObject *const *args, Py_ssize_t narg
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=1fc05897ab239b3f input=a9049054013a1b77]*/ /*[clinic end generated code: output=7fd14bd67749da23 input=a9049054013a1b77]*/