| Index: third_party/cython/src/Cython/Includes/cpython/datetime.pxd
|
| diff --git a/third_party/cython/src/Cython/Includes/cpython/datetime.pxd b/third_party/cython/src/Cython/Includes/cpython/datetime.pxd
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3c6f8a7f3969251e83ba3f303b84e4c124eae008
|
| --- /dev/null
|
| +++ b/third_party/cython/src/Cython/Includes/cpython/datetime.pxd
|
| @@ -0,0 +1,212 @@
|
| +from cpython.ref cimport PyObject
|
| +
|
| +cdef extern from "Python.h":
|
| + ctypedef struct PyTypeObject:
|
| + pass
|
| +
|
| +cdef extern from "datetime.h":
|
| +
|
| + ctypedef extern class datetime.date[object PyDateTime_Date]:
|
| + pass
|
| +
|
| + ctypedef extern class datetime.time[object PyDateTime_Time]:
|
| + pass
|
| +
|
| + ctypedef extern class datetime.datetime[object PyDateTime_DateTime]:
|
| + pass
|
| +
|
| + ctypedef extern class datetime.timedelta[object PyDateTime_Delta]:
|
| + pass
|
| +
|
| + ctypedef extern class datetime.tzinfo[object PyDateTime_TZInfo]:
|
| + pass
|
| +
|
| + ctypedef struct PyDateTime_Date:
|
| + pass
|
| +
|
| + ctypedef struct PyDateTime_Time:
|
| + char hastzinfo
|
| + PyObject *tzinfo
|
| +
|
| + ctypedef struct PyDateTime_DateTime:
|
| + char hastzinfo
|
| + PyObject *tzinfo
|
| +
|
| + ctypedef struct PyDateTime_Delta:
|
| + int days
|
| + int seconds
|
| + int microseconds
|
| +
|
| + # Define structure for C API.
|
| + ctypedef struct PyDateTime_CAPI:
|
| + # type objects
|
| + PyTypeObject *DateType
|
| + PyTypeObject *DateTimeType
|
| + PyTypeObject *TimeType
|
| + PyTypeObject *DeltaType
|
| + PyTypeObject *TZInfoType
|
| +
|
| + # constructors
|
| + object (*Date_FromDate)(int, int, int, PyTypeObject*)
|
| + object (*DateTime_FromDateAndTime)(int, int, int, int, int, int, int, object, PyTypeObject*)
|
| + object (*Time_FromTime)(int, int, int, int, object, PyTypeObject*)
|
| + object (*Delta_FromDelta)(int, int, int, int, PyTypeObject*)
|
| +
|
| + # constructors for the DB API
|
| + object (*DateTime_FromTimestamp)(object, object, object)
|
| + object (*Date_FromTimestamp)(object, object)
|
| +
|
| + # Check type of the object.
|
| + bint PyDate_Check(object op)
|
| + bint PyDate_CheckExact(object op)
|
| +
|
| + bint PyDateTime_Check(object op)
|
| + bint PyDateTime_CheckExact(object op)
|
| +
|
| + bint PyTime_Check(object op)
|
| + bint PyTime_CheckExact(object op)
|
| +
|
| + bint PyDelta_Check(object op)
|
| + bint PyDelta_CheckExact(object op)
|
| +
|
| + bint PyTZInfo_Check(object op)
|
| + bint PyTZInfo_CheckExact(object op)
|
| +
|
| + # Getters for date and datetime (C macros).
|
| + int PyDateTime_GET_YEAR(object o)
|
| + int PyDateTime_GET_MONTH(object o)
|
| + int PyDateTime_GET_DAY(object o)
|
| +
|
| + # Getters for datetime (C macros).
|
| + int PyDateTime_DATE_GET_HOUR(object o)
|
| + int PyDateTime_DATE_GET_MINUTE(object o)
|
| + int PyDateTime_DATE_GET_SECOND(object o)
|
| + int PyDateTime_DATE_GET_MICROSECOND(object o)
|
| +
|
| + # Getters for time (C macros).
|
| + int PyDateTime_TIME_GET_HOUR(object o)
|
| + int PyDateTime_TIME_GET_MINUTE(object o)
|
| + int PyDateTime_TIME_GET_SECOND(object o)
|
| + int PyDateTime_TIME_GET_MICROSECOND(object o)
|
| +
|
| + # Getters for timedelta (C macros).
|
| + #int PyDateTime_DELTA_GET_DAYS(object o)
|
| + #int PyDateTime_DELTA_GET_SECONDS(object o)
|
| + #int PyDateTime_DELTA_GET_MICROSECONDS(object o)
|
| +
|
| + # PyDateTime CAPI object.
|
| + PyDateTime_CAPI *PyDateTimeAPI
|
| +
|
| + void PyDateTime_IMPORT()
|
| +
|
| +# Datetime C API initialization function.
|
| +# You have to call it before any usage of DateTime CAPI functions.
|
| +cdef inline void import_datetime():
|
| + PyDateTime_IMPORT
|
| +
|
| +# Create date object using DateTime CAPI factory function.
|
| +# Note, there are no range checks for any of the arguments.
|
| +cdef inline object date_new(int year, int month, int day):
|
| + return PyDateTimeAPI.Date_FromDate(year, month, day, PyDateTimeAPI.DateType)
|
| +
|
| +# Create time object using DateTime CAPI factory function
|
| +# Note, there are no range checks for any of the arguments.
|
| +cdef inline object time_new(int hour, int minute, int second, int microsecond, object tz):
|
| + return PyDateTimeAPI.Time_FromTime(hour, minute, second, microsecond, tz, PyDateTimeAPI.TimeType)
|
| +
|
| +# Create datetime object using DateTime CAPI factory function.
|
| +# Note, there are no range checks for any of the arguments.
|
| +cdef inline object datetime_new(int year, int month, int day, int hour, int minute, int second, int microsecond, object tz):
|
| + return PyDateTimeAPI.DateTime_FromDateAndTime(year, month, day, hour, minute, second, microsecond, tz, PyDateTimeAPI.DateTimeType)
|
| +
|
| +# Create timedelta object using DateTime CAPI factory function.
|
| +# Note, there are no range checks for any of the arguments.
|
| +cdef inline object timedelta_new(int days, int seconds, int useconds):
|
| + return PyDateTimeAPI.Delta_FromDelta(days, seconds, useconds, 1, PyDateTimeAPI.DeltaType)
|
| +
|
| +# More recognizable getters for date/time/datetime/timedelta.
|
| +# There are no setters because datetime.h hasn't them.
|
| +# This is because of immutable nature of these objects by design.
|
| +# If you would change time/date/datetime/timedelta object you need to recreate.
|
| +
|
| +# Get tzinfo of time
|
| +cdef inline object time_tzinfo(object o):
|
| + if (<PyDateTime_Time*>o).hastzinfo:
|
| + return <object>(<PyDateTime_Time*>o).tzinfo
|
| + else:
|
| + return None
|
| +
|
| +# Get tzinfo of datetime
|
| +cdef inline object datetime_tzinfo(object o):
|
| + if (<PyDateTime_DateTime*>o).hastzinfo:
|
| + return <object>(<PyDateTime_DateTime*>o).tzinfo
|
| + else:
|
| + return None
|
| +
|
| +# Get year of date
|
| +cdef inline int date_year(object o):
|
| + return PyDateTime_GET_YEAR(o)
|
| +
|
| +# Get month of date
|
| +cdef inline int date_month(object o):
|
| + return PyDateTime_GET_MONTH(o)
|
| +
|
| +# Get day of date
|
| +cdef inline int date_day(object o):
|
| + return PyDateTime_GET_DAY(o)
|
| +
|
| +# Get year of datetime
|
| +cdef inline int datetime_year(object o):
|
| + return PyDateTime_GET_YEAR(o)
|
| +
|
| +# Get month of datetime
|
| +cdef inline int datetime_month(object o):
|
| + return PyDateTime_GET_MONTH(o)
|
| +
|
| +# Get day of datetime
|
| +cdef inline int datetime_day(object o):
|
| + return PyDateTime_GET_DAY(o)
|
| +
|
| +# Get hour of time
|
| +cdef inline int time_hour(object o):
|
| + return PyDateTime_TIME_GET_HOUR(o)
|
| +
|
| +# Get minute of time
|
| +cdef inline int time_minute(object o):
|
| + return PyDateTime_TIME_GET_MINUTE(o)
|
| +
|
| +# Get second of time
|
| +cdef inline int time_second(object o):
|
| + return PyDateTime_TIME_GET_SECOND(o)
|
| +
|
| +# Get microsecond of time
|
| +cdef inline int time_microsecond(object o):
|
| + return PyDateTime_TIME_GET_MICROSECOND(o)
|
| +
|
| +# Get hour of datetime
|
| +cdef inline int datetime_hour(object o):
|
| + return PyDateTime_DATE_GET_HOUR(o)
|
| +
|
| +# Get minute of datetime
|
| +cdef inline int datetime_minute(object o):
|
| + return PyDateTime_DATE_GET_MINUTE(o)
|
| +
|
| +# Get second of datetime
|
| +cdef inline int datetime_second(object o):
|
| + return PyDateTime_DATE_GET_SECOND(o)
|
| +
|
| +# Get microsecond of datetime
|
| +cdef inline int datetime_microsecond(object o):
|
| + return PyDateTime_DATE_GET_MICROSECOND(o)
|
| +
|
| +# Get days of timedelta
|
| +cdef inline int timedelta_days(object o):
|
| + return (<PyDateTime_Delta*>o).days
|
| +
|
| +# Get seconds of timedelta
|
| +cdef inline int timedelta_seconds(object o):
|
| + return (<PyDateTime_Delta*>o).seconds
|
| +
|
| +# Get microseconds of timedelta
|
| +cdef inline int timedelta_microseconds(object o):
|
| + return (<PyDateTime_Delta*>o).microseconds
|
|
|