Commit a0fd7f1b authored by Tim Hoffmann's avatar Tim Hoffmann Committed by Petr Viktorin

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

parent 9718b59e
...@@ -672,6 +672,7 @@ Benjamin Hodgson ...@@ -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
......
Migrate datetime.date.fromtimestamp to Argument Clinic. Patch by Tim Hoffmann.
...@@ -23,8 +23,9 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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,
......
...@@ -2,6 +2,18 @@ ...@@ -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 ...@@ -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]*/
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment