Cython 3.2.0__cp39-abi3-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Cython/Build/BuildExecutable.py +169 -0
- Cython/Build/Cache.py +199 -0
- Cython/Build/Cythonize.py +350 -0
- Cython/Build/Dependencies.py +1314 -0
- Cython/Build/Distutils.py +1 -0
- Cython/Build/Inline.py +463 -0
- Cython/Build/IpythonMagic.py +560 -0
- Cython/Build/SharedModule.py +94 -0
- Cython/Build/Tests/TestCyCache.py +194 -0
- Cython/Build/Tests/TestCythonizeArgsParser.py +481 -0
- Cython/Build/Tests/TestDependencies.py +133 -0
- Cython/Build/Tests/TestInline.py +177 -0
- Cython/Build/Tests/TestIpythonMagic.py +287 -0
- Cython/Build/Tests/TestRecythonize.py +212 -0
- Cython/Build/Tests/TestStripLiterals.py +155 -0
- Cython/Build/Tests/__init__.py +1 -0
- Cython/Build/__init__.py +11 -0
- Cython/CodeWriter.py +815 -0
- Cython/Compiler/AnalysedTreeTransforms.py +97 -0
- Cython/Compiler/Annotate.py +328 -0
- Cython/Compiler/AutoDocTransforms.py +320 -0
- Cython/Compiler/Buffer.py +680 -0
- Cython/Compiler/Builtin.py +984 -0
- Cython/Compiler/CmdLine.py +263 -0
- Cython/Compiler/Code.pxd +149 -0
- Cython/Compiler/Code.py +3746 -0
- Cython/Compiler/Code.pyd +0 -0
- Cython/Compiler/CodeGeneration.py +33 -0
- Cython/Compiler/CythonScope.py +191 -0
- Cython/Compiler/Dataclass.py +864 -0
- Cython/Compiler/DebugFlags.py +24 -0
- Cython/Compiler/Errors.py +297 -0
- Cython/Compiler/ExprNodes.py +15562 -0
- Cython/Compiler/FlowControl.pxd +97 -0
- Cython/Compiler/FlowControl.py +1451 -0
- Cython/Compiler/FlowControl.pyd +0 -0
- Cython/Compiler/FusedNode.py +971 -0
- Cython/Compiler/FusedNode.pyd +0 -0
- Cython/Compiler/Future.py +16 -0
- Cython/Compiler/Interpreter.py +57 -0
- Cython/Compiler/Lexicon.py +421 -0
- Cython/Compiler/LineTable.py +114 -0
- Cython/Compiler/LineTable.pyd +0 -0
- Cython/Compiler/Main.py +857 -0
- Cython/Compiler/MatchCaseNodes.py +259 -0
- Cython/Compiler/MemoryView.py +905 -0
- Cython/Compiler/ModuleNode.py +4235 -0
- Cython/Compiler/Naming.py +363 -0
- Cython/Compiler/Nodes.py +10831 -0
- Cython/Compiler/Optimize.py +5288 -0
- Cython/Compiler/Options.py +843 -0
- Cython/Compiler/ParseTreeTransforms.pxd +78 -0
- Cython/Compiler/ParseTreeTransforms.py +4638 -0
- Cython/Compiler/Parsing.pxd +9 -0
- Cython/Compiler/Parsing.py +4775 -0
- Cython/Compiler/Parsing.pyd +0 -0
- Cython/Compiler/Pipeline.py +439 -0
- Cython/Compiler/PyrexTypes.py +5870 -0
- Cython/Compiler/Pythran.py +232 -0
- Cython/Compiler/Scanning.pxd +48 -0
- Cython/Compiler/Scanning.py +701 -0
- Cython/Compiler/Scanning.pyd +0 -0
- Cython/Compiler/StringEncoding.py +298 -0
- Cython/Compiler/Symtab.py +3073 -0
- Cython/Compiler/Tests/TestBuffer.py +105 -0
- Cython/Compiler/Tests/TestBuiltin.py +72 -0
- Cython/Compiler/Tests/TestCmdLine.py +586 -0
- Cython/Compiler/Tests/TestCode.py +144 -0
- Cython/Compiler/Tests/TestFlowControl.py +65 -0
- Cython/Compiler/Tests/TestGrammar.py +202 -0
- Cython/Compiler/Tests/TestMemView.py +71 -0
- Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
- Cython/Compiler/Tests/TestScanning.py +134 -0
- Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
- Cython/Compiler/Tests/TestStringEncoding.py +21 -0
- Cython/Compiler/Tests/TestTreeFragment.py +63 -0
- Cython/Compiler/Tests/TestTreePath.py +103 -0
- Cython/Compiler/Tests/TestTypes.py +75 -0
- Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
- Cython/Compiler/Tests/TestVisitor.py +61 -0
- Cython/Compiler/Tests/Utils.py +36 -0
- Cython/Compiler/Tests/__init__.py +1 -0
- Cython/Compiler/TreeFragment.py +278 -0
- Cython/Compiler/TreePath.py +303 -0
- Cython/Compiler/TypeInference.py +591 -0
- Cython/Compiler/TypeSlots.py +1174 -0
- Cython/Compiler/UFuncs.py +311 -0
- Cython/Compiler/UtilNodes.py +389 -0
- Cython/Compiler/UtilityCode.py +344 -0
- Cython/Compiler/Version.py +8 -0
- Cython/Compiler/Visitor.pxd +53 -0
- Cython/Compiler/Visitor.py +861 -0
- Cython/Compiler/Visitor.pyd +0 -0
- Cython/Compiler/__init__.py +1 -0
- Cython/Coverage.py +448 -0
- Cython/Debugger/Cygdb.py +177 -0
- Cython/Debugger/DebugWriter.py +82 -0
- Cython/Debugger/Tests/TestLibCython.py +275 -0
- Cython/Debugger/Tests/__init__.py +1 -0
- Cython/Debugger/Tests/cfuncs.c +8 -0
- Cython/Debugger/Tests/codefile +49 -0
- Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
- Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
- Cython/Debugger/__init__.py +1 -0
- Cython/Debugger/libcython.py +1548 -0
- Cython/Debugger/libpython.py +2821 -0
- Cython/Debugging.py +20 -0
- Cython/Distutils/__init__.py +2 -0
- Cython/Distutils/build_ext.py +139 -0
- Cython/Distutils/extension.py +96 -0
- Cython/Distutils/old_build_ext.py +351 -0
- Cython/Includes/cpython/__init__.pxd +173 -0
- Cython/Includes/cpython/array.pxd +178 -0
- Cython/Includes/cpython/bool.pxd +37 -0
- Cython/Includes/cpython/buffer.pxd +112 -0
- Cython/Includes/cpython/bytearray.pxd +33 -0
- Cython/Includes/cpython/bytes.pxd +200 -0
- Cython/Includes/cpython/cellobject.pxd +35 -0
- Cython/Includes/cpython/ceval.pxd +8 -0
- Cython/Includes/cpython/codecs.pxd +121 -0
- Cython/Includes/cpython/complex.pxd +60 -0
- Cython/Includes/cpython/contextvars.pxd +145 -0
- Cython/Includes/cpython/conversion.pxd +36 -0
- Cython/Includes/cpython/datetime.pxd +395 -0
- Cython/Includes/cpython/descr.pxd +26 -0
- Cython/Includes/cpython/dict.pxd +187 -0
- Cython/Includes/cpython/exc.pxd +263 -0
- Cython/Includes/cpython/fileobject.pxd +57 -0
- Cython/Includes/cpython/float.pxd +47 -0
- Cython/Includes/cpython/function.pxd +65 -0
- Cython/Includes/cpython/genobject.pxd +25 -0
- Cython/Includes/cpython/getargs.pxd +12 -0
- Cython/Includes/cpython/instance.pxd +25 -0
- Cython/Includes/cpython/iterator.pxd +36 -0
- Cython/Includes/cpython/iterobject.pxd +24 -0
- Cython/Includes/cpython/list.pxd +92 -0
- Cython/Includes/cpython/long.pxd +149 -0
- Cython/Includes/cpython/longintrepr.pxd +14 -0
- Cython/Includes/cpython/mapping.pxd +63 -0
- Cython/Includes/cpython/marshal.pxd +66 -0
- Cython/Includes/cpython/mem.pxd +120 -0
- Cython/Includes/cpython/memoryview.pxd +50 -0
- Cython/Includes/cpython/method.pxd +49 -0
- Cython/Includes/cpython/module.pxd +208 -0
- Cython/Includes/cpython/number.pxd +258 -0
- Cython/Includes/cpython/object.pxd +433 -0
- Cython/Includes/cpython/pycapsule.pxd +143 -0
- Cython/Includes/cpython/pylifecycle.pxd +68 -0
- Cython/Includes/cpython/pyport.pxd +8 -0
- Cython/Includes/cpython/pystate.pxd +95 -0
- Cython/Includes/cpython/pythread.pxd +53 -0
- Cython/Includes/cpython/ref.pxd +141 -0
- Cython/Includes/cpython/sequence.pxd +134 -0
- Cython/Includes/cpython/set.pxd +119 -0
- Cython/Includes/cpython/slice.pxd +70 -0
- Cython/Includes/cpython/time.pxd +129 -0
- Cython/Includes/cpython/tuple.pxd +72 -0
- Cython/Includes/cpython/type.pxd +53 -0
- Cython/Includes/cpython/unicode.pxd +639 -0
- Cython/Includes/cpython/version.pxd +32 -0
- Cython/Includes/cpython/weakref.pxd +78 -0
- Cython/Includes/libc/__init__.pxd +1 -0
- Cython/Includes/libc/complex.pxd +35 -0
- Cython/Includes/libc/errno.pxd +127 -0
- Cython/Includes/libc/float.pxd +43 -0
- Cython/Includes/libc/limits.pxd +28 -0
- Cython/Includes/libc/locale.pxd +46 -0
- Cython/Includes/libc/math.pxd +209 -0
- Cython/Includes/libc/setjmp.pxd +10 -0
- Cython/Includes/libc/signal.pxd +64 -0
- Cython/Includes/libc/stddef.pxd +9 -0
- Cython/Includes/libc/stdint.pxd +105 -0
- Cython/Includes/libc/stdio.pxd +80 -0
- Cython/Includes/libc/stdlib.pxd +72 -0
- Cython/Includes/libc/string.pxd +50 -0
- Cython/Includes/libc/threads.pxd +234 -0
- Cython/Includes/libc/time.pxd +52 -0
- Cython/Includes/libcpp/__init__.pxd +4 -0
- Cython/Includes/libcpp/algorithm.pxd +320 -0
- Cython/Includes/libcpp/any.pxd +16 -0
- Cython/Includes/libcpp/atomic.pxd +59 -0
- Cython/Includes/libcpp/barrier.pxd +22 -0
- Cython/Includes/libcpp/bit.pxd +29 -0
- Cython/Includes/libcpp/cast.pxd +12 -0
- Cython/Includes/libcpp/cmath.pxd +518 -0
- Cython/Includes/libcpp/complex.pxd +106 -0
- Cython/Includes/libcpp/condition_variable.pxd +322 -0
- Cython/Includes/libcpp/deque.pxd +165 -0
- Cython/Includes/libcpp/exception.pxd +86 -0
- Cython/Includes/libcpp/execution.pxd +15 -0
- Cython/Includes/libcpp/forward_list.pxd +63 -0
- Cython/Includes/libcpp/functional.pxd +26 -0
- Cython/Includes/libcpp/future.pxd +103 -0
- Cython/Includes/libcpp/iterator.pxd +34 -0
- Cython/Includes/libcpp/latch.pxd +17 -0
- Cython/Includes/libcpp/limits.pxd +61 -0
- Cython/Includes/libcpp/list.pxd +117 -0
- Cython/Includes/libcpp/map.pxd +252 -0
- Cython/Includes/libcpp/memory.pxd +115 -0
- Cython/Includes/libcpp/mutex.pxd +387 -0
- Cython/Includes/libcpp/numbers.pxd +15 -0
- Cython/Includes/libcpp/numeric.pxd +131 -0
- Cython/Includes/libcpp/optional.pxd +34 -0
- Cython/Includes/libcpp/pair.pxd +1 -0
- Cython/Includes/libcpp/queue.pxd +25 -0
- Cython/Includes/libcpp/random.pxd +166 -0
- Cython/Includes/libcpp/semaphore.pxd +43 -0
- Cython/Includes/libcpp/set.pxd +228 -0
- Cython/Includes/libcpp/shared_mutex.pxd +96 -0
- Cython/Includes/libcpp/span.pxd +87 -0
- Cython/Includes/libcpp/stack.pxd +11 -0
- Cython/Includes/libcpp/stop_token.pxd +117 -0
- Cython/Includes/libcpp/string.pxd +355 -0
- Cython/Includes/libcpp/string_view.pxd +183 -0
- Cython/Includes/libcpp/typeindex.pxd +15 -0
- Cython/Includes/libcpp/typeinfo.pxd +10 -0
- Cython/Includes/libcpp/unordered_map.pxd +193 -0
- Cython/Includes/libcpp/unordered_set.pxd +152 -0
- Cython/Includes/libcpp/utility.pxd +30 -0
- Cython/Includes/libcpp/vector.pxd +186 -0
- Cython/Includes/numpy/math.pxd +150 -0
- Cython/Includes/openmp.pxd +50 -0
- Cython/Includes/posix/__init__.pxd +1 -0
- Cython/Includes/posix/dlfcn.pxd +14 -0
- Cython/Includes/posix/fcntl.pxd +86 -0
- Cython/Includes/posix/ioctl.pxd +4 -0
- Cython/Includes/posix/mman.pxd +101 -0
- Cython/Includes/posix/resource.pxd +57 -0
- Cython/Includes/posix/select.pxd +21 -0
- Cython/Includes/posix/signal.pxd +73 -0
- Cython/Includes/posix/stat.pxd +98 -0
- Cython/Includes/posix/stdio.pxd +37 -0
- Cython/Includes/posix/stdlib.pxd +29 -0
- Cython/Includes/posix/strings.pxd +9 -0
- Cython/Includes/posix/time.pxd +71 -0
- Cython/Includes/posix/types.pxd +30 -0
- Cython/Includes/posix/uio.pxd +26 -0
- Cython/Includes/posix/unistd.pxd +271 -0
- Cython/Includes/posix/wait.pxd +38 -0
- Cython/Plex/Actions.pxd +24 -0
- Cython/Plex/Actions.py +119 -0
- Cython/Plex/Actions.pyd +0 -0
- Cython/Plex/DFA.pxd +14 -0
- Cython/Plex/DFA.py +164 -0
- Cython/Plex/DFA.pyd +0 -0
- Cython/Plex/Errors.py +48 -0
- Cython/Plex/Lexicons.py +178 -0
- Cython/Plex/Machines.pxd +36 -0
- Cython/Plex/Machines.py +238 -0
- Cython/Plex/Machines.pyd +0 -0
- Cython/Plex/Regexps.py +535 -0
- Cython/Plex/Scanners.pxd +45 -0
- Cython/Plex/Scanners.py +328 -0
- Cython/Plex/Scanners.pyd +0 -0
- Cython/Plex/Transitions.pxd +14 -0
- Cython/Plex/Transitions.py +239 -0
- Cython/Plex/Transitions.pyd +0 -0
- Cython/Plex/__init__.py +34 -0
- Cython/Runtime/__init__.py +1 -0
- Cython/Runtime/refnanny.pyd +0 -0
- Cython/Runtime/refnanny.pyx +237 -0
- Cython/Shadow.py +690 -0
- Cython/Shadow.pyi +521 -0
- Cython/StringIOTree.py +170 -0
- Cython/StringIOTree.pyd +0 -0
- Cython/Tempita/__init__.py +4 -0
- Cython/Tempita/_looper.py +154 -0
- Cython/Tempita/_tempita.py +1091 -0
- Cython/Tempita/_tempita.pyd +0 -0
- Cython/TestUtils.py +422 -0
- Cython/Tests/TestCodeWriter.py +128 -0
- Cython/Tests/TestCythonUtils.py +202 -0
- Cython/Tests/TestJediTyper.py +223 -0
- Cython/Tests/TestShadow.py +114 -0
- Cython/Tests/TestStringIOTree.py +67 -0
- Cython/Tests/TestTestUtils.py +90 -0
- Cython/Tests/__init__.py +1 -0
- Cython/Tests/xmlrunner.py +390 -0
- Cython/Utility/AsyncGen.c +1031 -0
- Cython/Utility/Buffer.c +865 -0
- Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
- Cython/Utility/Builtins.c +810 -0
- Cython/Utility/CConvert.pyx +134 -0
- Cython/Utility/CMath.c +104 -0
- Cython/Utility/CommonStructures.c +226 -0
- Cython/Utility/Complex.c +378 -0
- Cython/Utility/Coroutine.c +2300 -0
- Cython/Utility/CpdefEnums.pyx +103 -0
- Cython/Utility/CppConvert.pyx +282 -0
- Cython/Utility/CppSupport.cpp +151 -0
- Cython/Utility/CythonFunction.c +1832 -0
- Cython/Utility/Dataclasses.c +101 -0
- Cython/Utility/Embed.c +121 -0
- Cython/Utility/Exceptions.c +1016 -0
- Cython/Utility/ExtensionTypes.c +996 -0
- Cython/Utility/FunctionArguments.c +1043 -0
- Cython/Utility/FusedFunction.pyx +44 -0
- Cython/Utility/ImportExport.c +907 -0
- Cython/Utility/MemoryView.pxd +188 -0
- Cython/Utility/MemoryView.pyx +1482 -0
- Cython/Utility/MemoryView_C.c +927 -0
- Cython/Utility/ModuleSetupCode.c +3203 -0
- Cython/Utility/NumpyImportArray.c +46 -0
- Cython/Utility/ObjectHandling.c +3273 -0
- Cython/Utility/Optimize.c +1603 -0
- Cython/Utility/Overflow.c +384 -0
- Cython/Utility/Printing.c +86 -0
- Cython/Utility/Profile.c +732 -0
- Cython/Utility/StringTools.c +1379 -0
- Cython/Utility/Synchronization.c +399 -0
- Cython/Utility/TString.c +356 -0
- Cython/Utility/TestCyUtilityLoader.pyx +8 -0
- Cython/Utility/TestCythonScope.pyx +75 -0
- Cython/Utility/TestUtilityLoader.c +12 -0
- Cython/Utility/TypeConversion.c +1385 -0
- Cython/Utility/UFuncs.pyx +50 -0
- Cython/Utility/UFuncs_C.c +89 -0
- Cython/Utility/__init__.py +28 -0
- Cython/Utility/arrayarray.h +167 -0
- Cython/Utils.py +687 -0
- Cython/Utils.pyd +0 -0
- Cython/__init__.py +10 -0
- Cython/__init__.pyi +7 -0
- Cython/py.typed +0 -0
- cython-3.2.0.dist-info/METADATA +85 -0
- cython-3.2.0.dist-info/RECORD +333 -0
- cython-3.2.0.dist-info/WHEEL +5 -0
- cython-3.2.0.dist-info/entry_points.txt +4 -0
- cython-3.2.0.dist-info/top_level.txt +3 -0
- cython.py +29 -0
- pyximport/__init__.py +4 -0
- pyximport/pyxbuild.py +160 -0
- pyximport/pyximport.py +482 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Thread and interpreter state structures and their interfaces
|
|
2
|
+
|
|
3
|
+
from .object cimport PyObject
|
|
4
|
+
|
|
5
|
+
cdef extern from "Python.h":
|
|
6
|
+
|
|
7
|
+
# We make these an opaque types. If the user wants specific attributes,
|
|
8
|
+
# they can be declared manually.
|
|
9
|
+
|
|
10
|
+
ctypedef long PY_INT64_T # FIXME: Py2.7+, not defined here but used here
|
|
11
|
+
|
|
12
|
+
ctypedef struct PyInterpreterState:
|
|
13
|
+
pass
|
|
14
|
+
|
|
15
|
+
ctypedef struct PyThreadState:
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
ctypedef struct PyFrameObject:
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
# This is not actually a struct, but make sure it can never be coerced to
|
|
22
|
+
# an int or used in arithmetic expressions
|
|
23
|
+
ctypedef struct PyGILState_STATE:
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
# The type of the trace function registered using PyEval_SetProfile() and
|
|
27
|
+
# PyEval_SetTrace().
|
|
28
|
+
# Py_tracefunc return -1 when raising an exception, or 0 for success.
|
|
29
|
+
ctypedef int (*Py_tracefunc)(PyObject *, PyFrameObject *, int, PyObject *)
|
|
30
|
+
|
|
31
|
+
# The following values are used for 'what' for tracefunc functions
|
|
32
|
+
enum:
|
|
33
|
+
PyTrace_CALL
|
|
34
|
+
PyTrace_EXCEPTION
|
|
35
|
+
PyTrace_LINE
|
|
36
|
+
PyTrace_RETURN
|
|
37
|
+
PyTrace_C_CALL
|
|
38
|
+
PyTrace_C_EXCEPTION
|
|
39
|
+
PyTrace_C_RETURN
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
PyInterpreterState * PyInterpreterState_New()
|
|
43
|
+
void PyInterpreterState_Clear(PyInterpreterState *)
|
|
44
|
+
void PyInterpreterState_Delete(PyInterpreterState *)
|
|
45
|
+
PY_INT64_T PyInterpreterState_GetID(PyInterpreterState *)
|
|
46
|
+
|
|
47
|
+
PyThreadState * PyThreadState_New(PyInterpreterState *)
|
|
48
|
+
void PyThreadState_Clear(PyThreadState *)
|
|
49
|
+
void PyThreadState_Delete(PyThreadState *)
|
|
50
|
+
|
|
51
|
+
PyThreadState * PyThreadState_Get()
|
|
52
|
+
PyThreadState * PyThreadState_Swap(PyThreadState *) # NOTE: DO NOT USE IN CYTHON CODE !
|
|
53
|
+
PyObject * PyThreadState_GetDict()
|
|
54
|
+
int PyThreadState_SetAsyncExc(long, PyObject *)
|
|
55
|
+
|
|
56
|
+
# Ensure that the current thread is ready to call the Python
|
|
57
|
+
# C API, regardless of the current state of Python, or of its
|
|
58
|
+
# thread lock. This may be called as many times as desired
|
|
59
|
+
# by a thread so long as each call is matched with a call to
|
|
60
|
+
# PyGILState_Release(). In general, other thread-state APIs may
|
|
61
|
+
# be used between _Ensure() and _Release() calls, so long as the
|
|
62
|
+
# thread-state is restored to its previous state before the Release().
|
|
63
|
+
# For example, normal use of the Py_BEGIN_ALLOW_THREADS/
|
|
64
|
+
# Py_END_ALLOW_THREADS macros are acceptable.
|
|
65
|
+
|
|
66
|
+
# The return value is an opaque "handle" to the thread state when
|
|
67
|
+
# PyGILState_Ensure() was called, and must be passed to
|
|
68
|
+
# PyGILState_Release() to ensure Python is left in the same state. Even
|
|
69
|
+
# though recursive calls are allowed, these handles can *not* be shared -
|
|
70
|
+
# each unique call to PyGILState_Ensure must save the handle for its
|
|
71
|
+
# call to PyGILState_Release.
|
|
72
|
+
|
|
73
|
+
# When the function returns, the current thread will hold the GIL.
|
|
74
|
+
|
|
75
|
+
# Failure is a fatal error.
|
|
76
|
+
PyGILState_STATE PyGILState_Ensure()
|
|
77
|
+
|
|
78
|
+
# Release any resources previously acquired. After this call, Python's
|
|
79
|
+
# state will be the same as it was prior to the corresponding
|
|
80
|
+
# PyGILState_Ensure() call (but generally this state will be unknown to
|
|
81
|
+
# the caller, hence the use of the GILState API.)
|
|
82
|
+
|
|
83
|
+
# Every call to PyGILState_Ensure must be matched by a call to
|
|
84
|
+
# PyGILState_Release on the same thread.
|
|
85
|
+
void PyGILState_Release(PyGILState_STATE)
|
|
86
|
+
|
|
87
|
+
# Return 1 if the current thread holds the GIL and 0 otherwise.
|
|
88
|
+
int PyGILState_Check()
|
|
89
|
+
|
|
90
|
+
# Routines for advanced debuggers, requested by David Beazley.
|
|
91
|
+
# Don't use unless you know what you are doing!
|
|
92
|
+
PyInterpreterState * PyInterpreterState_Head()
|
|
93
|
+
PyInterpreterState * PyInterpreterState_Next(PyInterpreterState *)
|
|
94
|
+
PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *)
|
|
95
|
+
PyThreadState * PyThreadState_Next(PyThreadState *)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
cdef extern from "pythread.h":
|
|
4
|
+
|
|
5
|
+
ctypedef void *PyThread_type_lock
|
|
6
|
+
ctypedef void *PyThread_type_sema
|
|
7
|
+
|
|
8
|
+
void PyThread_init_thread()
|
|
9
|
+
long PyThread_start_new_thread(void (*)(void *), void *) # FIXME: legacy
|
|
10
|
+
#unsigned long PyThread_start_new_thread(void (*)(void *), void *) # returned 'long' before Py3.7
|
|
11
|
+
void PyThread_exit_thread()
|
|
12
|
+
long PyThread_get_thread_ident() # FIXME: legacy
|
|
13
|
+
#unsigned long PyThread_get_thread_ident() # returned 'long' before Py3.7
|
|
14
|
+
|
|
15
|
+
PyThread_type_lock PyThread_allocate_lock()
|
|
16
|
+
void PyThread_free_lock(PyThread_type_lock)
|
|
17
|
+
int PyThread_acquire_lock(PyThread_type_lock, int mode) nogil
|
|
18
|
+
void PyThread_release_lock(PyThread_type_lock) nogil
|
|
19
|
+
|
|
20
|
+
enum:
|
|
21
|
+
# 'mode' in PyThread_acquire_lock()
|
|
22
|
+
WAIT_LOCK # 1
|
|
23
|
+
NOWAIT_LOCK # 0
|
|
24
|
+
|
|
25
|
+
ctypedef enum PyLockStatus:
|
|
26
|
+
# return values of PyThread_acquire_lock() in CPython 3.2+
|
|
27
|
+
PY_LOCK_FAILURE = 0
|
|
28
|
+
PY_LOCK_ACQUIRED = 1
|
|
29
|
+
PY_LOCK_INTR
|
|
30
|
+
|
|
31
|
+
size_t PyThread_get_stacksize()
|
|
32
|
+
int PyThread_set_stacksize(size_t)
|
|
33
|
+
|
|
34
|
+
# Thread Local Storage (TLS) API deprecated in CPython 3.7+
|
|
35
|
+
int PyThread_create_key()
|
|
36
|
+
void PyThread_delete_key(int)
|
|
37
|
+
int PyThread_set_key_value(int, void *)
|
|
38
|
+
void * PyThread_get_key_value(int)
|
|
39
|
+
void PyThread_delete_key_value(int key)
|
|
40
|
+
|
|
41
|
+
# Cleanup after a fork
|
|
42
|
+
void PyThread_ReInitTLS()
|
|
43
|
+
|
|
44
|
+
# Thread Specific Storage (TSS) API in CPython 3.7+ (also backported)
|
|
45
|
+
#ctypedef struct Py_tss_t: pass # Cython built-in type
|
|
46
|
+
Py_tss_t Py_tss_NEEDS_INIT # Not normally useful: Cython auto-initialises declared "Py_tss_t" variables.
|
|
47
|
+
Py_tss_t * PyThread_tss_alloc()
|
|
48
|
+
void PyThread_tss_free(Py_tss_t *key)
|
|
49
|
+
int PyThread_tss_is_created(Py_tss_t *key)
|
|
50
|
+
int PyThread_tss_create(Py_tss_t *key)
|
|
51
|
+
void PyThread_tss_delete(Py_tss_t *key)
|
|
52
|
+
int PyThread_tss_set(Py_tss_t *key, void *value)
|
|
53
|
+
void * PyThread_tss_get(Py_tss_t *key)
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
from .object cimport PyObject
|
|
2
|
+
from .object cimport PyTypeObject, Py_TYPE # legacy imports for re-export
|
|
3
|
+
|
|
4
|
+
cdef extern from "Python.h":
|
|
5
|
+
#####################################################################
|
|
6
|
+
# 3. Reference Counts
|
|
7
|
+
#####################################################################
|
|
8
|
+
# The macros in this section are used for managing reference counts of Python objects.
|
|
9
|
+
void Py_INCREF(object o)
|
|
10
|
+
# Increment the reference count for object o. The object must not
|
|
11
|
+
# be NULL; if you aren't sure that it isn't NULL, use
|
|
12
|
+
# Py_XINCREF().
|
|
13
|
+
|
|
14
|
+
void Py_XINCREF(PyObject* o)
|
|
15
|
+
# Increment the reference count for object o. The object may be NULL, in which case the macro has no effect.
|
|
16
|
+
|
|
17
|
+
void Py_DECREF(object o)
|
|
18
|
+
# Decrement the reference count for object o. The object must not
|
|
19
|
+
# be NULL; if you aren't sure that it isn't NULL, use
|
|
20
|
+
# Py_XDECREF(). If the reference count reaches zero, the object's
|
|
21
|
+
# type's deallocation function (which must not be NULL) is
|
|
22
|
+
# invoked.
|
|
23
|
+
|
|
24
|
+
# Warning: The deallocation function can cause arbitrary Python
|
|
25
|
+
# code to be invoked (e.g. when a class instance with a __del__()
|
|
26
|
+
# method is deallocated). While exceptions in such code are not
|
|
27
|
+
# propagated, the executed code has free access to all Python
|
|
28
|
+
# global variables. This means that any object that is reachable
|
|
29
|
+
# from a global variable should be in a consistent state before
|
|
30
|
+
# Py_DECREF() is invoked. For example, code to delete an object
|
|
31
|
+
# from a list should copy a reference to the deleted object in a
|
|
32
|
+
# temporary variable, update the list data structure, and then
|
|
33
|
+
# call Py_DECREF() for the temporary variable.
|
|
34
|
+
|
|
35
|
+
void Py_XDECREF(PyObject* o)
|
|
36
|
+
# Decrement the reference count for object o. The object may be
|
|
37
|
+
# NULL, in which case the macro has no effect; otherwise the
|
|
38
|
+
# effect is the same as for Py_DECREF(), and the same warning
|
|
39
|
+
# applies.
|
|
40
|
+
|
|
41
|
+
void Py_CLEAR(PyObject* o)
|
|
42
|
+
# Decrement the reference count for object o. The object may be
|
|
43
|
+
# NULL, in which case the macro has no effect; otherwise the
|
|
44
|
+
# effect is the same as for Py_DECREF(), except that the argument
|
|
45
|
+
# is also set to NULL. The warning for Py_DECREF() does not apply
|
|
46
|
+
# with respect to the object passed because the macro carefully
|
|
47
|
+
# uses a temporary variable and sets the argument to NULL before
|
|
48
|
+
# decrementing its reference count.
|
|
49
|
+
# It is a good idea to use this macro whenever decrementing the
|
|
50
|
+
# value of a variable that might be traversed during garbage
|
|
51
|
+
# collection.
|
|
52
|
+
|
|
53
|
+
Py_ssize_t Py_REFCNT(object o)
|
|
54
|
+
# Get the reference count of the Python object o.
|
|
55
|
+
|
|
56
|
+
# Note that the returned value may not actually reflect how many
|
|
57
|
+
# references to the object are actually held. For example, some
|
|
58
|
+
# objects are “immortal” and have a very high refcount that does not
|
|
59
|
+
# reflect the actual number of references. Consequently, do not rely
|
|
60
|
+
# on the returned value to be accurate, other than a value of 0 or
|
|
61
|
+
# 1.
|
|
62
|
+
|
|
63
|
+
Py_ssize_t _Py_REFCNT "Py_REFCNT" (PyObject *ptr)
|
|
64
|
+
# Get the reference count for the PyObject pointer ptr.
|
|
65
|
+
|
|
66
|
+
# This is useful when it would be awkward to create an owned reference just
|
|
67
|
+
# to get the reference count. See the note for Py_REFCNT above about the
|
|
68
|
+
# accuracy of reference counts.
|
|
69
|
+
|
|
70
|
+
int PyUnstable_Object_EnableDeferredRefcount(object o)
|
|
71
|
+
# Enable deferred reference counting on obj, if supported by the runtime.
|
|
72
|
+
# In the free-threaded build, this allows the interpreter to avoid reference count
|
|
73
|
+
# adjustments to obj, which may improve multi-threaded performance.
|
|
74
|
+
# The tradeoff is that obj will only be deallocated by the tracing garbage collector,
|
|
75
|
+
# and not when the interpreter no longer has any references to it.
|
|
76
|
+
#
|
|
77
|
+
# This function returns 1 if deferred reference counting is enabled on obj,
|
|
78
|
+
# and 0 if deferred reference counting is not supported or if the hint was ignored
|
|
79
|
+
# by the interpreter, such as when deferred reference counting is already enabled on obj.
|
|
80
|
+
# This function is thread-safe, and cannot fail.
|
|
81
|
+
#
|
|
82
|
+
# This function does nothing on builds with the GIL enabled, which do not support
|
|
83
|
+
# deferred reference counting. This also does nothing if obj is not an object tracked
|
|
84
|
+
# by the garbage collector (see gc.is_tracked() and PyObject_GC_IsTracked()).
|
|
85
|
+
#
|
|
86
|
+
# This function is intended to be used soon after obj is created, by the code
|
|
87
|
+
# that creates it, such as in the object’s tp_new slot.
|
|
88
|
+
#
|
|
89
|
+
# Added in CPython 3.14.
|
|
90
|
+
|
|
91
|
+
int PyUnstable_Object_IsUniqueReferencedTemporary(object o)
|
|
92
|
+
# Check if obj is a unique temporary object.
|
|
93
|
+
# Returns 1 if obj is known to be a unique temporary object, and 0 otherwise.
|
|
94
|
+
# This function cannot fail, but the check is conservative, and may return 0
|
|
95
|
+
# in some cases even if obj is a unique temporary object.
|
|
96
|
+
#
|
|
97
|
+
# If an object is a unique temporary, it is guaranteed that the current code
|
|
98
|
+
# has the only reference to the object. For arguments to C functions, this should
|
|
99
|
+
# be used instead of checking if the reference count is 1.
|
|
100
|
+
# Starting with Python 3.14, the interpreter internally avoids some reference count
|
|
101
|
+
# modifications when loading objects onto the operands stack by borrowing references
|
|
102
|
+
# when possible, which means that a reference count of 1 by itself does not guarantee
|
|
103
|
+
# that a function argument uniquely referenced.
|
|
104
|
+
#
|
|
105
|
+
# Added in CPython 3.14.
|
|
106
|
+
|
|
107
|
+
int PyUnstable_IsImmortal(object o)
|
|
108
|
+
# This function returns non-zero if obj is immortal, and zero otherwise.
|
|
109
|
+
# This function cannot fail.
|
|
110
|
+
#
|
|
111
|
+
# Added in CPython 3.14.
|
|
112
|
+
|
|
113
|
+
void PyUnstable_EnableTryIncRef(object o)
|
|
114
|
+
# Enables subsequent uses of PyUnstable_TryIncRef() on obj.
|
|
115
|
+
# The caller must hold a strong reference to obj when calling this.
|
|
116
|
+
#
|
|
117
|
+
# Added in CPython 3.14.
|
|
118
|
+
|
|
119
|
+
bint PyUnstable_TryIncRef(PyObject *o)
|
|
120
|
+
# Increments the reference count of obj if it is not zero.
|
|
121
|
+
# Returns 1 if the object’s reference count was successfully incremented.
|
|
122
|
+
# Otherwise, this function returns 0.
|
|
123
|
+
#
|
|
124
|
+
# PyUnstable_EnableTryIncRef() must have been called earlier on obj
|
|
125
|
+
# or this function may spuriously return 0 in the free threading build.
|
|
126
|
+
#
|
|
127
|
+
# Added in CPython 3.14.
|
|
128
|
+
|
|
129
|
+
int PyUnstable_Object_IsUniquelyReferenced(object o)
|
|
130
|
+
# Determine if op only has one reference.
|
|
131
|
+
#
|
|
132
|
+
# On GIL-enabled builds, this function is equivalent to Py_REFCNT(op) == 1.
|
|
133
|
+
#
|
|
134
|
+
# On a free threaded build, this checks if op’s reference count is equal
|
|
135
|
+
# to one and additionally checks if op is only used by this thread.
|
|
136
|
+
# Py_REFCNT(op) == 1 is not thread-safe on free threaded builds; prefer this function.
|
|
137
|
+
#
|
|
138
|
+
# The caller must hold an attached thread state, despite the fact that this function
|
|
139
|
+
# doesn’t call into the Python interpreter. This function cannot fail.
|
|
140
|
+
#
|
|
141
|
+
# Added in CPython 3.14.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
from .object cimport PyObject
|
|
2
|
+
|
|
3
|
+
cdef extern from "Python.h":
|
|
4
|
+
|
|
5
|
+
############################################################################
|
|
6
|
+
# 6.3 Sequence Protocol
|
|
7
|
+
############################################################################
|
|
8
|
+
|
|
9
|
+
bint PySequence_Check(object o)
|
|
10
|
+
# Return 1 if the object provides sequence protocol, and 0
|
|
11
|
+
# otherwise. This function always succeeds.
|
|
12
|
+
|
|
13
|
+
Py_ssize_t PySequence_Size(object o) except -1
|
|
14
|
+
# Returns the number of objects in sequence o on success, and -1
|
|
15
|
+
# on failure. For objects that do not provide sequence protocol,
|
|
16
|
+
# this is equivalent to the Python expression "len(o)".
|
|
17
|
+
|
|
18
|
+
Py_ssize_t PySequence_Length(object o) except -1
|
|
19
|
+
# Alternate name for PySequence_Size().
|
|
20
|
+
|
|
21
|
+
object PySequence_Concat(object o1, object o2)
|
|
22
|
+
# Return value: New reference.
|
|
23
|
+
# Return the concatenation of o1 and o2 on success, and NULL on
|
|
24
|
+
# failure. This is the equivalent of the Python expression "o1 +
|
|
25
|
+
# o2".
|
|
26
|
+
|
|
27
|
+
object PySequence_Repeat(object o, Py_ssize_t count)
|
|
28
|
+
# Return value: New reference.
|
|
29
|
+
# Return the result of repeating sequence object o count times, or
|
|
30
|
+
# NULL on failure. This is the equivalent of the Python expression
|
|
31
|
+
# "o * count".
|
|
32
|
+
|
|
33
|
+
object PySequence_InPlaceConcat(object o1, object o2)
|
|
34
|
+
# Return value: New reference.
|
|
35
|
+
# Return the concatenation of o1 and o2 on success, and NULL on
|
|
36
|
+
# failure. The operation is done in-place when o1 supports
|
|
37
|
+
# it. This is the equivalent of the Python expression "o1 += o2".
|
|
38
|
+
|
|
39
|
+
object PySequence_InPlaceRepeat(object o, Py_ssize_t count)
|
|
40
|
+
# Return value: New reference.
|
|
41
|
+
# Return the result of repeating sequence object o count times, or
|
|
42
|
+
# NULL on failure. The operation is done in-place when o supports
|
|
43
|
+
# it. This is the equivalent of the Python expression "o *=
|
|
44
|
+
# count".
|
|
45
|
+
|
|
46
|
+
object PySequence_GetItem(object o, Py_ssize_t i)
|
|
47
|
+
# Return value: New reference.
|
|
48
|
+
# Return the ith element of o, or NULL on failure. This is the
|
|
49
|
+
# equivalent of the Python expression "o[i]".
|
|
50
|
+
|
|
51
|
+
object PySequence_GetSlice(object o, Py_ssize_t i1, Py_ssize_t i2)
|
|
52
|
+
# Return value: New reference.
|
|
53
|
+
# Return the slice of sequence object o between i1 and i2, or NULL
|
|
54
|
+
# on failure. This is the equivalent of the Python expression
|
|
55
|
+
# "o[i1:i2]".
|
|
56
|
+
|
|
57
|
+
int PySequence_SetItem(object o, Py_ssize_t i, object v) except -1
|
|
58
|
+
# Assign object v to the ith element of o. Returns -1 on
|
|
59
|
+
# failure. This is the equivalent of the Python statement "o[i] =
|
|
60
|
+
# v". This function does not steal a reference to v.
|
|
61
|
+
|
|
62
|
+
int PySequence_DelItem(object o, Py_ssize_t i) except -1
|
|
63
|
+
# Delete the ith element of object o. Returns -1 on failure. This
|
|
64
|
+
# is the equivalent of the Python statement "del o[i]".
|
|
65
|
+
|
|
66
|
+
int PySequence_SetSlice(object o, Py_ssize_t i1, Py_ssize_t i2, object v) except -1
|
|
67
|
+
# Assign the sequence object v to the slice in sequence object o
|
|
68
|
+
# from i1 to i2. This is the equivalent of the Python statement
|
|
69
|
+
# "o[i1:i2] = v".
|
|
70
|
+
|
|
71
|
+
int PySequence_DelSlice(object o, Py_ssize_t i1, Py_ssize_t i2) except -1
|
|
72
|
+
# Delete the slice in sequence object o from i1 to i2. Returns -1
|
|
73
|
+
# on failure. This is the equivalent of the Python statement "del
|
|
74
|
+
# o[i1:i2]".
|
|
75
|
+
|
|
76
|
+
int PySequence_Count(object o, object value) except -1
|
|
77
|
+
# Return the number of occurrences of value in o, that is, return
|
|
78
|
+
# the number of keys for which o[key] == value. On failure, return
|
|
79
|
+
# -1. This is equivalent to the Python expression
|
|
80
|
+
# "o.count(value)".
|
|
81
|
+
|
|
82
|
+
int PySequence_Contains(object o, object value) except -1
|
|
83
|
+
# Determine if o contains value. If an item in o is equal to
|
|
84
|
+
# value, return 1, otherwise return 0. On error, return -1. This
|
|
85
|
+
# is equivalent to the Python expression "value in o".
|
|
86
|
+
|
|
87
|
+
Py_ssize_t PySequence_Index(object o, object value) except -1
|
|
88
|
+
# Return the first index i for which o[i] == value. On error,
|
|
89
|
+
# return -1. This is equivalent to the Python expression
|
|
90
|
+
# "o.index(value)".
|
|
91
|
+
|
|
92
|
+
object PySequence_List(object o)
|
|
93
|
+
# Return value: New reference.
|
|
94
|
+
# Return a list object with the same contents as the arbitrary
|
|
95
|
+
# sequence o. The returned list is guaranteed to be new.
|
|
96
|
+
|
|
97
|
+
object PySequence_Tuple(object o)
|
|
98
|
+
# Return value: New reference.
|
|
99
|
+
# Return a tuple object with the same contents as the arbitrary
|
|
100
|
+
# sequence o or NULL on failure. If o is a tuple, a new reference
|
|
101
|
+
# will be returned, otherwise a tuple will be constructed with the
|
|
102
|
+
# appropriate contents. This is equivalent to the Python
|
|
103
|
+
# expression "tuple(o)".
|
|
104
|
+
|
|
105
|
+
object PySequence_Fast(object o, char *m)
|
|
106
|
+
# Return value: New reference.
|
|
107
|
+
# Returns the sequence o as a tuple, unless it is already a tuple
|
|
108
|
+
# or list, in which case o is returned. Use
|
|
109
|
+
# PySequence_Fast_GET_ITEM() to access the members of the
|
|
110
|
+
# result. Returns NULL on failure. If the object is not a
|
|
111
|
+
# sequence, raises TypeError with m as the message text.
|
|
112
|
+
|
|
113
|
+
PyObject* PySequence_Fast_GET_ITEM(object o, Py_ssize_t i)
|
|
114
|
+
# Return value: Borrowed reference.
|
|
115
|
+
# Return the ith element of o, assuming that o was returned by
|
|
116
|
+
# PySequence_Fast(), o is not NULL, and that i is within bounds.
|
|
117
|
+
|
|
118
|
+
PyObject** PySequence_Fast_ITEMS(object o)
|
|
119
|
+
# Return the underlying array of PyObject pointers. Assumes that o
|
|
120
|
+
# was returned by PySequence_Fast() and o is not NULL.
|
|
121
|
+
|
|
122
|
+
object PySequence_ITEM(object o, Py_ssize_t i)
|
|
123
|
+
# Return value: New reference.
|
|
124
|
+
# Return the ith element of o or NULL on failure. Macro form of
|
|
125
|
+
# PySequence_GetItem() but without checking that
|
|
126
|
+
# PySequence_Check(o) is true and without adjustment for negative
|
|
127
|
+
# indices.
|
|
128
|
+
|
|
129
|
+
Py_ssize_t PySequence_Fast_GET_SIZE(object o)
|
|
130
|
+
# Returns the length of o, assuming that o was returned by
|
|
131
|
+
# PySequence_Fast() and that o is not NULL. The size can also be
|
|
132
|
+
# gotten by calling PySequence_Size() on o, but
|
|
133
|
+
# PySequence_Fast_GET_SIZE() is faster because it can assume o is
|
|
134
|
+
# a list or tuple.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
cdef extern from "Python.h":
|
|
2
|
+
|
|
3
|
+
############################################################################
|
|
4
|
+
# 7.5.14 Set Objects
|
|
5
|
+
############################################################################
|
|
6
|
+
|
|
7
|
+
# This section details the public API for set and frozenset
|
|
8
|
+
# objects. Any functionality not listed below is best accessed
|
|
9
|
+
# using the either the abstract object protocol (including
|
|
10
|
+
# PyObject_CallMethod(), PyObject_RichCompareBool(),
|
|
11
|
+
# PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(),
|
|
12
|
+
# PyObject_Print(), and PyObject_GetIter()) or the abstract number
|
|
13
|
+
# protocol (including PyNumber_Add(), PyNumber_Subtract(),
|
|
14
|
+
# PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAdd(),
|
|
15
|
+
# PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), and
|
|
16
|
+
# PyNumber_InPlaceXor()).
|
|
17
|
+
|
|
18
|
+
# PySetObject
|
|
19
|
+
# This subtype of PyObject is used to hold the internal data for
|
|
20
|
+
# both set and frozenset objects. It is like a PyDictObject in
|
|
21
|
+
# that it is a fixed size for small sets (much like tuple storage)
|
|
22
|
+
# and will point to a separate, variable sized block of memory for
|
|
23
|
+
# medium and large sized sets (much like list storage). None of
|
|
24
|
+
# the fields of this structure should be considered public and are
|
|
25
|
+
# subject to change. All access should be done through the
|
|
26
|
+
# documented API rather than by manipulating the values in the
|
|
27
|
+
# structure.
|
|
28
|
+
|
|
29
|
+
# PyTypeObject PySet_Type
|
|
30
|
+
# This is an instance of PyTypeObject representing the Python set type.
|
|
31
|
+
|
|
32
|
+
# PyTypeObject PyFrozenSet_Type
|
|
33
|
+
# This is an instance of PyTypeObject representing the Python frozenset type.
|
|
34
|
+
|
|
35
|
+
# The following type check macros work on pointers to any Python
|
|
36
|
+
# object. Likewise, the constructor functions work with any
|
|
37
|
+
# iterable Python object.
|
|
38
|
+
|
|
39
|
+
bint PyAnySet_Check(object p)
|
|
40
|
+
# Return true if p is a set object, a frozenset object, or an
|
|
41
|
+
# instance of a subtype.
|
|
42
|
+
|
|
43
|
+
bint PyAnySet_CheckExact(object p)
|
|
44
|
+
# Return true if p is a set object or a frozenset object but not
|
|
45
|
+
# an instance of a subtype.
|
|
46
|
+
|
|
47
|
+
bint PyFrozenSet_Check(object p)
|
|
48
|
+
# Return true if p is a frozenset object or an instance of a subtype.
|
|
49
|
+
|
|
50
|
+
bint PyFrozenSet_CheckExact(object p)
|
|
51
|
+
# Return true if p is a frozenset object but not an instance of a subtype.
|
|
52
|
+
|
|
53
|
+
bint PySet_Check(object p)
|
|
54
|
+
# Return true if p is a set object or an instance of a subtype.
|
|
55
|
+
|
|
56
|
+
object PySet_New(object iterable)
|
|
57
|
+
# Return value: New reference.
|
|
58
|
+
# Return a new set containing objects returned by the
|
|
59
|
+
# iterable. The iterable may be NULL to create a new empty
|
|
60
|
+
# set. Return the new set on success or NULL on failure. Raise
|
|
61
|
+
# TypeError if iterable is not actually iterable. The constructor
|
|
62
|
+
# is also useful for copying a set (c=set(s)).
|
|
63
|
+
|
|
64
|
+
object PyFrozenSet_New(object iterable)
|
|
65
|
+
# Return value: New reference.
|
|
66
|
+
# Return a new frozenset containing objects returned by the
|
|
67
|
+
# iterable. The iterable may be NULL to create a new empty
|
|
68
|
+
# frozenset. Return the new set on success or NULL on
|
|
69
|
+
# failure. Raise TypeError if iterable is not actually iterable.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# The following functions and macros are available for instances
|
|
73
|
+
# of set or frozenset or instances of their subtypes.
|
|
74
|
+
|
|
75
|
+
Py_ssize_t PySet_Size(object anyset) except -1
|
|
76
|
+
# Return the length of a set or frozenset object. Equivalent to
|
|
77
|
+
# "len(anyset)". Raises a PyExc_SystemError if anyset is not a
|
|
78
|
+
# set, frozenset, or an instance of a subtype.
|
|
79
|
+
|
|
80
|
+
Py_ssize_t PySet_GET_SIZE(object anyset)
|
|
81
|
+
# Macro form of PySet_Size() without error checking.
|
|
82
|
+
|
|
83
|
+
bint PySet_Contains(object anyset, object key) except -1
|
|
84
|
+
# Return 1 if found, 0 if not found, and -1 if an error is
|
|
85
|
+
# encountered. Unlike the Python __contains__() method, this
|
|
86
|
+
# function does not automatically convert unhashable sets into
|
|
87
|
+
# temporary frozensets. Raise a TypeError if the key is
|
|
88
|
+
# unhashable. Raise PyExc_SystemError if anyset is not a set,
|
|
89
|
+
# frozenset, or an instance of a subtype.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# The following functions are available for instances of set or
|
|
93
|
+
# its subtypes but not for instances of frozenset or its subtypes.
|
|
94
|
+
|
|
95
|
+
int PySet_Add(object set, object key) except -1
|
|
96
|
+
# Add key to a set instance. Does not apply to frozenset
|
|
97
|
+
# instances. Return 0 on success or -1 on failure. Raise a
|
|
98
|
+
# TypeError if the key is unhashable. Raise a MemoryError if there
|
|
99
|
+
# is no room to grow. Raise a SystemError if set is an not an
|
|
100
|
+
# instance of set or its subtype.
|
|
101
|
+
|
|
102
|
+
bint PySet_Discard(object set, object key) except -1
|
|
103
|
+
# Return 1 if found and removed, 0 if not found (no action taken),
|
|
104
|
+
# and -1 if an error is encountered. Does not raise KeyError for
|
|
105
|
+
# missing keys. Raise a TypeError if the key is unhashable. Unlike
|
|
106
|
+
# the Python discard() method, this function does not
|
|
107
|
+
# automatically convert unhashable sets into temporary
|
|
108
|
+
# frozensets. Raise PyExc_SystemError if set is an not an instance
|
|
109
|
+
# of set or its subtype.
|
|
110
|
+
|
|
111
|
+
object PySet_Pop(object set)
|
|
112
|
+
# Return value: New reference.
|
|
113
|
+
# Return a new reference to an arbitrary object in the set, and
|
|
114
|
+
# removes the object from the set. Return NULL on failure. Raise
|
|
115
|
+
# KeyError if the set is empty. Raise a SystemError if set is an
|
|
116
|
+
# not an instance of set or its subtype.
|
|
117
|
+
|
|
118
|
+
int PySet_Clear(object set)
|
|
119
|
+
# Empty an existing set of all elements.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
cdef extern from "Python.h":
|
|
2
|
+
|
|
3
|
+
# PyTypeObject PySlice_Type
|
|
4
|
+
#
|
|
5
|
+
# The type object for slice objects. This is the same as slice and types.SliceType
|
|
6
|
+
|
|
7
|
+
bint PySlice_Check(object ob)
|
|
8
|
+
#
|
|
9
|
+
# Return true if ob is a slice object; ob must not be NULL.
|
|
10
|
+
|
|
11
|
+
slice PySlice_New(object start, object stop, object step)
|
|
12
|
+
#
|
|
13
|
+
# Return a new slice object with the given values. The start, stop, and step
|
|
14
|
+
# parameters are used as the values of the slice object attributes of the same
|
|
15
|
+
# names. Any of the values may be NULL, in which case the None will be used
|
|
16
|
+
# for the corresponding attribute. Return NULL if the new object could not be
|
|
17
|
+
# allocated.
|
|
18
|
+
|
|
19
|
+
int PySlice_GetIndices(object slice, Py_ssize_t length,
|
|
20
|
+
Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step) except? -1
|
|
21
|
+
#
|
|
22
|
+
# Retrieve the start, stop and step indices from the slice object slice,
|
|
23
|
+
# assuming a sequence of length length. Treats indices greater than length
|
|
24
|
+
# as errors.
|
|
25
|
+
#
|
|
26
|
+
# Returns 0 on success and -1 on error with no exception set (unless one
|
|
27
|
+
# of the indices was not None and failed to be converted to an integer,
|
|
28
|
+
# in which case -1 is returned with an exception set).
|
|
29
|
+
#
|
|
30
|
+
# You probably do not want to use this function.
|
|
31
|
+
#
|
|
32
|
+
# Changed in version 3.2: The parameter type for the slice parameter was
|
|
33
|
+
# PySliceObject* before.
|
|
34
|
+
|
|
35
|
+
int PySlice_GetIndicesEx(object slice, Py_ssize_t length,
|
|
36
|
+
Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
|
|
37
|
+
Py_ssize_t *slicelength) except -1
|
|
38
|
+
#
|
|
39
|
+
# Usable replacement for PySlice_GetIndices(). Retrieve the start, stop, and step
|
|
40
|
+
# indices from the slice object slice assuming a sequence of length length, and
|
|
41
|
+
# store the length of the slice in slicelength. Out of bounds indices are clipped
|
|
42
|
+
# in a manner consistent with the handling of normal slices.
|
|
43
|
+
#
|
|
44
|
+
# Returns 0 on success and -1 on error with exception set.
|
|
45
|
+
#
|
|
46
|
+
# Changed in version 3.2: The parameter type for the slice parameter was
|
|
47
|
+
# PySliceObject* before.
|
|
48
|
+
|
|
49
|
+
int PySlice_Unpack(object slice, Py_ssize_t *start, Py_ssize_t *stop,
|
|
50
|
+
Py_ssize_t *step) except -1
|
|
51
|
+
# Extract the start, stop and step data members from a slice object as C
|
|
52
|
+
# integers. Silently reduce values larger than PY_SSIZE_T_MAX to
|
|
53
|
+
# PY_SSIZE_T_MAX, silently boost the start and stop values less than
|
|
54
|
+
# PY_SSIZE_T_MIN to PY_SSIZE_T_MIN, and silently boost the step values
|
|
55
|
+
# less than -PY_SSIZE_T_MAX to -PY_SSIZE_T_MAX.
|
|
56
|
+
|
|
57
|
+
# Return -1 on error, 0 on success.
|
|
58
|
+
|
|
59
|
+
# New in version 3.6.1.
|
|
60
|
+
|
|
61
|
+
Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start,
|
|
62
|
+
Py_ssize_t *stop, Py_ssize_t step)
|
|
63
|
+
# Adjust start/end slice indices assuming a sequence of the specified
|
|
64
|
+
# length. Out of bounds indices are clipped in a manner consistent with
|
|
65
|
+
# the handling of normal slices.
|
|
66
|
+
|
|
67
|
+
# Return the length of the slice. Always successful. Doesn’t call Python
|
|
68
|
+
# code.
|
|
69
|
+
|
|
70
|
+
# New in version 3.6.1.
|