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,24 @@
|
|
|
1
|
+
# Can be enabled at the command line with --debug-xxx.
|
|
2
|
+
|
|
3
|
+
debug_disposal_code = 0
|
|
4
|
+
debug_temp_alloc = 0
|
|
5
|
+
debug_coercion = 0
|
|
6
|
+
|
|
7
|
+
# Write comments into the C code that show where temporary variables
|
|
8
|
+
# are allocated and released.
|
|
9
|
+
debug_temp_code_comments = 0
|
|
10
|
+
|
|
11
|
+
# Write a call trace of the code generation phase into the C code.
|
|
12
|
+
debug_trace_code_generation = 0
|
|
13
|
+
|
|
14
|
+
# Do not replace exceptions with user-friendly error messages.
|
|
15
|
+
debug_no_exception_intercept = 0
|
|
16
|
+
|
|
17
|
+
# Print a message each time a new stage in the pipeline is entered.
|
|
18
|
+
debug_verbose_pipeline = 0
|
|
19
|
+
|
|
20
|
+
# Print a message each time an Entry type is assigned.
|
|
21
|
+
debug_verbose_entry_types = False
|
|
22
|
+
|
|
23
|
+
# Raise an exception when an error is encountered.
|
|
24
|
+
debug_exception_on_error = 0
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Errors
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
any_string_type = (bytes, str)
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
from contextlib import contextmanager
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
from threading import local as _threadlocal
|
|
12
|
+
except ImportError:
|
|
13
|
+
class _threadlocal: pass
|
|
14
|
+
|
|
15
|
+
threadlocal = _threadlocal()
|
|
16
|
+
|
|
17
|
+
from ..Utils import open_new_file
|
|
18
|
+
from . import DebugFlags
|
|
19
|
+
from . import Options
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class PyrexError(Exception):
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class PyrexWarning(Exception):
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
class CannotSpecialize(PyrexError):
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
def context(position):
|
|
33
|
+
source = position[0]
|
|
34
|
+
assert not (isinstance(source, any_string_type)), (
|
|
35
|
+
"Please replace filename strings with Scanning.FileSourceDescriptor instances %r" % source)
|
|
36
|
+
try:
|
|
37
|
+
F = source.get_lines()
|
|
38
|
+
except UnicodeDecodeError:
|
|
39
|
+
# file has an encoding problem
|
|
40
|
+
s = "[unprintable code]"
|
|
41
|
+
else:
|
|
42
|
+
s = '\n'.join(F[max(0, position[1]-6):position[1]])
|
|
43
|
+
s = '...\n%s\n%s^' % (s, ' '*(position[2]))
|
|
44
|
+
|
|
45
|
+
hbar = '-' * 60
|
|
46
|
+
s = f'{hbar}\n{s}\n{hbar}\n'
|
|
47
|
+
return s
|
|
48
|
+
|
|
49
|
+
def format_position(position):
|
|
50
|
+
if position:
|
|
51
|
+
return "%s:%d:%d: " % (position[0].get_error_description(),
|
|
52
|
+
position[1], position[2])
|
|
53
|
+
return ''
|
|
54
|
+
|
|
55
|
+
def format_error(message, position):
|
|
56
|
+
if position:
|
|
57
|
+
pos_str = format_position(position)
|
|
58
|
+
cont = context(position)
|
|
59
|
+
message = '\nError compiling Cython file:\n%s%s%s' % (cont, pos_str, message or '')
|
|
60
|
+
return message
|
|
61
|
+
|
|
62
|
+
class CompileError(PyrexError):
|
|
63
|
+
|
|
64
|
+
def __init__(self, position = None, message = ""):
|
|
65
|
+
self.position = position
|
|
66
|
+
self.message_only = message
|
|
67
|
+
self.formatted_message = format_error(message, position)
|
|
68
|
+
self.reported = False
|
|
69
|
+
Exception.__init__(self, self.formatted_message)
|
|
70
|
+
# Python Exception subclass pickling is broken,
|
|
71
|
+
# see https://bugs.python.org/issue1692335
|
|
72
|
+
self.args = (position, message)
|
|
73
|
+
|
|
74
|
+
def __str__(self):
|
|
75
|
+
return self.formatted_message
|
|
76
|
+
|
|
77
|
+
class CompileWarning(PyrexWarning):
|
|
78
|
+
|
|
79
|
+
def __init__(self, position = None, message = ""):
|
|
80
|
+
self.position = position
|
|
81
|
+
Exception.__init__(self, format_position(position) + message)
|
|
82
|
+
|
|
83
|
+
class InternalError(Exception):
|
|
84
|
+
# If this is ever raised, there is a bug in the compiler.
|
|
85
|
+
|
|
86
|
+
def __init__(self, message):
|
|
87
|
+
self.message_only = message
|
|
88
|
+
Exception.__init__(self, "Internal compiler error: %s"
|
|
89
|
+
% message)
|
|
90
|
+
|
|
91
|
+
class AbortError(Exception):
|
|
92
|
+
# Throw this to stop the compilation immediately.
|
|
93
|
+
|
|
94
|
+
def __init__(self, message):
|
|
95
|
+
self.message_only = message
|
|
96
|
+
Exception.__init__(self, "Abort error: %s" % message)
|
|
97
|
+
|
|
98
|
+
class CompilerCrash(CompileError):
|
|
99
|
+
# raised when an unexpected exception occurs in a transform
|
|
100
|
+
def __init__(self, pos, context, message, cause, stacktrace=None):
|
|
101
|
+
if message:
|
|
102
|
+
message = '\n' + message
|
|
103
|
+
else:
|
|
104
|
+
message = '\n'
|
|
105
|
+
self.message_only = message
|
|
106
|
+
if context:
|
|
107
|
+
message = "Compiler crash in %s%s" % (context, message)
|
|
108
|
+
if stacktrace:
|
|
109
|
+
import traceback
|
|
110
|
+
message += (
|
|
111
|
+
'\n\nCompiler crash traceback from this point on:\n' +
|
|
112
|
+
''.join(traceback.format_tb(stacktrace)))
|
|
113
|
+
if cause:
|
|
114
|
+
if not stacktrace:
|
|
115
|
+
message += '\n'
|
|
116
|
+
message += '%s: %s' % (cause.__class__.__name__, cause)
|
|
117
|
+
CompileError.__init__(self, pos, message)
|
|
118
|
+
# Python Exception subclass pickling is broken,
|
|
119
|
+
# see https://bugs.python.org/issue1692335
|
|
120
|
+
self.args = (pos, context, message, cause, stacktrace)
|
|
121
|
+
|
|
122
|
+
class NoElementTreeInstalledException(PyrexError):
|
|
123
|
+
"""raised when the user enabled options.gdb_debug but no ElementTree
|
|
124
|
+
implementation was found
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
def open_listing_file(path, echo_to_stderr=True):
|
|
128
|
+
# Begin a new error listing. If path is None, no file
|
|
129
|
+
# is opened, the error counter is just reset.
|
|
130
|
+
if path is not None:
|
|
131
|
+
threadlocal.cython_errors_listing_file = open_new_file(path)
|
|
132
|
+
else:
|
|
133
|
+
threadlocal.cython_errors_listing_file = None
|
|
134
|
+
if echo_to_stderr:
|
|
135
|
+
threadlocal.cython_errors_echo_file = sys.stderr
|
|
136
|
+
else:
|
|
137
|
+
threadlocal.cython_errors_echo_file = None
|
|
138
|
+
threadlocal.cython_errors_count = 0
|
|
139
|
+
|
|
140
|
+
def close_listing_file():
|
|
141
|
+
if threadlocal.cython_errors_listing_file:
|
|
142
|
+
threadlocal.cython_errors_listing_file.close()
|
|
143
|
+
threadlocal.cython_errors_listing_file = None
|
|
144
|
+
|
|
145
|
+
def report_error(err, use_stack=True):
|
|
146
|
+
error_stack = threadlocal.cython_errors_stack
|
|
147
|
+
if error_stack and use_stack:
|
|
148
|
+
error_stack[-1].append(err)
|
|
149
|
+
else:
|
|
150
|
+
# See Main.py for why dual reporting occurs. Quick fix for now.
|
|
151
|
+
if err.reported: return
|
|
152
|
+
err.reported = True
|
|
153
|
+
try: line = "%s\n" % err
|
|
154
|
+
except UnicodeEncodeError:
|
|
155
|
+
# Python <= 2.5 does this for non-ASCII Unicode exceptions
|
|
156
|
+
line = format_error(getattr(err, 'message_only', "[unprintable exception message]"),
|
|
157
|
+
getattr(err, 'position', None)) + '\n'
|
|
158
|
+
listing_file = threadlocal.cython_errors_listing_file
|
|
159
|
+
if listing_file:
|
|
160
|
+
try: listing_file.write(line)
|
|
161
|
+
except UnicodeEncodeError:
|
|
162
|
+
listing_file.write(line.encode('ASCII', 'replace'))
|
|
163
|
+
echo_file = threadlocal.cython_errors_echo_file
|
|
164
|
+
if echo_file:
|
|
165
|
+
try: echo_file.write(line)
|
|
166
|
+
except UnicodeEncodeError:
|
|
167
|
+
echo_file.write(line.encode('ASCII', 'replace'))
|
|
168
|
+
threadlocal.cython_errors_count += 1
|
|
169
|
+
if Options.fast_fail:
|
|
170
|
+
raise AbortError("fatal errors")
|
|
171
|
+
|
|
172
|
+
def error(position, message):
|
|
173
|
+
#print("Errors.error:", repr(position), repr(message)) ###
|
|
174
|
+
if position is None:
|
|
175
|
+
raise InternalError(message)
|
|
176
|
+
err = CompileError(position, message)
|
|
177
|
+
if DebugFlags.debug_exception_on_error: raise Exception(err) # debug
|
|
178
|
+
report_error(err)
|
|
179
|
+
return err
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
LEVEL = 1 # warn about all errors level 1 or higher
|
|
183
|
+
|
|
184
|
+
def _write_file_encode(file, line):
|
|
185
|
+
try:
|
|
186
|
+
file.write(line)
|
|
187
|
+
except UnicodeEncodeError:
|
|
188
|
+
file.write(line.encode('ascii', 'replace'))
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def performance_hint(position, message, env):
|
|
192
|
+
if not env.directives['show_performance_hints']:
|
|
193
|
+
return
|
|
194
|
+
warn = CompileWarning(position, message)
|
|
195
|
+
line = "performance hint: %s\n" % warn
|
|
196
|
+
listing_file = threadlocal.cython_errors_listing_file
|
|
197
|
+
if listing_file:
|
|
198
|
+
_write_file_encode(listing_file, line)
|
|
199
|
+
echo_file = threadlocal.cython_errors_echo_file
|
|
200
|
+
if echo_file:
|
|
201
|
+
_write_file_encode(echo_file, line)
|
|
202
|
+
return warn
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def message(position, message, level=1):
|
|
206
|
+
if level < LEVEL:
|
|
207
|
+
return
|
|
208
|
+
warn = CompileWarning(position, message)
|
|
209
|
+
line = "note: %s\n" % warn
|
|
210
|
+
listing_file = threadlocal.cython_errors_listing_file
|
|
211
|
+
if listing_file:
|
|
212
|
+
_write_file_encode(listing_file, line)
|
|
213
|
+
echo_file = threadlocal.cython_errors_echo_file
|
|
214
|
+
if echo_file:
|
|
215
|
+
_write_file_encode(echo_file, line)
|
|
216
|
+
return warn
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def warning(position, message, level=0):
|
|
220
|
+
if level < LEVEL:
|
|
221
|
+
return
|
|
222
|
+
if Options.warning_errors and position:
|
|
223
|
+
return error(position, message)
|
|
224
|
+
warn = CompileWarning(position, message)
|
|
225
|
+
line = "warning: %s\n" % warn
|
|
226
|
+
listing_file = threadlocal.cython_errors_listing_file
|
|
227
|
+
if listing_file:
|
|
228
|
+
_write_file_encode(listing_file, line)
|
|
229
|
+
echo_file = threadlocal.cython_errors_echo_file
|
|
230
|
+
if echo_file:
|
|
231
|
+
_write_file_encode(echo_file, line)
|
|
232
|
+
return warn
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def warn_once(position, message, level=0):
|
|
236
|
+
if level < LEVEL:
|
|
237
|
+
return
|
|
238
|
+
warn_once_seen = threadlocal.cython_errors_warn_once_seen
|
|
239
|
+
if message in warn_once_seen:
|
|
240
|
+
return
|
|
241
|
+
warn = CompileWarning(position, message)
|
|
242
|
+
line = "warning: %s\n" % warn
|
|
243
|
+
listing_file = threadlocal.cython_errors_listing_file
|
|
244
|
+
if listing_file:
|
|
245
|
+
_write_file_encode(listing_file, line)
|
|
246
|
+
echo_file = threadlocal.cython_errors_echo_file
|
|
247
|
+
if echo_file:
|
|
248
|
+
_write_file_encode(echo_file, line)
|
|
249
|
+
warn_once_seen.add(message)
|
|
250
|
+
return warn
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
# These functions can be used to momentarily suppress errors.
|
|
254
|
+
|
|
255
|
+
def hold_errors():
|
|
256
|
+
errors = []
|
|
257
|
+
threadlocal.cython_errors_stack.append(errors)
|
|
258
|
+
return errors
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def release_errors(ignore=False):
|
|
262
|
+
held_errors = threadlocal.cython_errors_stack.pop()
|
|
263
|
+
if not ignore:
|
|
264
|
+
for err in held_errors:
|
|
265
|
+
report_error(err)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def held_errors():
|
|
269
|
+
return threadlocal.cython_errors_stack[-1]
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
# same as context manager:
|
|
273
|
+
|
|
274
|
+
@contextmanager
|
|
275
|
+
def local_errors(ignore=False):
|
|
276
|
+
errors = hold_errors()
|
|
277
|
+
try:
|
|
278
|
+
yield errors
|
|
279
|
+
finally:
|
|
280
|
+
release_errors(ignore=ignore)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
# Keep all global state in thread local storage to support parallel cythonisation in distutils.
|
|
284
|
+
|
|
285
|
+
def init_thread():
|
|
286
|
+
threadlocal.cython_errors_count = 0
|
|
287
|
+
threadlocal.cython_errors_listing_file = None
|
|
288
|
+
threadlocal.cython_errors_echo_file = None
|
|
289
|
+
threadlocal.cython_errors_warn_once_seen = set()
|
|
290
|
+
threadlocal.cython_errors_stack = []
|
|
291
|
+
|
|
292
|
+
def reset():
|
|
293
|
+
threadlocal.cython_errors_warn_once_seen.clear()
|
|
294
|
+
del threadlocal.cython_errors_stack[:]
|
|
295
|
+
|
|
296
|
+
def get_errors_count():
|
|
297
|
+
return threadlocal.cython_errors_count
|