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,103 @@
|
|
|
1
|
+
#################### EnumBase ####################
|
|
2
|
+
|
|
3
|
+
cimport cython
|
|
4
|
+
|
|
5
|
+
cdef extern from *:
|
|
6
|
+
int PY_VERSION_HEX
|
|
7
|
+
|
|
8
|
+
# @cython.internal
|
|
9
|
+
cdef object __Pyx_EnumBase
|
|
10
|
+
from enum import IntEnum as __Pyx_EnumBase
|
|
11
|
+
|
|
12
|
+
cdef object __Pyx_FlagBase
|
|
13
|
+
from enum import IntFlag as __Pyx_FlagBase
|
|
14
|
+
|
|
15
|
+
#################### EnumType ####################
|
|
16
|
+
#@requires: EnumBase
|
|
17
|
+
|
|
18
|
+
cdef extern from *:
|
|
19
|
+
object {{enum_to_pyint_func}}({{name}} value)
|
|
20
|
+
|
|
21
|
+
# create new IntFlag() - the assumption is that C enums are sufficiently commonly
|
|
22
|
+
# used as flags that this is the most appropriate base class
|
|
23
|
+
{{name}} = __Pyx_FlagBase('{{name}}', [
|
|
24
|
+
{{for item in items}}
|
|
25
|
+
('{{item}}', {{enum_to_pyint_func}}({{item}})),
|
|
26
|
+
{{endfor}}
|
|
27
|
+
# Try to look up the module name dynamically if possible
|
|
28
|
+
], module=globals().get("__module__", '{{static_modname}}'))
|
|
29
|
+
|
|
30
|
+
if PY_VERSION_HEX >= 0x030B0000:
|
|
31
|
+
# Python 3.11 starts making the behaviour of flags stricter
|
|
32
|
+
# (only including powers of 2 when iterating). Since we're using
|
|
33
|
+
# "flag" because C enums *might* be used as flags, not because
|
|
34
|
+
# we want strict flag behaviour, manually undo some of this.
|
|
35
|
+
{{name}}._member_names_ = list({{name}}.__members__)
|
|
36
|
+
|
|
37
|
+
{{if enum_doc is not None}}
|
|
38
|
+
{{name}}.__doc__ = {{ repr(enum_doc) }}
|
|
39
|
+
{{endif}}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
#################### CppScopedEnumType ####################
|
|
43
|
+
#@requires: EnumBase
|
|
44
|
+
cdef dict __Pyx_globals = globals()
|
|
45
|
+
|
|
46
|
+
__Pyx_globals["{{name}}"] = __Pyx_EnumBase('{{name}}', [
|
|
47
|
+
{{for item in items}}
|
|
48
|
+
('{{item}}', <{{underlying_type}}>({{name}}.{{item}})),
|
|
49
|
+
{{endfor}}
|
|
50
|
+
], module=__Pyx_globals.get("__module__", '{{static_modname}}'))
|
|
51
|
+
|
|
52
|
+
{{if enum_doc is not None}}
|
|
53
|
+
__Pyx_globals["{{name}}"].__doc__ = {{ repr(enum_doc) }}
|
|
54
|
+
{{endif}}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
#################### EnumTypeToPy ####################
|
|
58
|
+
|
|
59
|
+
{{if module_name}}
|
|
60
|
+
cdef object __pyx_imported_enum_{{funcname}} = None
|
|
61
|
+
{{endif}}
|
|
62
|
+
|
|
63
|
+
@cname("{{funcname}}")
|
|
64
|
+
cdef {{funcname}}({{name}} c_val):
|
|
65
|
+
cdef object __pyx_enum
|
|
66
|
+
{{if module_name}}
|
|
67
|
+
global __pyx_imported_enum_{{funcname}}
|
|
68
|
+
# There's a complication here: the Python enum wrapping is only generated
|
|
69
|
+
# for enums defined in the same module that they're used in. Therefore, if
|
|
70
|
+
# the enum was cimported from a different module, we try to import it.
|
|
71
|
+
# If that fails we return an int equivalent as the next best option.
|
|
72
|
+
if __pyx_imported_enum_{{funcname}} is None:
|
|
73
|
+
try:
|
|
74
|
+
from {{module_name}} import {{name}} as __pyx_imported_enum_{{funcname}}
|
|
75
|
+
except ImportError:
|
|
76
|
+
__pyx_imported_enum_{{funcname}} = False # False indicates "don't try again"
|
|
77
|
+
import warnings
|
|
78
|
+
warnings.warn(
|
|
79
|
+
f"enum class {{name}} not importable from {{module_name}}. "
|
|
80
|
+
"You are probably using a cpdef enum declared in a .pxd file that "
|
|
81
|
+
"does not have a .py or .pyx file.")
|
|
82
|
+
if __pyx_imported_enum_{{funcname}} is False:
|
|
83
|
+
# shortcut - if the import failed there's no point repeating it
|
|
84
|
+
# (and repeating the warning)
|
|
85
|
+
return <{{underlying_type}}>c_val
|
|
86
|
+
__pyx_enum = __pyx_imported_enum_{{funcname}}
|
|
87
|
+
{{else}}
|
|
88
|
+
__pyx_enum = {{name}}
|
|
89
|
+
{{endif}}
|
|
90
|
+
# TODO - Cython only manages to optimize C enums to a switch currently
|
|
91
|
+
if 0:
|
|
92
|
+
pass
|
|
93
|
+
{{for item in items}}
|
|
94
|
+
elif c_val == {{name}}.{{item}}:
|
|
95
|
+
return __pyx_enum.{{item}}
|
|
96
|
+
{{endfor}}
|
|
97
|
+
else:
|
|
98
|
+
underlying_c_val = <{{underlying_type}}>c_val
|
|
99
|
+
{{if is_flag}}
|
|
100
|
+
return __pyx_enum(underlying_c_val)
|
|
101
|
+
{{else}}
|
|
102
|
+
raise ValueError(f"{underlying_c_val} is not a valid {{name}}")
|
|
103
|
+
{{endif}}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# TODO: Figure out how many of the pass-by-value copies the compiler can eliminate.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
#################### string.from_py ####################
|
|
5
|
+
|
|
6
|
+
cdef extern from *:
|
|
7
|
+
cdef cppclass string "{{type}}":
|
|
8
|
+
string() except +
|
|
9
|
+
string(char* c_str, size_t size) except +
|
|
10
|
+
cdef const char* __Pyx_PyObject_AsStringAndSize(object, Py_ssize_t*) except NULL
|
|
11
|
+
|
|
12
|
+
@cname("{{cname}}")
|
|
13
|
+
cdef string {{cname}}(object o) except *:
|
|
14
|
+
cdef Py_ssize_t length = 0
|
|
15
|
+
cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)
|
|
16
|
+
return string(data, <size_t> length)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#################### string.to_py ####################
|
|
20
|
+
|
|
21
|
+
#cimport cython
|
|
22
|
+
#from libcpp.string cimport string
|
|
23
|
+
cdef extern from *:
|
|
24
|
+
const Py_ssize_t PY_SSIZE_T_MAX
|
|
25
|
+
cdef cppclass string "{{type}}":
|
|
26
|
+
char* data()
|
|
27
|
+
size_t size()
|
|
28
|
+
|
|
29
|
+
{{for py_type in ['PyObject', 'PyUnicode', 'PyBytes', 'PyByteArray']}}
|
|
30
|
+
cdef extern from *:
|
|
31
|
+
cdef object __Pyx_{{py_type}}_FromStringAndSize(const char*, size_t)
|
|
32
|
+
|
|
33
|
+
@cname("{{cname.replace("PyObject", py_type, 1)}}")
|
|
34
|
+
cdef inline object {{cname.replace("PyObject", py_type, 1)}}(const string& s):
|
|
35
|
+
if s.size() > <size_t> PY_SSIZE_T_MAX:
|
|
36
|
+
raise MemoryError()
|
|
37
|
+
return __Pyx_{{py_type}}_FromStringAndSize(s.data(), <Py_ssize_t> s.size())
|
|
38
|
+
{{endfor}}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
#################### vector.from_py ####################
|
|
42
|
+
#@requires: ObjectHandling.c::LengthHint
|
|
43
|
+
|
|
44
|
+
cdef extern from *:
|
|
45
|
+
cdef cppclass vector "std::vector" [T]:
|
|
46
|
+
void push_back(T&) except +
|
|
47
|
+
void reserve(size_t) except +
|
|
48
|
+
|
|
49
|
+
cdef Py_ssize_t __Pyx_PyObject_LengthHint(object o, Py_ssize_t defaultval) except -1
|
|
50
|
+
|
|
51
|
+
@cname("{{cname}}")
|
|
52
|
+
cdef vector[X] {{cname}}(object o) except *:
|
|
53
|
+
|
|
54
|
+
cdef vector[X] v
|
|
55
|
+
cdef Py_ssize_t s = __Pyx_PyObject_LengthHint(o, 0)
|
|
56
|
+
|
|
57
|
+
if s > 0:
|
|
58
|
+
v.reserve(<size_t> s)
|
|
59
|
+
|
|
60
|
+
for item in o:
|
|
61
|
+
v.push_back(<X>item)
|
|
62
|
+
|
|
63
|
+
return v
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
#################### vector.to_py ####################
|
|
67
|
+
|
|
68
|
+
cdef extern from *:
|
|
69
|
+
cdef cppclass vector "std::vector" [T]:
|
|
70
|
+
size_t size()
|
|
71
|
+
T& operator[](size_t)
|
|
72
|
+
|
|
73
|
+
cdef extern from "Python.h":
|
|
74
|
+
void Py_INCREF(object)
|
|
75
|
+
list PyList_New(Py_ssize_t size)
|
|
76
|
+
int __Pyx_PyList_SET_ITEM(object list, Py_ssize_t i, object o) except -1
|
|
77
|
+
const Py_ssize_t PY_SSIZE_T_MAX
|
|
78
|
+
|
|
79
|
+
@cname("{{cname}}")
|
|
80
|
+
cdef object {{cname}}(const vector[X]& v):
|
|
81
|
+
if v.size() > <size_t> PY_SSIZE_T_MAX:
|
|
82
|
+
raise MemoryError()
|
|
83
|
+
v_size_signed = <Py_ssize_t> v.size()
|
|
84
|
+
|
|
85
|
+
o = PyList_New(v_size_signed)
|
|
86
|
+
|
|
87
|
+
cdef Py_ssize_t i
|
|
88
|
+
cdef object item
|
|
89
|
+
|
|
90
|
+
for i in range(v_size_signed):
|
|
91
|
+
item = v[i]
|
|
92
|
+
Py_INCREF(item)
|
|
93
|
+
__Pyx_PyList_SET_ITEM(o, i, item)
|
|
94
|
+
|
|
95
|
+
return o
|
|
96
|
+
|
|
97
|
+
#################### list.from_py ####################
|
|
98
|
+
|
|
99
|
+
cdef extern from *:
|
|
100
|
+
cdef cppclass cpp_list "std::list" [T]:
|
|
101
|
+
void push_back(T&) except +
|
|
102
|
+
|
|
103
|
+
@cname("{{cname}}")
|
|
104
|
+
cdef cpp_list[X] {{cname}}(object o) except *:
|
|
105
|
+
cdef cpp_list[X] l
|
|
106
|
+
for item in o:
|
|
107
|
+
l.push_back(<X>item)
|
|
108
|
+
return l
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
#################### list.to_py ####################
|
|
112
|
+
|
|
113
|
+
cimport cython
|
|
114
|
+
|
|
115
|
+
cdef extern from *:
|
|
116
|
+
cdef cppclass cpp_list "std::list" [T]:
|
|
117
|
+
cppclass const_iterator:
|
|
118
|
+
T& operator*()
|
|
119
|
+
const_iterator operator++()
|
|
120
|
+
bint operator!=(const_iterator)
|
|
121
|
+
const_iterator begin()
|
|
122
|
+
const_iterator end()
|
|
123
|
+
size_t size()
|
|
124
|
+
|
|
125
|
+
cdef extern from "Python.h":
|
|
126
|
+
void Py_INCREF(object)
|
|
127
|
+
list PyList_New(Py_ssize_t size)
|
|
128
|
+
void __Pyx_PyList_SET_ITEM(object list, Py_ssize_t i, object o)
|
|
129
|
+
cdef Py_ssize_t PY_SSIZE_T_MAX
|
|
130
|
+
|
|
131
|
+
@cname("{{cname}}")
|
|
132
|
+
cdef object {{cname}}(const cpp_list[X]& v):
|
|
133
|
+
if v.size() > <size_t> PY_SSIZE_T_MAX:
|
|
134
|
+
raise MemoryError()
|
|
135
|
+
|
|
136
|
+
o = PyList_New(<Py_ssize_t> v.size())
|
|
137
|
+
|
|
138
|
+
cdef object item
|
|
139
|
+
cdef Py_ssize_t i = 0
|
|
140
|
+
cdef cpp_list[X].const_iterator iter = v.begin()
|
|
141
|
+
|
|
142
|
+
while iter != v.end():
|
|
143
|
+
item = cython.operator.dereference(iter)
|
|
144
|
+
Py_INCREF(item)
|
|
145
|
+
__Pyx_PyList_SET_ITEM(o, i, item)
|
|
146
|
+
cython.operator.preincrement(iter)
|
|
147
|
+
i += 1
|
|
148
|
+
|
|
149
|
+
return o
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
#################### set.from_py ####################
|
|
153
|
+
|
|
154
|
+
cdef extern from *:
|
|
155
|
+
cdef cppclass set "std::{{maybe_unordered}}set" [T]:
|
|
156
|
+
void insert(T&) except +
|
|
157
|
+
|
|
158
|
+
@cname("{{cname}}")
|
|
159
|
+
cdef set[X] {{cname}}(object o) except *:
|
|
160
|
+
cdef set[X] s
|
|
161
|
+
for item in o:
|
|
162
|
+
s.insert(<X>item)
|
|
163
|
+
return s
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
#################### set.to_py ####################
|
|
167
|
+
|
|
168
|
+
cimport cython
|
|
169
|
+
|
|
170
|
+
cdef extern from *:
|
|
171
|
+
cdef cppclass cpp_set "std::{{maybe_unordered}}set" [T]:
|
|
172
|
+
cppclass const_iterator:
|
|
173
|
+
T& operator*()
|
|
174
|
+
const_iterator operator++()
|
|
175
|
+
bint operator!=(const_iterator)
|
|
176
|
+
const_iterator begin()
|
|
177
|
+
const_iterator end()
|
|
178
|
+
|
|
179
|
+
@cname("{{cname}}")
|
|
180
|
+
cdef object {{cname}}(const cpp_set[X]& s):
|
|
181
|
+
return {v for v in s}
|
|
182
|
+
|
|
183
|
+
#################### pair.from_py ####################
|
|
184
|
+
|
|
185
|
+
cdef extern from *:
|
|
186
|
+
cdef cppclass pair "std::pair" [T, U]:
|
|
187
|
+
pair() except +
|
|
188
|
+
pair(T&, U&) except +
|
|
189
|
+
|
|
190
|
+
@cname("{{cname}}")
|
|
191
|
+
cdef pair[X,Y] {{cname}}(object o) except *:
|
|
192
|
+
x, y = o
|
|
193
|
+
return pair[X,Y](<X>x, <Y>y)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
#################### pair.to_py ####################
|
|
197
|
+
|
|
198
|
+
cdef extern from *:
|
|
199
|
+
cdef cppclass pair "std::pair" [T, U]:
|
|
200
|
+
T first
|
|
201
|
+
U second
|
|
202
|
+
|
|
203
|
+
@cname("{{cname}}")
|
|
204
|
+
cdef object {{cname}}(const pair[X,Y]& p):
|
|
205
|
+
return p.first, p.second
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
#################### map.from_py ####################
|
|
209
|
+
|
|
210
|
+
cdef extern from *:
|
|
211
|
+
cdef cppclass pair "std::pair" [T, U]:
|
|
212
|
+
pair(T&, U&) except +
|
|
213
|
+
cdef cppclass map "std::{{maybe_unordered}}map" [T, U]:
|
|
214
|
+
void insert(pair[T, U]&) except +
|
|
215
|
+
cdef cppclass vector "std::vector" [T]:
|
|
216
|
+
pass
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@cname("{{cname}}")
|
|
220
|
+
cdef map[X,Y] {{cname}}(object o) except *:
|
|
221
|
+
cdef map[X,Y] m
|
|
222
|
+
for key, value in o.items():
|
|
223
|
+
m.insert(pair[X,Y](<X>key, <Y>value))
|
|
224
|
+
return m
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
#################### map.to_py ####################
|
|
228
|
+
# TODO: Work out const so that this can take a const
|
|
229
|
+
# reference rather than pass by value.
|
|
230
|
+
|
|
231
|
+
cimport cython
|
|
232
|
+
|
|
233
|
+
cdef extern from *:
|
|
234
|
+
cdef cppclass map "std::{{maybe_unordered}}map" [T, U]:
|
|
235
|
+
cppclass value_type:
|
|
236
|
+
T first
|
|
237
|
+
U second
|
|
238
|
+
cppclass const_iterator:
|
|
239
|
+
value_type& operator*()
|
|
240
|
+
const_iterator operator++()
|
|
241
|
+
bint operator!=(const_iterator)
|
|
242
|
+
const_iterator begin()
|
|
243
|
+
const_iterator end()
|
|
244
|
+
|
|
245
|
+
@cname("{{cname}}")
|
|
246
|
+
cdef object {{cname}}(const map[X,Y]& s):
|
|
247
|
+
o = {}
|
|
248
|
+
cdef const map[X,Y].value_type *key_value
|
|
249
|
+
cdef map[X,Y].const_iterator iter = s.begin()
|
|
250
|
+
while iter != s.end():
|
|
251
|
+
key_value = &cython.operator.dereference(iter)
|
|
252
|
+
o[key_value.first] = key_value.second
|
|
253
|
+
cython.operator.preincrement(iter)
|
|
254
|
+
return o
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
#################### complex.from_py ####################
|
|
258
|
+
|
|
259
|
+
cdef extern from *:
|
|
260
|
+
cdef cppclass std_complex "std::complex" [T]:
|
|
261
|
+
std_complex()
|
|
262
|
+
std_complex(T, T) except +
|
|
263
|
+
|
|
264
|
+
@cname("{{cname}}")
|
|
265
|
+
cdef std_complex[X] {{cname}}(object o) except *:
|
|
266
|
+
cdef double complex z = o
|
|
267
|
+
return std_complex[X](<X>z.real, <X>z.imag)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
#################### complex.to_py ####################
|
|
271
|
+
|
|
272
|
+
cdef extern from *:
|
|
273
|
+
cdef cppclass std_complex "std::complex" [T]:
|
|
274
|
+
X real()
|
|
275
|
+
X imag()
|
|
276
|
+
|
|
277
|
+
@cname("{{cname}}")
|
|
278
|
+
cdef object {{cname}}(const std_complex[X]& z):
|
|
279
|
+
cdef double complex tmp
|
|
280
|
+
tmp.real = <double>z.real()
|
|
281
|
+
tmp.imag = <double>z.imag()
|
|
282
|
+
return tmp
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/////////////// CppExceptionConversion.proto ///////////////
|
|
2
|
+
|
|
3
|
+
#ifndef __Pyx_CppExn2PyErr
|
|
4
|
+
#include <new>
|
|
5
|
+
#include <typeinfo>
|
|
6
|
+
#include <stdexcept>
|
|
7
|
+
#include <ios>
|
|
8
|
+
|
|
9
|
+
static void __Pyx_CppExn2PyErr() {
|
|
10
|
+
// Catch a handful of different errors here and turn them into the
|
|
11
|
+
// equivalent Python errors.
|
|
12
|
+
try {
|
|
13
|
+
if (PyErr_Occurred())
|
|
14
|
+
; // let the latest Python exn pass through and ignore the current one
|
|
15
|
+
else
|
|
16
|
+
throw;
|
|
17
|
+
} catch (const std::bad_alloc& exn) {
|
|
18
|
+
PyErr_SetString(PyExc_MemoryError, exn.what());
|
|
19
|
+
} catch (const std::bad_cast& exn) {
|
|
20
|
+
PyErr_SetString(PyExc_TypeError, exn.what());
|
|
21
|
+
} catch (const std::bad_typeid& exn) {
|
|
22
|
+
PyErr_SetString(PyExc_TypeError, exn.what());
|
|
23
|
+
} catch (const std::domain_error& exn) {
|
|
24
|
+
PyErr_SetString(PyExc_ValueError, exn.what());
|
|
25
|
+
} catch (const std::invalid_argument& exn) {
|
|
26
|
+
PyErr_SetString(PyExc_ValueError, exn.what());
|
|
27
|
+
} catch (const std::ios_base::failure& exn) {
|
|
28
|
+
// Unfortunately, in standard C++ we have no way of distinguishing EOF
|
|
29
|
+
// from other errors here; be careful with the exception mask
|
|
30
|
+
PyErr_SetString(PyExc_IOError, exn.what());
|
|
31
|
+
} catch (const std::out_of_range& exn) {
|
|
32
|
+
// Change out_of_range to IndexError
|
|
33
|
+
PyErr_SetString(PyExc_IndexError, exn.what());
|
|
34
|
+
} catch (const std::overflow_error& exn) {
|
|
35
|
+
PyErr_SetString(PyExc_OverflowError, exn.what());
|
|
36
|
+
} catch (const std::range_error& exn) {
|
|
37
|
+
PyErr_SetString(PyExc_ArithmeticError, exn.what());
|
|
38
|
+
} catch (const std::underflow_error& exn) {
|
|
39
|
+
PyErr_SetString(PyExc_ArithmeticError, exn.what());
|
|
40
|
+
} catch (const std::exception& exn) {
|
|
41
|
+
PyErr_SetString(PyExc_RuntimeError, exn.what());
|
|
42
|
+
}
|
|
43
|
+
catch (...)
|
|
44
|
+
{
|
|
45
|
+
PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
/////////////// PythranConversion.proto ///////////////
|
|
51
|
+
|
|
52
|
+
template <class T>
|
|
53
|
+
auto __Pyx_pythran_to_python(T &&value) -> decltype(to_python(
|
|
54
|
+
typename pythonic::returnable<typename std::remove_cv<typename std::remove_reference<T>::type>::type>::type{std::forward<T>(value)}))
|
|
55
|
+
{
|
|
56
|
+
using returnable_type = typename pythonic::returnable<typename std::remove_cv<typename std::remove_reference<T>::type>::type>::type;
|
|
57
|
+
return to_python(returnable_type{std::forward<T>(value)});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
#define __Pyx_PythranShapeAccessor(x) (pythonic::builtins::getattr(pythonic::types::attr::SHAPE{}, x))
|
|
61
|
+
|
|
62
|
+
////////////// MoveIfSupported.proto //////////////////
|
|
63
|
+
|
|
64
|
+
#if CYTHON_USE_CPP_STD_MOVE
|
|
65
|
+
#include <utility>
|
|
66
|
+
#define __PYX_STD_MOVE_IF_SUPPORTED(x) std::move(x)
|
|
67
|
+
#else
|
|
68
|
+
#define __PYX_STD_MOVE_IF_SUPPORTED(x) x
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
////////////// EnumClassDecl.proto //////////////////
|
|
72
|
+
//@proto_block: utility_code_proto_before_types
|
|
73
|
+
|
|
74
|
+
#if defined (_MSC_VER)
|
|
75
|
+
#if _MSC_VER >= 1910
|
|
76
|
+
#define __PYX_ENUM_CLASS_DECL enum
|
|
77
|
+
#else
|
|
78
|
+
#define __PYX_ENUM_CLASS_DECL
|
|
79
|
+
#endif
|
|
80
|
+
#else
|
|
81
|
+
#define __PYX_ENUM_CLASS_DECL enum
|
|
82
|
+
#endif
|
|
83
|
+
|
|
84
|
+
////////////// OptionalLocals.proto ////////////////
|
|
85
|
+
//@proto_block: utility_code_proto_before_types
|
|
86
|
+
|
|
87
|
+
#include <utility>
|
|
88
|
+
#if defined(CYTHON_USE_BOOST_OPTIONAL)
|
|
89
|
+
// fallback mode - std::optional is preferred but this gives
|
|
90
|
+
// people with a less up-to-date compiler a chance
|
|
91
|
+
#include <boost/optional.hpp>
|
|
92
|
+
#define __Pyx_Optional_BaseType boost::optional
|
|
93
|
+
#else
|
|
94
|
+
#include <optional>
|
|
95
|
+
// since std::optional is a C++17 features, a templated using declaration should be safe
|
|
96
|
+
// (although it could be replaced with a define)
|
|
97
|
+
template <typename T>
|
|
98
|
+
using __Pyx_Optional_BaseType = std::optional<T>;
|
|
99
|
+
#endif
|
|
100
|
+
|
|
101
|
+
// This class reuses as much of the implementation of std::optional as possible.
|
|
102
|
+
// The only place it differs significantly is the assignment operators, which use
|
|
103
|
+
// "emplace" (thus requiring move/copy constructors, but not move/copy
|
|
104
|
+
// assignment operators). This is preferred because it lets us work with assignable
|
|
105
|
+
// types (for example those with const members)
|
|
106
|
+
template <typename T>
|
|
107
|
+
class __Pyx_Optional_Type : private __Pyx_Optional_BaseType<T> {
|
|
108
|
+
public:
|
|
109
|
+
using __Pyx_Optional_BaseType<T>::__Pyx_Optional_BaseType;
|
|
110
|
+
using __Pyx_Optional_BaseType<T>::has_value;
|
|
111
|
+
using __Pyx_Optional_BaseType<T>::operator*;
|
|
112
|
+
using __Pyx_Optional_BaseType<T>::operator->;
|
|
113
|
+
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
|
|
114
|
+
__Pyx_Optional_Type(const __Pyx_Optional_Type& rhs)
|
|
115
|
+
: __Pyx_Optional_BaseType<T>(rhs)
|
|
116
|
+
{}
|
|
117
|
+
|
|
118
|
+
__Pyx_Optional_Type(__Pyx_Optional_Type&& rhs)
|
|
119
|
+
: __Pyx_Optional_BaseType<T>(std::move(rhs))
|
|
120
|
+
{}
|
|
121
|
+
|
|
122
|
+
__Pyx_Optional_Type& operator=(const __Pyx_Optional_Type& rhs) {
|
|
123
|
+
this->emplace(*rhs);
|
|
124
|
+
return *this;
|
|
125
|
+
}
|
|
126
|
+
__Pyx_Optional_Type& operator=(__Pyx_Optional_Type&& rhs) {
|
|
127
|
+
this->emplace(std::move(*rhs));
|
|
128
|
+
return *this;
|
|
129
|
+
}
|
|
130
|
+
template <typename U=T>
|
|
131
|
+
__Pyx_Optional_Type& operator=(U&& rhs) {
|
|
132
|
+
this->emplace(std::forward<U>(rhs));
|
|
133
|
+
return *this;
|
|
134
|
+
}
|
|
135
|
+
#else
|
|
136
|
+
// Note - the "cpp_locals" feature is designed to require C++14.
|
|
137
|
+
// This pre-c++11 fallback is largely untested, and definitely won't work
|
|
138
|
+
// in all the cases that the more modern version does
|
|
139
|
+
using __Pyx_Optional_BaseType<T>::operator=; // the chances are emplace can't work...
|
|
140
|
+
#endif
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
//////////////////////// DefaultPlacementNew.proto ///////////////////////
|
|
144
|
+
|
|
145
|
+
#include <new>
|
|
146
|
+
|
|
147
|
+
// avoid having to know the name of the class being constructed (e.g. when user is accessing through a typedef)
|
|
148
|
+
template<typename T>
|
|
149
|
+
void __Pyx_default_placement_construct(T* x) {
|
|
150
|
+
new (static_cast<void*>(x)) T();
|
|
151
|
+
}
|