forked from lxml/lxml
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpython.pxd
More file actions
181 lines (149 loc) · 6.46 KB
/
Copy pathpython.pxd
File metadata and controls
181 lines (149 loc) · 6.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
from libc cimport stdio
from libc.string cimport const_char
cimport cython
cdef extern from "Python.h":
"""
#if defined(Py_LIMITED_API)
#define LXML_IN_LIMITED_API 1
#else
#define LXML_IN_LIMITED_API 0
#endif
#if defined(Py_LIMITED_API) || PY_VERSION_HEX >= 0x030C0000
#undef PyUnicode_IS_READY
#define PyUnicode_IS_READY(s) (1)
#undef PyUnicode_READY
#define PyUnicode_READY(s) (0)
#undef PyUnicode_AS_DATA
#define PyUnicode_AS_DATA(s) (0)
#undef PyUnicode_GET_DATA_SIZE
#define PyUnicode_GET_DATA_SIZE(s) (0)
#undef PyUnicode_GET_SIZE
#define PyUnicode_GET_SIZE(s) (0)
#endif
#if defined(Py_LIMITED_API)
#undef PyUnicode_MAX_CHAR_VALUE
#define PyUnicode_MAX_CHAR_VALUE(s) (0)
#undef PyUnicode_GET_LENGTH
#define PyUnicode_GET_LENGTH(s) (0)
#undef PyUnicode_KIND
#define PyUnicode_KIND(s) (0)
#undef PyUnicode_DATA
#define PyUnicode_DATA(s) (0)
#endif
#if !defined(Py_mod_gil) && (PY_VERSION_HEX < 0x030d0000 || defined(Py_LIMITED_API) && Py_LIMITED_API < 0x030d0000)
#define Py_mod_gil 4
#define Py_MOD_GIL_USED NULL
#define Py_MOD_GIL_NOT_USED NULL
#endif
"""
ctypedef struct PyObject
cdef const Py_ssize_t PY_SSIZE_T_MIN
cdef const Py_ssize_t PY_SSIZE_T_MAX
cdef const int PY_VERSION_HEX
cdef const bint IN_LIMITED_API "LXML_IN_LIMITED_API"
cdef bint PY_BIG_ENDIAN
cdef bint PY_LITTLE_ENDIAN
cdef void Py_INCREF(object o)
cdef void Py_DECREF(object o)
cdef void Py_XDECREF(PyObject* o)
cdef stdio.FILE* PyFile_AsFile(object p)
# PEP 393
cdef bint PyUnicode_IS_READY(object u)
cdef Py_ssize_t PyUnicode_GET_LENGTH(object u)
cdef int PyUnicode_KIND(object u)
cdef void* PyUnicode_DATA(object u)
cdef bytes PyUnicode_AsEncodedString(object u, char* encoding,
char* errors)
cdef cython.unicode PyUnicode_FromFormat(char* format, ...) # Python 3
cdef cython.unicode PyUnicode_Decode(char* s, Py_ssize_t size,
char* encoding, char* errors)
cdef cython.unicode PyUnicode_DecodeUTF8(char* s, Py_ssize_t size, char* errors)
cdef cython.unicode PyUnicode_DecodeLatin1(char* s, Py_ssize_t size, char* errors)
cdef object PyUnicode_RichCompare(object o1, object o2, int op)
cdef bytes PyUnicode_AsUTF8String(object ustring)
cdef bytes PyUnicode_AsASCIIString(object ustring)
cdef char* PyUnicode_AS_DATA(object ustring)
cdef Py_ssize_t PyUnicode_GET_DATA_SIZE(object ustring)
cdef Py_ssize_t PyUnicode_GET_SIZE(object ustring)
cdef Py_UCS4 PyUnicode_MAX_CHAR_VALUE(object ustring)
cdef bytes PyBytes_FromStringAndSize(char* s, Py_ssize_t size)
cdef bytes PyBytes_FromFormat(char* format, ...)
cdef Py_ssize_t PyBytes_GET_SIZE(object s)
cdef object PyNumber_Int(object value)
cdef Py_ssize_t PyTuple_GET_SIZE(object t)
cdef object PyTuple_GET_ITEM(object o, Py_ssize_t pos)
cdef object PyList_New(Py_ssize_t index)
cdef Py_ssize_t PyList_GET_SIZE(object l)
cdef object PyList_GET_ITEM(object l, Py_ssize_t index)
cdef void PyList_SET_ITEM(object l, Py_ssize_t index, object value)
cdef int PyList_Insert(object l, Py_ssize_t index, object o) except -1
cdef object PyList_AsTuple(object l)
cdef PyObject* PyDict_GetItemString(object d, char* key)
cdef PyObject* PyDict_GetItem(object d, object key)
cdef PyObject* PyDict_GetItemWithError(object d, object key) except? NULL
cdef object PyDictProxy_New(object d)
cdef object PySequence_List(object o)
cdef object PySequence_Tuple(object o)
cdef bint PyNumber_Check(object instance)
cdef bint PySequence_Check(object instance)
cdef bint PyType_Check(object instance)
cdef bint PyTuple_CheckExact(object instance)
cdef bint PyIndex_Check(object instance)
cdef int PySlice_GetIndicesEx(
object slice, Py_ssize_t length,
Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
Py_ssize_t *slicelength) except -1
cdef object PyObject_RichCompare(object o1, object o2, int op)
PyObject* PyWeakref_NewRef(object ob, PyObject* callback) except NULL # used for PyPy only
object PyWeakref_LockObject(PyObject* ob) # PyPy only
cdef void* PyMem_Malloc(size_t size)
cdef void* PyMem_Realloc(void* p, size_t size)
cdef void PyMem_Free(void* p)
const int Py_mod_gil
const void* Py_MOD_GIL_USED
const void* Py_MOD_GIL_NOT_USED
ctypedef struct PyModuleDef_Slot:
int slot
void* value
ctypedef struct PyModuleDef:
PyModuleDef_Slot* m_slots
cdef PyModuleDef* PyModule_GetDef(object module) except? NULL
# always returns NULL to pass on the exception
cdef object PyErr_SetFromErrno(object type)
cdef void PyException_SetContext(object exception, object context)
cdef PyObject* PyException_GetContext(object exception)
cdef PyObject* PyThreadState_GetDict()
# some handy functions
cdef const char* _cstr "__Pyx_PyBytes_AsString" (object s)
cdef const char* __cstr "__Pyx_PyBytes_AsString" (PyObject* s)
# Py_buffer related flags
cdef const int PyBUF_SIMPLE
cdef const int PyBUF_WRITABLE
cdef const int PyBUF_LOCK
cdef const int PyBUF_FORMAT
cdef const int PyBUF_ND
cdef const int PyBUF_STRIDES
cdef const int PyBUF_C_CONTIGUOUS
cdef const int PyBUF_F_CONTIGUOUS
cdef const int PyBUF_ANY_CONTIGUOUS
cdef const int PyBUF_INDIRECT
cdef extern from "pythread.h":
ctypedef void* PyThread_type_lock
cdef PyThread_type_lock PyThread_allocate_lock()
cdef void PyThread_free_lock(PyThread_type_lock lock)
cdef int PyThread_acquire_lock(PyThread_type_lock lock, int mode) nogil
cdef void PyThread_release_lock(PyThread_type_lock lock) nogil
cdef unsigned long PyThread_get_thread_ident()
ctypedef enum __WaitLock:
WAIT_LOCK
NOWAIT_LOCK
cdef extern from "etree_defs.h": # redefines some functions as macros
cdef void* lxml_malloc(size_t count, size_t item_size)
cdef void* lxml_realloc(void* mem, size_t count, size_t item_size)
cdef void lxml_free(void* mem)
cdef void* lxml_unpack_xmldoc_capsule(object capsule, bint* is_owned) except? NULL
cdef bint _isString(object obj)
cdef str _typename "__lxml_typename" (object t)
cdef str _fqtypename "__lxml_fqtypename" (object t)
cdef bint IS_PYPY
cdef object PyOS_FSPath(object obj)