123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- cimport numpy as cnp
- from cpython.datetime cimport (
- date,
- datetime,
- )
- from numpy cimport (
- int32_t,
- int64_t,
- )
- # TODO(cython3): most of these can be cimported directly from numpy
- cdef extern from "numpy/ndarrayobject.h":
- ctypedef int64_t npy_timedelta
- ctypedef int64_t npy_datetime
- cdef extern from "numpy/ndarraytypes.h":
- ctypedef struct PyArray_DatetimeMetaData:
- NPY_DATETIMEUNIT base
- int64_t num
- cdef extern from "numpy/arrayscalars.h":
- ctypedef struct PyDatetimeScalarObject:
- # PyObject_HEAD
- npy_datetime obval
- PyArray_DatetimeMetaData obmeta
- ctypedef struct PyTimedeltaScalarObject:
- # PyObject_HEAD
- npy_timedelta obval
- PyArray_DatetimeMetaData obmeta
- cdef extern from "numpy/ndarraytypes.h":
- ctypedef struct npy_datetimestruct:
- int64_t year
- int32_t month, day, hour, min, sec, us, ps, as
- ctypedef enum NPY_DATETIMEUNIT:
- NPY_FR_Y
- NPY_FR_M
- NPY_FR_W
- NPY_FR_D
- NPY_FR_B
- NPY_FR_h
- NPY_FR_m
- NPY_FR_s
- NPY_FR_ms
- NPY_FR_us
- NPY_FR_ns
- NPY_FR_ps
- NPY_FR_fs
- NPY_FR_as
- NPY_FR_GENERIC
- int64_t NPY_DATETIME_NAT # elswhere we call this NPY_NAT
- cdef extern from "src/datetime/np_datetime.h":
- ctypedef struct pandas_timedeltastruct:
- int64_t days
- int32_t hrs, min, sec, ms, us, ns, seconds, microseconds, nanoseconds
- void pandas_datetime_to_datetimestruct(npy_datetime val,
- NPY_DATETIMEUNIT fr,
- npy_datetimestruct *result) nogil
- npy_datetime npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr,
- npy_datetimestruct *d) nogil
- void pandas_timedelta_to_timedeltastruct(npy_timedelta val,
- NPY_DATETIMEUNIT fr,
- pandas_timedeltastruct *result
- ) nogil
- cdef bint cmp_scalar(int64_t lhs, int64_t rhs, int op) except -1
- cdef check_dts_bounds(npy_datetimestruct *dts, NPY_DATETIMEUNIT unit=?)
- cdef int64_t pydatetime_to_dt64(
- datetime val, npy_datetimestruct *dts, NPY_DATETIMEUNIT reso=?
- )
- cdef void pydatetime_to_dtstruct(datetime dt, npy_datetimestruct *dts)
- cdef int64_t pydate_to_dt64(
- date val, npy_datetimestruct *dts, NPY_DATETIMEUNIT reso=?
- )
- cdef void pydate_to_dtstruct(date val, npy_datetimestruct *dts)
- cdef npy_datetime get_datetime64_value(object obj) nogil
- cdef npy_timedelta get_timedelta64_value(object obj) nogil
- cdef NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil
- cdef int string_to_dts(
- str val,
- npy_datetimestruct* dts,
- NPY_DATETIMEUNIT* out_bestunit,
- int* out_local,
- int* out_tzoffset,
- bint want_exc,
- format: str | None = *,
- bint exact = *
- ) except? -1
- cdef NPY_DATETIMEUNIT get_unit_from_dtype(cnp.dtype dtype)
- cpdef cnp.ndarray astype_overflowsafe(
- cnp.ndarray values, # ndarray[datetime64[anyunit]]
- cnp.dtype dtype, # ndarray[datetime64[anyunit]]
- bint copy=*,
- bint round_ok=*,
- bint is_coerce=*,
- )
- cdef int64_t get_conversion_factor(
- NPY_DATETIMEUNIT from_unit,
- NPY_DATETIMEUNIT to_unit,
- ) except? -1
- cdef bint cmp_dtstructs(npy_datetimestruct* left, npy_datetimestruct* right, int op)
- cdef get_implementation_bounds(
- NPY_DATETIMEUNIT reso, npy_datetimestruct *lower, npy_datetimestruct *upper
- )
- cdef int64_t convert_reso(
- int64_t value,
- NPY_DATETIMEUNIT from_reso,
- NPY_DATETIMEUNIT to_reso,
- bint round_ok,
- ) except? -1
- cdef extern from "src/datetime/np_datetime_strings.h":
- ctypedef enum FormatRequirement:
- PARTIAL_MATCH
- EXACT_MATCH
- INFER_FORMAT
|