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
Cython/Compiler/Code.pyd
ADDED
|
Binary file
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from .Visitor import VisitorTransform
|
|
2
|
+
from .Nodes import StatListNode
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ExtractPxdCode(VisitorTransform):
|
|
6
|
+
"""
|
|
7
|
+
Finds nodes in a pxd file that should generate code, and
|
|
8
|
+
returns them in a StatListNode.
|
|
9
|
+
|
|
10
|
+
The result is a tuple (StatListNode, ModuleScope), i.e.
|
|
11
|
+
everything that is needed from the pxd after it is processed.
|
|
12
|
+
|
|
13
|
+
A purer approach would be to separately compile the pxd code,
|
|
14
|
+
but the result would have to be slightly more sophisticated
|
|
15
|
+
than pure strings (functions + wanted interned strings +
|
|
16
|
+
wanted utility code + wanted cached objects) so for now this
|
|
17
|
+
approach is taken.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __call__(self, root):
|
|
21
|
+
self.funcs = []
|
|
22
|
+
self.visitchildren(root)
|
|
23
|
+
return (StatListNode(root.pos, stats=self.funcs), root.scope)
|
|
24
|
+
|
|
25
|
+
def visit_FuncDefNode(self, node):
|
|
26
|
+
self.funcs.append(node)
|
|
27
|
+
# Do not visit children, nested funcdefnodes will
|
|
28
|
+
# also be moved by this action...
|
|
29
|
+
return node
|
|
30
|
+
|
|
31
|
+
def visit_Node(self, node):
|
|
32
|
+
self.visitchildren(node)
|
|
33
|
+
return node
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
from .Symtab import ModuleScope
|
|
2
|
+
from .PyrexTypes import *
|
|
3
|
+
from .UtilityCode import CythonUtilityCode
|
|
4
|
+
from .Errors import error
|
|
5
|
+
from .Scanning import StringSourceDescriptor
|
|
6
|
+
from . import MemoryView
|
|
7
|
+
from .StringEncoding import EncodedString
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class CythonScope(ModuleScope):
|
|
11
|
+
is_cython_builtin = 1
|
|
12
|
+
_cythonscope_initialized = False
|
|
13
|
+
|
|
14
|
+
def __init__(self, context):
|
|
15
|
+
ModuleScope.__init__(self, 'cython', None, None)
|
|
16
|
+
self.pxd_file_loaded = True
|
|
17
|
+
self.populate_cython_scope()
|
|
18
|
+
# The Main.Context object
|
|
19
|
+
self._context = context
|
|
20
|
+
|
|
21
|
+
for fused_type in (cy_integral_type, cy_floating_type, cy_numeric_type):
|
|
22
|
+
entry = self.declare_typedef(fused_type.name,
|
|
23
|
+
fused_type,
|
|
24
|
+
None,
|
|
25
|
+
cname='<error>')
|
|
26
|
+
entry.in_cinclude = True
|
|
27
|
+
|
|
28
|
+
cy_pymutex_type = get_cy_pymutex_type()
|
|
29
|
+
entry = self.declare_type(
|
|
30
|
+
"pymutex", cy_pymutex_type, None,
|
|
31
|
+
cname="__Pyx_Locks_PyMutex")
|
|
32
|
+
entry.utility_code_definition = cy_pymutex_type.get_decl_utility_code()
|
|
33
|
+
cy_pythread_type_lock_type = get_cy_pythread_type_lock_type()
|
|
34
|
+
entry = self.declare_type(
|
|
35
|
+
"pythread_type_lock", cy_pythread_type_lock_type, None,
|
|
36
|
+
cname="__Pyx_Locks_PyThreadTypeLock")
|
|
37
|
+
entry.utility_code_definition = cy_pythread_type_lock_type.get_decl_utility_code()
|
|
38
|
+
|
|
39
|
+
def is_cpp(self):
|
|
40
|
+
# Allow C++ utility code in C++ contexts.
|
|
41
|
+
return self.context.cpp
|
|
42
|
+
|
|
43
|
+
def lookup_type(self, name):
|
|
44
|
+
# This function should go away when types are all first-level objects.
|
|
45
|
+
type = parse_basic_type(name)
|
|
46
|
+
if type:
|
|
47
|
+
return type
|
|
48
|
+
|
|
49
|
+
return super().lookup_type(name)
|
|
50
|
+
|
|
51
|
+
def lookup(self, name):
|
|
52
|
+
entry = super().lookup(name)
|
|
53
|
+
|
|
54
|
+
if entry is None and not self._cythonscope_initialized:
|
|
55
|
+
self.load_cythonscope()
|
|
56
|
+
entry = super().lookup(name)
|
|
57
|
+
|
|
58
|
+
return entry
|
|
59
|
+
|
|
60
|
+
def find_module(self, module_name, pos):
|
|
61
|
+
error("cython.%s is not available" % module_name, pos)
|
|
62
|
+
|
|
63
|
+
def find_submodule(self, module_name, as_package=False):
|
|
64
|
+
entry = self.entries.get(module_name, None)
|
|
65
|
+
if not entry:
|
|
66
|
+
self.load_cythonscope()
|
|
67
|
+
entry = self.entries.get(module_name, None)
|
|
68
|
+
|
|
69
|
+
if entry and entry.as_module:
|
|
70
|
+
return entry.as_module
|
|
71
|
+
else:
|
|
72
|
+
# TODO: fix find_submodule control flow so that we're not
|
|
73
|
+
# expected to create a submodule here (to protect CythonScope's
|
|
74
|
+
# possible immutability). Hack ourselves out of the situation
|
|
75
|
+
# for now.
|
|
76
|
+
raise error((StringSourceDescriptor("cython", ""), 0, 0),
|
|
77
|
+
"cython.%s is not available" % module_name)
|
|
78
|
+
|
|
79
|
+
def lookup_qualified_name(self, qname):
|
|
80
|
+
# ExprNode.as_cython_attribute generates qnames and we untangle it here...
|
|
81
|
+
name_path = qname.split('.')
|
|
82
|
+
scope = self
|
|
83
|
+
while len(name_path) > 1:
|
|
84
|
+
scope = scope.lookup_here(name_path[0])
|
|
85
|
+
if scope:
|
|
86
|
+
scope = scope.as_module
|
|
87
|
+
del name_path[0]
|
|
88
|
+
if scope is None:
|
|
89
|
+
return None
|
|
90
|
+
else:
|
|
91
|
+
return scope.lookup_here(name_path[0])
|
|
92
|
+
|
|
93
|
+
def populate_cython_scope(self):
|
|
94
|
+
# These are used to optimize isinstance in FinalOptimizePhase
|
|
95
|
+
type_object = self.declare_typedef(
|
|
96
|
+
'PyTypeObject',
|
|
97
|
+
base_type = c_void_type,
|
|
98
|
+
pos = None,
|
|
99
|
+
cname = 'PyTypeObject')
|
|
100
|
+
type_object.is_void = True
|
|
101
|
+
type_object_type = type_object.type
|
|
102
|
+
|
|
103
|
+
self.declare_cfunction(
|
|
104
|
+
'PyObject_TypeCheck',
|
|
105
|
+
CFuncType(c_bint_type, [CFuncTypeArg("o", py_object_type, None),
|
|
106
|
+
CFuncTypeArg("t", c_ptr_type(type_object_type), None)]),
|
|
107
|
+
pos = None,
|
|
108
|
+
defining = 1,
|
|
109
|
+
cname = 'PyObject_TypeCheck')
|
|
110
|
+
|
|
111
|
+
def load_cythonscope(self):
|
|
112
|
+
"""
|
|
113
|
+
Creates some entries for testing purposes and entries for
|
|
114
|
+
cython.array() and for cython.view.*.
|
|
115
|
+
"""
|
|
116
|
+
if self._cythonscope_initialized:
|
|
117
|
+
return
|
|
118
|
+
|
|
119
|
+
self._cythonscope_initialized = True
|
|
120
|
+
cython_testscope_utility_code.declare_in_scope(
|
|
121
|
+
self, cython_scope=self)
|
|
122
|
+
cython_test_extclass_utility_code.declare_in_scope(
|
|
123
|
+
self, cython_scope=self)
|
|
124
|
+
|
|
125
|
+
#
|
|
126
|
+
# The view sub-scope
|
|
127
|
+
#
|
|
128
|
+
self.viewscope = viewscope = ModuleScope('view', self, None)
|
|
129
|
+
self.declare_module('view', viewscope, None).as_module = viewscope
|
|
130
|
+
viewscope.is_cython_builtin = True
|
|
131
|
+
viewscope.pxd_file_loaded = True
|
|
132
|
+
|
|
133
|
+
cythonview_testscope_utility_code.declare_in_scope(
|
|
134
|
+
viewscope, cython_scope=self)
|
|
135
|
+
|
|
136
|
+
view_utility_scope = MemoryView.get_view_utility_code(
|
|
137
|
+
self.context.shared_utility_qualified_name
|
|
138
|
+
).declare_in_scope(
|
|
139
|
+
self.viewscope, cython_scope=self, allowlist=MemoryView.view_utility_allowlist)
|
|
140
|
+
|
|
141
|
+
# Marks the types as being cython_builtin_type so that they can be
|
|
142
|
+
# extended from without Cython attempting to import cython.view
|
|
143
|
+
ext_types = [ entry.type
|
|
144
|
+
for entry in view_utility_scope.entries.values()
|
|
145
|
+
if entry.type.is_extension_type ]
|
|
146
|
+
for ext_type in ext_types:
|
|
147
|
+
ext_type.is_cython_builtin_type = 1
|
|
148
|
+
|
|
149
|
+
# self.entries["array"] = view_utility_scope.entries.pop("array")
|
|
150
|
+
|
|
151
|
+
# dataclasses scope
|
|
152
|
+
dc_str = EncodedString('dataclasses')
|
|
153
|
+
dataclassesscope = ModuleScope(dc_str, self, context=None)
|
|
154
|
+
self.declare_module(dc_str, dataclassesscope, pos=None).as_module = dataclassesscope
|
|
155
|
+
dataclassesscope.is_cython_builtin = True
|
|
156
|
+
dataclassesscope.pxd_file_loaded = True
|
|
157
|
+
# doesn't actually have any contents
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def create_cython_scope(context):
|
|
161
|
+
# One could in fact probably make it a singleton,
|
|
162
|
+
# but not sure yet whether any code mutates it (which would kill reusing
|
|
163
|
+
# it across different contexts)
|
|
164
|
+
return CythonScope(context)
|
|
165
|
+
|
|
166
|
+
# Load test utilities for the cython scope
|
|
167
|
+
|
|
168
|
+
def load_testscope_utility(cy_util_name, **kwargs):
|
|
169
|
+
return CythonUtilityCode.load(cy_util_name, "TestCythonScope.pyx", **kwargs)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
undecorated_methods_protos = UtilityCode(proto="""
|
|
173
|
+
/* These methods are undecorated and have therefore no prototype */
|
|
174
|
+
static PyObject *__pyx_TestClass_cdef_method(
|
|
175
|
+
struct __pyx_TestClass_obj *self, int value);
|
|
176
|
+
static PyObject *__pyx_TestClass_cpdef_method(
|
|
177
|
+
struct __pyx_TestClass_obj *self, int value, int skip_dispatch);
|
|
178
|
+
static PyObject *__pyx_TestClass_def_method(
|
|
179
|
+
PyObject *self, PyObject *value);
|
|
180
|
+
""")
|
|
181
|
+
|
|
182
|
+
cython_testscope_utility_code = load_testscope_utility("TestScope")
|
|
183
|
+
|
|
184
|
+
test_cython_utility_dep = load_testscope_utility("TestDep")
|
|
185
|
+
|
|
186
|
+
cython_test_extclass_utility_code = \
|
|
187
|
+
load_testscope_utility("TestClass", name="TestClass",
|
|
188
|
+
requires=[undecorated_methods_protos,
|
|
189
|
+
test_cython_utility_dep])
|
|
190
|
+
|
|
191
|
+
cythonview_testscope_utility_code = load_testscope_utility("View.TestScope")
|