diff options
author | Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> | 2018-09-24 08:39:02 (GMT) |
---|---|---|
committer | Petr Viktorin <encukou@gmail.com> | 2018-09-24 08:39:02 (GMT) |
commit | a0fd7f1b55a1d76842fa2c6b5777a39cdcf2bb5e (patch) | |
tree | ea55a55e2e4be74e3a9ab1d9d281e7bca2a172dd /Modules | |
parent | 9718b59ee5f2416cdb8116ea5837b062faf0d9f8 (diff) | |
download | cpython-a0fd7f1b55a1d76842fa2c6b5777a39cdcf2bb5e.zip cpython-a0fd7f1b55a1d76842fa2c6b5777a39cdcf2bb5e.tar.gz cpython-a0fd7f1b55a1d76842fa2c6b5777a39cdcf2bb5e.tar.bz2 |
Migrate datetime.date.fromtimestamp to Argument Clinic (GH-8535)
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_datetimemodule.c | 37 | ||||
-rw-r--r-- | Modules/clinic/_datetimemodule.c.h | 14 |
2 files changed, 33 insertions, 18 deletions
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 3ba700b..b7c59f1 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -23,8 +23,9 @@ /*[clinic input] module datetime class datetime.datetime "PyDateTime_DateTime *" "&PyDateTime_DateTimeType" +class datetime.date "PyDateTime_Date *" "&PyDateTime_DateType" [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" @@ -2788,9 +2789,8 @@ date_new(PyTypeObject *type, PyObject *args, PyObject *kw) return self; } -/* Return new date from localtime(t). */ static PyObject * -date_local_from_object(PyObject *cls, PyObject *obj) +date_fromtimestamp(PyObject *cls, PyObject *obj) { struct tm tm; time_t t; @@ -2835,19 +2835,26 @@ date_today(PyObject *cls, PyObject *dummy) 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 * -date_fromtimestamp(PyObject *cls, PyObject *args) +datetime_date_fromtimestamp(PyTypeObject *type, PyObject *timestamp) +/*[clinic end generated code: output=fd045fda58168869 input=eabb3fe7f40491fe]*/ { - PyObject *timestamp; - PyObject *result = NULL; - - if (PyArg_ParseTuple(args, "O:fromtimestamp", ×tamp)) - result = date_local_from_object(cls, timestamp); - return result; + return date_fromtimestamp((PyObject *) type, timestamp); } - /* Return new date from proleptic Gregorian ordinal. Raises ValueError if * the ordinal is out of range. */ @@ -3193,11 +3200,7 @@ date_reduce(PyDateTime_Date *self, PyObject *arg) static PyMethodDef date_methods[] = { /* Class methods: */ - - {"fromtimestamp", (PyCFunction)date_fromtimestamp, METH_VARARGS | - METH_CLASS, - PyDoc_STR("timestamp -> local date from a POSIX timestamp (like " - "time.time()).")}, + DATETIME_DATE_FROMTIMESTAMP_METHODDEF {"fromordinal", (PyCFunction)date_fromordinal, METH_VARARGS | METH_CLASS, diff --git a/Modules/clinic/_datetimemodule.c.h b/Modules/clinic/_datetimemodule.c.h index 4d92049..0f917dd 100644 --- a/Modules/clinic/_datetimemodule.c.h +++ b/Modules/clinic/_datetimemodule.c.h @@ -2,6 +2,18 @@ preserve [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__, "now($type, /, tz=None)\n" "--\n" @@ -36,4 +48,4 @@ datetime_datetime_now(PyTypeObject *type, PyObject *const *args, Py_ssize_t narg exit: return return_value; } -/*[clinic end generated code: output=1fc05897ab239b3f input=a9049054013a1b77]*/ +/*[clinic end generated code: output=7fd14bd67749da23 input=a9049054013a1b77]*/ |