Cython 3.3.0__cp315-cp315-win_amd64.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.
Files changed (339) hide show
  1. Cython/Build/BuildExecutable.py +156 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +349 -0
  4. Cython/Build/Dependencies.py +1281 -0
  5. Cython/Build/Distutils.py +1 -0
  6. Cython/Build/Inline.py +467 -0
  7. Cython/Build/IpythonMagic.py +559 -0
  8. Cython/Build/SharedModule.py +165 -0
  9. Cython/Build/Tests/TestCyCache.py +195 -0
  10. Cython/Build/Tests/TestCythonizeArgsParser.py +480 -0
  11. Cython/Build/Tests/TestDependencies.py +133 -0
  12. Cython/Build/Tests/TestInline.py +177 -0
  13. Cython/Build/Tests/TestIpythonMagic.py +303 -0
  14. Cython/Build/Tests/TestRecythonize.py +212 -0
  15. Cython/Build/Tests/TestStripLiterals.py +155 -0
  16. Cython/Build/Tests/__init__.py +1 -0
  17. Cython/Build/__init__.py +11 -0
  18. Cython/CodeWriter.py +825 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +328 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +679 -0
  23. Cython/Compiler/Builtin.py +1102 -0
  24. Cython/Compiler/CmdLine.py +373 -0
  25. Cython/Compiler/Code.cp315-win_amd64.pyd +0 -0
  26. Cython/Compiler/Code.pxd +154 -0
  27. Cython/Compiler/Code.py +3760 -0
  28. Cython/Compiler/CodeGeneration.py +33 -0
  29. Cython/Compiler/CythonScope.py +208 -0
  30. Cython/Compiler/Dataclass.py +890 -0
  31. Cython/Compiler/DebugFlags.py +24 -0
  32. Cython/Compiler/Errors.py +310 -0
  33. Cython/Compiler/ExprNodes.py +16273 -0
  34. Cython/Compiler/FlowControl.cp315-win_amd64.pyd +0 -0
  35. Cython/Compiler/FlowControl.pxd +112 -0
  36. Cython/Compiler/FlowControl.py +1573 -0
  37. Cython/Compiler/FusedNode.cp315-win_amd64.pyd +0 -0
  38. Cython/Compiler/FusedNode.py +978 -0
  39. Cython/Compiler/Future.py +16 -0
  40. Cython/Compiler/Interpreter.py +57 -0
  41. Cython/Compiler/Lexicon.py +422 -0
  42. Cython/Compiler/LineTable.cp315-win_amd64.pyd +0 -0
  43. Cython/Compiler/LineTable.py +114 -0
  44. Cython/Compiler/Main.py +856 -0
  45. Cython/Compiler/MatchCaseNodes.py +2200 -0
  46. Cython/Compiler/MemoryView.py +930 -0
  47. Cython/Compiler/ModuleNode.py +4548 -0
  48. Cython/Compiler/Naming.py +370 -0
  49. Cython/Compiler/Nodes.py +11304 -0
  50. Cython/Compiler/Optimize.py +5564 -0
  51. Cython/Compiler/Options.py +840 -0
  52. Cython/Compiler/ParseTreeTransforms.pxd +80 -0
  53. Cython/Compiler/ParseTreeTransforms.py +4808 -0
  54. Cython/Compiler/Parsing.cp315-win_amd64.pyd +0 -0
  55. Cython/Compiler/Parsing.pxd +9 -0
  56. Cython/Compiler/Parsing.py +4809 -0
  57. Cython/Compiler/Pipeline.py +439 -0
  58. Cython/Compiler/PyrexTypes.py +6588 -0
  59. Cython/Compiler/Pythran.py +232 -0
  60. Cython/Compiler/Scanning.cp315-win_amd64.pyd +0 -0
  61. Cython/Compiler/Scanning.pxd +70 -0
  62. Cython/Compiler/Scanning.py +720 -0
  63. Cython/Compiler/StringEncoding.cp315-win_amd64.pyd +0 -0
  64. Cython/Compiler/StringEncoding.py +354 -0
  65. Cython/Compiler/Symtab.py +3121 -0
  66. Cython/Compiler/Tests/TestBuffer.py +105 -0
  67. Cython/Compiler/Tests/TestBuiltin.py +196 -0
  68. Cython/Compiler/Tests/TestCmdLine.py +652 -0
  69. Cython/Compiler/Tests/TestCode.py +145 -0
  70. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  71. Cython/Compiler/Tests/TestGrammar.py +202 -0
  72. Cython/Compiler/Tests/TestMemView.py +71 -0
  73. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  74. Cython/Compiler/Tests/TestScanning.py +132 -0
  75. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  76. Cython/Compiler/Tests/TestStringEncoding.py +20 -0
  77. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  78. Cython/Compiler/Tests/TestTreePath.py +103 -0
  79. Cython/Compiler/Tests/TestTypes.py +119 -0
  80. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  81. Cython/Compiler/Tests/TestVisitor.py +119 -0
  82. Cython/Compiler/Tests/Utils.py +36 -0
  83. Cython/Compiler/Tests/__init__.py +1 -0
  84. Cython/Compiler/TreeFragment.py +279 -0
  85. Cython/Compiler/TreePath.py +303 -0
  86. Cython/Compiler/TypeInference.py +611 -0
  87. Cython/Compiler/TypeSlots.py +1329 -0
  88. Cython/Compiler/UFuncs.py +317 -0
  89. Cython/Compiler/UtilNodes.py +389 -0
  90. Cython/Compiler/UtilityCode.py +354 -0
  91. Cython/Compiler/Version.py +8 -0
  92. Cython/Compiler/Visitor.cp315-win_amd64.pyd +0 -0
  93. Cython/Compiler/Visitor.pxd +52 -0
  94. Cython/Compiler/Visitor.py +914 -0
  95. Cython/Compiler/__init__.py +1 -0
  96. Cython/Coverage.py +448 -0
  97. Cython/Debugger/Cygdb.py +214 -0
  98. Cython/Debugger/DebugWriter.py +82 -0
  99. Cython/Debugger/Tests/TestLibCython.py +280 -0
  100. Cython/Debugger/Tests/__init__.py +1 -0
  101. Cython/Debugger/Tests/cfuncs.c +8 -0
  102. Cython/Debugger/Tests/codefile +49 -0
  103. Cython/Debugger/Tests/test_libcython_in_gdb.py +580 -0
  104. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  105. Cython/Debugger/__init__.py +1 -0
  106. Cython/Debugger/libcython.py +1548 -0
  107. Cython/Debugger/libpython.py +2821 -0
  108. Cython/Debugging.py +20 -0
  109. Cython/Distutils/__init__.py +2 -0
  110. Cython/Distutils/build_ext.py +143 -0
  111. Cython/Distutils/extension.py +96 -0
  112. Cython/Distutils/old_build_ext.py +351 -0
  113. Cython/Includes/cpython/__init__.pxd +173 -0
  114. Cython/Includes/cpython/array.pxd +152 -0
  115. Cython/Includes/cpython/bool.pxd +37 -0
  116. Cython/Includes/cpython/buffer.pxd +112 -0
  117. Cython/Includes/cpython/bytearray.pxd +33 -0
  118. Cython/Includes/cpython/bytes.pxd +200 -0
  119. Cython/Includes/cpython/cellobject.pxd +35 -0
  120. Cython/Includes/cpython/ceval.pxd +8 -0
  121. Cython/Includes/cpython/codecs.pxd +121 -0
  122. Cython/Includes/cpython/complex.pxd +60 -0
  123. Cython/Includes/cpython/contextvars.pxd +145 -0
  124. Cython/Includes/cpython/conversion.pxd +36 -0
  125. Cython/Includes/cpython/datetime.pxd +395 -0
  126. Cython/Includes/cpython/descr.pxd +26 -0
  127. Cython/Includes/cpython/dict.pxd +268 -0
  128. Cython/Includes/cpython/exc.pxd +263 -0
  129. Cython/Includes/cpython/fileobject.pxd +57 -0
  130. Cython/Includes/cpython/float.pxd +56 -0
  131. Cython/Includes/cpython/frozendict.pxd +37 -0
  132. Cython/Includes/cpython/function.pxd +65 -0
  133. Cython/Includes/cpython/genobject.pxd +25 -0
  134. Cython/Includes/cpython/getargs.pxd +12 -0
  135. Cython/Includes/cpython/instance.pxd +25 -0
  136. Cython/Includes/cpython/iterator.pxd +36 -0
  137. Cython/Includes/cpython/iterobject.pxd +24 -0
  138. Cython/Includes/cpython/list.pxd +144 -0
  139. Cython/Includes/cpython/long.pxd +180 -0
  140. Cython/Includes/cpython/longintrepr.pxd +14 -0
  141. Cython/Includes/cpython/mapping.pxd +63 -0
  142. Cython/Includes/cpython/marshal.pxd +66 -0
  143. Cython/Includes/cpython/mem.pxd +120 -0
  144. Cython/Includes/cpython/memoryview.pxd +50 -0
  145. Cython/Includes/cpython/method.pxd +49 -0
  146. Cython/Includes/cpython/module.pxd +208 -0
  147. Cython/Includes/cpython/number.pxd +258 -0
  148. Cython/Includes/cpython/object.pxd +430 -0
  149. Cython/Includes/cpython/pycapsule.pxd +143 -0
  150. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  151. Cython/Includes/cpython/pyport.pxd +8 -0
  152. Cython/Includes/cpython/pystate.pxd +95 -0
  153. Cython/Includes/cpython/pythread.pxd +53 -0
  154. Cython/Includes/cpython/ref.pxd +141 -0
  155. Cython/Includes/cpython/sentinel.pxd +17 -0
  156. Cython/Includes/cpython/sequence.pxd +134 -0
  157. Cython/Includes/cpython/set.pxd +119 -0
  158. Cython/Includes/cpython/slice.pxd +70 -0
  159. Cython/Includes/cpython/time.pxd +129 -0
  160. Cython/Includes/cpython/tuple.pxd +72 -0
  161. Cython/Includes/cpython/type.pxd +146 -0
  162. Cython/Includes/cpython/unicode.pxd +639 -0
  163. Cython/Includes/cpython/version.pxd +32 -0
  164. Cython/Includes/cpython/weakref.pxd +78 -0
  165. Cython/Includes/libc/__init__.pxd +1 -0
  166. Cython/Includes/libc/complex.pxd +35 -0
  167. Cython/Includes/libc/errno.pxd +127 -0
  168. Cython/Includes/libc/float.pxd +43 -0
  169. Cython/Includes/libc/limits.pxd +28 -0
  170. Cython/Includes/libc/locale.pxd +46 -0
  171. Cython/Includes/libc/math.pxd +209 -0
  172. Cython/Includes/libc/setjmp.pxd +10 -0
  173. Cython/Includes/libc/signal.pxd +64 -0
  174. Cython/Includes/libc/stddef.pxd +9 -0
  175. Cython/Includes/libc/stdint.pxd +105 -0
  176. Cython/Includes/libc/stdio.pxd +80 -0
  177. Cython/Includes/libc/stdlib.pxd +72 -0
  178. Cython/Includes/libc/string.pxd +50 -0
  179. Cython/Includes/libc/threads.pxd +234 -0
  180. Cython/Includes/libc/time.pxd +52 -0
  181. Cython/Includes/libcpp/__init__.pxd +4 -0
  182. Cython/Includes/libcpp/algorithm.pxd +320 -0
  183. Cython/Includes/libcpp/any.pxd +16 -0
  184. Cython/Includes/libcpp/atomic.pxd +59 -0
  185. Cython/Includes/libcpp/barrier.pxd +22 -0
  186. Cython/Includes/libcpp/bit.pxd +29 -0
  187. Cython/Includes/libcpp/cast.pxd +12 -0
  188. Cython/Includes/libcpp/cmath.pxd +518 -0
  189. Cython/Includes/libcpp/complex.pxd +106 -0
  190. Cython/Includes/libcpp/condition_variable.pxd +322 -0
  191. Cython/Includes/libcpp/deque.pxd +165 -0
  192. Cython/Includes/libcpp/exception.pxd +216 -0
  193. Cython/Includes/libcpp/execution.pxd +15 -0
  194. Cython/Includes/libcpp/forward_list.pxd +63 -0
  195. Cython/Includes/libcpp/functional.pxd +26 -0
  196. Cython/Includes/libcpp/future.pxd +103 -0
  197. Cython/Includes/libcpp/iterator.pxd +34 -0
  198. Cython/Includes/libcpp/latch.pxd +17 -0
  199. Cython/Includes/libcpp/limits.pxd +61 -0
  200. Cython/Includes/libcpp/list.pxd +117 -0
  201. Cython/Includes/libcpp/map.pxd +252 -0
  202. Cython/Includes/libcpp/memory.pxd +115 -0
  203. Cython/Includes/libcpp/mutex.pxd +387 -0
  204. Cython/Includes/libcpp/numbers.pxd +15 -0
  205. Cython/Includes/libcpp/numeric.pxd +131 -0
  206. Cython/Includes/libcpp/optional.pxd +34 -0
  207. Cython/Includes/libcpp/pair.pxd +1 -0
  208. Cython/Includes/libcpp/queue.pxd +25 -0
  209. Cython/Includes/libcpp/random.pxd +166 -0
  210. Cython/Includes/libcpp/semaphore.pxd +43 -0
  211. Cython/Includes/libcpp/set.pxd +228 -0
  212. Cython/Includes/libcpp/shared_mutex.pxd +96 -0
  213. Cython/Includes/libcpp/span.pxd +87 -0
  214. Cython/Includes/libcpp/stack.pxd +11 -0
  215. Cython/Includes/libcpp/stop_token.pxd +117 -0
  216. Cython/Includes/libcpp/string.pxd +355 -0
  217. Cython/Includes/libcpp/string_view.pxd +183 -0
  218. Cython/Includes/libcpp/typeindex.pxd +15 -0
  219. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  220. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  221. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  222. Cython/Includes/libcpp/utility.pxd +30 -0
  223. Cython/Includes/libcpp/vector.pxd +186 -0
  224. Cython/Includes/numpy/math.pxd +150 -0
  225. Cython/Includes/openmp.pxd +50 -0
  226. Cython/Includes/posix/__init__.pxd +1 -0
  227. Cython/Includes/posix/dlfcn.pxd +14 -0
  228. Cython/Includes/posix/fcntl.pxd +86 -0
  229. Cython/Includes/posix/ioctl.pxd +4 -0
  230. Cython/Includes/posix/mman.pxd +101 -0
  231. Cython/Includes/posix/resource.pxd +57 -0
  232. Cython/Includes/posix/select.pxd +21 -0
  233. Cython/Includes/posix/signal.pxd +73 -0
  234. Cython/Includes/posix/stat.pxd +98 -0
  235. Cython/Includes/posix/stdio.pxd +37 -0
  236. Cython/Includes/posix/stdlib.pxd +29 -0
  237. Cython/Includes/posix/strings.pxd +9 -0
  238. Cython/Includes/posix/time.pxd +71 -0
  239. Cython/Includes/posix/types.pxd +30 -0
  240. Cython/Includes/posix/uio.pxd +26 -0
  241. Cython/Includes/posix/unistd.pxd +271 -0
  242. Cython/Includes/posix/wait.pxd +38 -0
  243. Cython/LZSS.cp315-win_amd64.pyd +0 -0
  244. Cython/LZSS.py +184 -0
  245. Cython/Plex/Actions.cp315-win_amd64.pyd +0 -0
  246. Cython/Plex/Actions.pxd +24 -0
  247. Cython/Plex/Actions.py +119 -0
  248. Cython/Plex/DFA.cp315-win_amd64.pyd +0 -0
  249. Cython/Plex/DFA.pxd +14 -0
  250. Cython/Plex/DFA.py +164 -0
  251. Cython/Plex/Errors.py +48 -0
  252. Cython/Plex/Lexicons.py +178 -0
  253. Cython/Plex/Machines.cp315-win_amd64.pyd +0 -0
  254. Cython/Plex/Machines.pxd +36 -0
  255. Cython/Plex/Machines.py +238 -0
  256. Cython/Plex/Regexps.py +535 -0
  257. Cython/Plex/Scanners.cp315-win_amd64.pyd +0 -0
  258. Cython/Plex/Scanners.pxd +45 -0
  259. Cython/Plex/Scanners.py +328 -0
  260. Cython/Plex/Transitions.cp315-win_amd64.pyd +0 -0
  261. Cython/Plex/Transitions.pxd +14 -0
  262. Cython/Plex/Transitions.py +239 -0
  263. Cython/Plex/__init__.py +34 -0
  264. Cython/Runtime/__init__.py +1 -0
  265. Cython/Runtime/refnanny.cp315-win_amd64.pyd +0 -0
  266. Cython/Runtime/refnanny.pyx +237 -0
  267. Cython/Shadow.py +1174 -0
  268. Cython/StringIOTree.cp315-win_amd64.pyd +0 -0
  269. Cython/StringIOTree.py +169 -0
  270. Cython/Tempita/__init__.py +4 -0
  271. Cython/Tempita/_looper.py +154 -0
  272. Cython/Tempita/_tempita.cp315-win_amd64.pyd +0 -0
  273. Cython/Tempita/_tempita.py +1087 -0
  274. Cython/TestUtils.py +472 -0
  275. Cython/Tests/TestCodeWriter.py +128 -0
  276. Cython/Tests/TestCythonUtils.py +202 -0
  277. Cython/Tests/TestJediTyper.py +223 -0
  278. Cython/Tests/TestShadow.py +125 -0
  279. Cython/Tests/TestStringIOTree.py +68 -0
  280. Cython/Tests/TestTestUtils.py +89 -0
  281. Cython/Tests/__init__.py +1 -0
  282. Cython/Tests/xmlrunner.py +390 -0
  283. Cython/Utility/AsyncGen.c +1152 -0
  284. Cython/Utility/Buffer.c +866 -0
  285. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  286. Cython/Utility/Builtins.c +1068 -0
  287. Cython/Utility/CConvert.pyx +153 -0
  288. Cython/Utility/CMath.c +104 -0
  289. Cython/Utility/CommonStructures.c +244 -0
  290. Cython/Utility/Complex.c +378 -0
  291. Cython/Utility/Coroutine.c +2344 -0
  292. Cython/Utility/CpdefEnums.pyx +119 -0
  293. Cython/Utility/CppConvert.pyx +282 -0
  294. Cython/Utility/CppSupport.cpp +151 -0
  295. Cython/Utility/CythonFunction.c +2185 -0
  296. Cython/Utility/Dataclasses.c +101 -0
  297. Cython/Utility/Embed.c +129 -0
  298. Cython/Utility/Exceptions.c +1331 -0
  299. Cython/Utility/Exceptions_Cy.pyx +109 -0
  300. Cython/Utility/ExtensionTypes.c +1199 -0
  301. Cython/Utility/FunctionArguments.c +1052 -0
  302. Cython/Utility/FusedFunction.pyx +44 -0
  303. Cython/Utility/ImportExport.c +972 -0
  304. Cython/Utility/MatchCase.c +981 -0
  305. Cython/Utility/MatchCase_Cy.pyx +12 -0
  306. Cython/Utility/MemoryView.pxd +108 -0
  307. Cython/Utility/MemoryView.pyx +1499 -0
  308. Cython/Utility/MemoryView_C.c +1056 -0
  309. Cython/Utility/ModuleSetupCode.c +3319 -0
  310. Cython/Utility/NumpyImportArray.c +46 -0
  311. Cython/Utility/ObjectHandling.c +3404 -0
  312. Cython/Utility/Optimize.c +2564 -0
  313. Cython/Utility/Overflow.c +378 -0
  314. Cython/Utility/Profile.c +736 -0
  315. Cython/Utility/StringTools.c +1534 -0
  316. Cython/Utility/Synchronization.c +438 -0
  317. Cython/Utility/TString.c +369 -0
  318. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  319. Cython/Utility/TestCythonScope.pyx +75 -0
  320. Cython/Utility/TestUtilityLoader.c +12 -0
  321. Cython/Utility/TypeConversion.c +1588 -0
  322. Cython/Utility/UFuncs.pyx +50 -0
  323. Cython/Utility/UFuncs_C.c +89 -0
  324. Cython/Utility/__init__.py +28 -0
  325. Cython/Utility/arrayarray.h +172 -0
  326. Cython/Utils.cp315-win_amd64.pyd +0 -0
  327. Cython/Utils.py +680 -0
  328. Cython/__init__.py +12 -0
  329. Cython/_shared.cp315-win_amd64.pyd +0 -0
  330. Cython/py.typed +0 -0
  331. cython-3.3.0.dist-info/METADATA +555 -0
  332. cython-3.3.0.dist-info/RECORD +339 -0
  333. cython-3.3.0.dist-info/WHEEL +5 -0
  334. cython-3.3.0.dist-info/entry_points.txt +4 -0
  335. cython-3.3.0.dist-info/top_level.txt +3 -0
  336. cython.py +29 -0
  337. pyximport/__init__.py +4 -0
  338. pyximport/pyxbuild.py +160 -0
  339. 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,310 @@
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
+ class _ErrorsThreadLocals(_threadlocal):
16
+ # defaults
17
+ cython_errors_count = 0
18
+ cython_errors_listing_file = None
19
+ cython_errors_echo_file = None
20
+
21
+ def __init__(self):
22
+ # mutable defaults
23
+ self.cython_errors_warn_once_seen = set()
24
+ self.cython_errors_stack = []
25
+
26
+ def reset(self):
27
+ self.__dict__.clear()
28
+ self.__init__()
29
+
30
+ threadlocal = _ErrorsThreadLocals()
31
+
32
+ from ..Utils import open_new_file
33
+ from . import DebugFlags
34
+ from . import Options
35
+
36
+
37
+ class PyrexError(Exception):
38
+ pass
39
+
40
+
41
+ class PyrexWarning(Exception):
42
+ pass
43
+
44
+ class CannotSpecialize(PyrexError):
45
+ pass
46
+
47
+ def context(position):
48
+ source = position[0]
49
+ assert not (isinstance(source, any_string_type)), (
50
+ "Please replace filename strings with Scanning.FileSourceDescriptor instances %r" % source)
51
+ try:
52
+ F = source.get_lines()
53
+ except UnicodeDecodeError:
54
+ # file has an encoding problem
55
+ s = "[unprintable code]"
56
+ else:
57
+ s = '\n'.join(F[max(0, position[1]-6):position[1]])
58
+ s = '...\n%s\n%s^' % (s, ' '*(position[2]))
59
+
60
+ hbar = '-' * 60
61
+ s = f'{hbar}\n{s}\n{hbar}\n'
62
+ return s
63
+
64
+ def format_position(position):
65
+ if position:
66
+ return "%s:%d:%d: " % (position[0].get_error_description(),
67
+ position[1], position[2])
68
+ return ''
69
+
70
+ def format_error(message, position):
71
+ if position:
72
+ pos_str = format_position(position)
73
+ cont = context(position)
74
+ message = '\nError compiling Cython file:\n%s%s%s' % (cont, pos_str, message or '')
75
+ return message
76
+
77
+ class CompileError(PyrexError):
78
+
79
+ def __init__(self, position = None, message = ""):
80
+ self.position = position
81
+ self.message_only = message
82
+ self.formatted_message = format_error(message, position)
83
+ self.reported = False
84
+ Exception.__init__(self, self.formatted_message)
85
+ # Python Exception subclass pickling is broken,
86
+ # see https://bugs.python.org/issue1692335
87
+ self.args = (position, message)
88
+
89
+ def __str__(self):
90
+ return self.formatted_message
91
+
92
+ class CompileWarning(PyrexWarning):
93
+
94
+ def __init__(self, position = None, message = ""):
95
+ self.position = position
96
+ Exception.__init__(self, format_position(position) + message)
97
+
98
+ class InternalError(Exception):
99
+ # If this is ever raised, there is a bug in the compiler.
100
+
101
+ def __init__(self, message):
102
+ self.message_only = message
103
+ Exception.__init__(self, "Internal compiler error: %s"
104
+ % message)
105
+
106
+ class AbortError(Exception):
107
+ # Throw this to stop the compilation immediately.
108
+
109
+ def __init__(self, message):
110
+ self.message_only = message
111
+ Exception.__init__(self, "Abort error: %s" % message)
112
+
113
+ class CompilerCrash(CompileError):
114
+ # raised when an unexpected exception occurs in a transform
115
+ def __init__(self, pos, context, message, cause, stacktrace=None):
116
+ if message:
117
+ message = '\n' + message
118
+ else:
119
+ message = '\n'
120
+ self.message_only = message
121
+ if context:
122
+ message = "Compiler crash in %s%s" % (context, message)
123
+ if stacktrace:
124
+ import traceback
125
+ message += (
126
+ '\n\nCompiler crash traceback from this point on:\n' +
127
+ ''.join(traceback.format_tb(stacktrace)))
128
+ if cause:
129
+ if not stacktrace:
130
+ message += '\n'
131
+ message += '%s: %s' % (cause.__class__.__name__, cause)
132
+ CompileError.__init__(self, pos, message)
133
+ # Python Exception subclass pickling is broken,
134
+ # see https://bugs.python.org/issue1692335
135
+ self.args = (pos, context, message, cause, stacktrace)
136
+
137
+ class NoElementTreeInstalledException(PyrexError):
138
+ """raised when the user enabled options.gdb_debug but no ElementTree
139
+ implementation was found
140
+ """
141
+
142
+ def open_listing_file(path, echo_to_stderr=True):
143
+ # Begin a new error listing. If path is None, no file
144
+ # is opened, the error counter is just reset.
145
+ if path is not None:
146
+ threadlocal.cython_errors_listing_file = open_new_file(path)
147
+ else:
148
+ threadlocal.cython_errors_listing_file = None
149
+ if echo_to_stderr:
150
+ threadlocal.cython_errors_echo_file = sys.stderr
151
+ else:
152
+ threadlocal.cython_errors_echo_file = None
153
+ threadlocal.cython_errors_count = 0
154
+
155
+ def close_listing_file():
156
+ if threadlocal.cython_errors_listing_file:
157
+ threadlocal.cython_errors_listing_file.close()
158
+ threadlocal.cython_errors_listing_file = None
159
+
160
+ def report_error(err, use_stack=True):
161
+ error_stack = threadlocal.cython_errors_stack
162
+ if error_stack and use_stack:
163
+ error_stack[-1].append(err)
164
+ else:
165
+ # See Main.py for why dual reporting occurs. Quick fix for now.
166
+ if err.reported: return
167
+ err.reported = True
168
+ try: line = "%s\n" % err
169
+ except UnicodeEncodeError:
170
+ # Python <= 2.5 does this for non-ASCII Unicode exceptions
171
+ line = format_error(getattr(err, 'message_only', "[unprintable exception message]"),
172
+ getattr(err, 'position', None)) + '\n'
173
+ listing_file = threadlocal.cython_errors_listing_file
174
+ if listing_file:
175
+ try: listing_file.write(line)
176
+ except UnicodeEncodeError:
177
+ listing_file.write(line.encode('ASCII', 'replace'))
178
+ echo_file = threadlocal.cython_errors_echo_file
179
+ if echo_file:
180
+ try: echo_file.write(line)
181
+ except UnicodeEncodeError:
182
+ echo_file.write(line.encode('ASCII', 'replace'))
183
+ threadlocal.cython_errors_count += 1
184
+ if Options.fast_fail:
185
+ raise AbortError("fatal errors")
186
+
187
+ def error(position, message):
188
+ #print("Errors.error:", repr(position), repr(message)) ###
189
+ if position is None:
190
+ raise InternalError(message)
191
+ err = CompileError(position, message)
192
+ if DebugFlags.debug_exception_on_error: raise Exception(err) # debug
193
+ report_error(err)
194
+ return err
195
+
196
+
197
+ LEVEL = 1 # warn about all errors level 1 or higher
198
+
199
+ def _write_file_encode(file, line):
200
+ try:
201
+ file.write(line)
202
+ except UnicodeEncodeError:
203
+ file.write(line.encode('ascii', 'replace'))
204
+
205
+
206
+ def performance_hint(position, message, env):
207
+ if not env.directives['show_performance_hints']:
208
+ return
209
+ warn = CompileWarning(position, message)
210
+ line = "performance hint: %s\n" % warn
211
+ listing_file = threadlocal.cython_errors_listing_file
212
+ if listing_file:
213
+ _write_file_encode(listing_file, line)
214
+ echo_file = threadlocal.cython_errors_echo_file
215
+ if echo_file:
216
+ _write_file_encode(echo_file, line)
217
+ return warn
218
+
219
+
220
+ def message(position, message, level=1):
221
+ if level < LEVEL:
222
+ return
223
+ warn = CompileWarning(position, message)
224
+ line = "note: %s\n" % warn
225
+ listing_file = threadlocal.cython_errors_listing_file
226
+ if listing_file:
227
+ _write_file_encode(listing_file, line)
228
+ echo_file = threadlocal.cython_errors_echo_file
229
+ if echo_file:
230
+ _write_file_encode(echo_file, line)
231
+ return warn
232
+
233
+
234
+ def warning(position, message, level=0):
235
+ if level < LEVEL:
236
+ return
237
+ if Options.warning_errors and position:
238
+ return error(position, message)
239
+ warn = CompileWarning(position, message)
240
+ line = "warning: %s\n" % warn
241
+ listing_file = threadlocal.cython_errors_listing_file
242
+ if listing_file:
243
+ _write_file_encode(listing_file, line)
244
+ echo_file = threadlocal.cython_errors_echo_file
245
+ if echo_file:
246
+ _write_file_encode(echo_file, line)
247
+ return warn
248
+
249
+
250
+ def warn_once(position, message, level=0):
251
+ if level < LEVEL:
252
+ return
253
+ warn_once_seen = threadlocal.cython_errors_warn_once_seen
254
+ if message in warn_once_seen:
255
+ return
256
+ warn = CompileWarning(position, message)
257
+ line = "warning: %s\n" % warn
258
+ listing_file = threadlocal.cython_errors_listing_file
259
+ if listing_file:
260
+ _write_file_encode(listing_file, line)
261
+ echo_file = threadlocal.cython_errors_echo_file
262
+ if echo_file:
263
+ _write_file_encode(echo_file, line)
264
+ warn_once_seen.add(message)
265
+ return warn
266
+
267
+
268
+ # These functions can be used to momentarily suppress errors.
269
+
270
+ def hold_errors():
271
+ errors = []
272
+ threadlocal.cython_errors_stack.append(errors)
273
+ return errors
274
+
275
+
276
+ def release_errors(ignore=False):
277
+ held_errors = threadlocal.cython_errors_stack.pop()
278
+ if not ignore:
279
+ for err in held_errors:
280
+ report_error(err)
281
+
282
+
283
+ def held_errors():
284
+ return threadlocal.cython_errors_stack[-1]
285
+
286
+
287
+ # same as context manager:
288
+
289
+ @contextmanager
290
+ def local_errors(ignore=False):
291
+ errors = hold_errors()
292
+ try:
293
+ yield errors
294
+ finally:
295
+ release_errors(ignore=ignore)
296
+
297
+
298
+ # Keep all global state in thread local storage to support parallel cythonisation in distutils.
299
+
300
+ def init_thread():
301
+ # init thread is no longer necessary
302
+ # (the thread locals are now arranged to have usable defaults)
303
+ # but is left for the benefit of any external users.
304
+ reset()
305
+
306
+ def reset():
307
+ threadlocal.reset()
308
+
309
+ def get_errors_count():
310
+ return threadlocal.cython_errors_count