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.
Files changed (333) hide show
  1. Cython/Build/BuildExecutable.py +169 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +350 -0
  4. Cython/Build/Dependencies.py +1314 -0
  5. Cython/Build/Distutils.py +1 -0
  6. Cython/Build/Inline.py +463 -0
  7. Cython/Build/IpythonMagic.py +560 -0
  8. Cython/Build/SharedModule.py +94 -0
  9. Cython/Build/Tests/TestCyCache.py +194 -0
  10. Cython/Build/Tests/TestCythonizeArgsParser.py +481 -0
  11. Cython/Build/Tests/TestDependencies.py +133 -0
  12. Cython/Build/Tests/TestInline.py +177 -0
  13. Cython/Build/Tests/TestIpythonMagic.py +287 -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 +815 -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 +680 -0
  23. Cython/Compiler/Builtin.py +984 -0
  24. Cython/Compiler/CmdLine.py +263 -0
  25. Cython/Compiler/Code.pxd +149 -0
  26. Cython/Compiler/Code.py +3746 -0
  27. Cython/Compiler/Code.pyd +0 -0
  28. Cython/Compiler/CodeGeneration.py +33 -0
  29. Cython/Compiler/CythonScope.py +191 -0
  30. Cython/Compiler/Dataclass.py +864 -0
  31. Cython/Compiler/DebugFlags.py +24 -0
  32. Cython/Compiler/Errors.py +297 -0
  33. Cython/Compiler/ExprNodes.py +15562 -0
  34. Cython/Compiler/FlowControl.pxd +97 -0
  35. Cython/Compiler/FlowControl.py +1451 -0
  36. Cython/Compiler/FlowControl.pyd +0 -0
  37. Cython/Compiler/FusedNode.py +971 -0
  38. Cython/Compiler/FusedNode.pyd +0 -0
  39. Cython/Compiler/Future.py +16 -0
  40. Cython/Compiler/Interpreter.py +57 -0
  41. Cython/Compiler/Lexicon.py +421 -0
  42. Cython/Compiler/LineTable.py +114 -0
  43. Cython/Compiler/LineTable.pyd +0 -0
  44. Cython/Compiler/Main.py +857 -0
  45. Cython/Compiler/MatchCaseNodes.py +259 -0
  46. Cython/Compiler/MemoryView.py +905 -0
  47. Cython/Compiler/ModuleNode.py +4235 -0
  48. Cython/Compiler/Naming.py +363 -0
  49. Cython/Compiler/Nodes.py +10831 -0
  50. Cython/Compiler/Optimize.py +5288 -0
  51. Cython/Compiler/Options.py +843 -0
  52. Cython/Compiler/ParseTreeTransforms.pxd +78 -0
  53. Cython/Compiler/ParseTreeTransforms.py +4638 -0
  54. Cython/Compiler/Parsing.pxd +9 -0
  55. Cython/Compiler/Parsing.py +4775 -0
  56. Cython/Compiler/Parsing.pyd +0 -0
  57. Cython/Compiler/Pipeline.py +439 -0
  58. Cython/Compiler/PyrexTypes.py +5870 -0
  59. Cython/Compiler/Pythran.py +232 -0
  60. Cython/Compiler/Scanning.pxd +48 -0
  61. Cython/Compiler/Scanning.py +701 -0
  62. Cython/Compiler/Scanning.pyd +0 -0
  63. Cython/Compiler/StringEncoding.py +298 -0
  64. Cython/Compiler/Symtab.py +3073 -0
  65. Cython/Compiler/Tests/TestBuffer.py +105 -0
  66. Cython/Compiler/Tests/TestBuiltin.py +72 -0
  67. Cython/Compiler/Tests/TestCmdLine.py +586 -0
  68. Cython/Compiler/Tests/TestCode.py +144 -0
  69. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  70. Cython/Compiler/Tests/TestGrammar.py +202 -0
  71. Cython/Compiler/Tests/TestMemView.py +71 -0
  72. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  73. Cython/Compiler/Tests/TestScanning.py +134 -0
  74. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  75. Cython/Compiler/Tests/TestStringEncoding.py +21 -0
  76. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  77. Cython/Compiler/Tests/TestTreePath.py +103 -0
  78. Cython/Compiler/Tests/TestTypes.py +75 -0
  79. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  80. Cython/Compiler/Tests/TestVisitor.py +61 -0
  81. Cython/Compiler/Tests/Utils.py +36 -0
  82. Cython/Compiler/Tests/__init__.py +1 -0
  83. Cython/Compiler/TreeFragment.py +278 -0
  84. Cython/Compiler/TreePath.py +303 -0
  85. Cython/Compiler/TypeInference.py +591 -0
  86. Cython/Compiler/TypeSlots.py +1174 -0
  87. Cython/Compiler/UFuncs.py +311 -0
  88. Cython/Compiler/UtilNodes.py +389 -0
  89. Cython/Compiler/UtilityCode.py +344 -0
  90. Cython/Compiler/Version.py +8 -0
  91. Cython/Compiler/Visitor.pxd +53 -0
  92. Cython/Compiler/Visitor.py +861 -0
  93. Cython/Compiler/Visitor.pyd +0 -0
  94. Cython/Compiler/__init__.py +1 -0
  95. Cython/Coverage.py +448 -0
  96. Cython/Debugger/Cygdb.py +177 -0
  97. Cython/Debugger/DebugWriter.py +82 -0
  98. Cython/Debugger/Tests/TestLibCython.py +275 -0
  99. Cython/Debugger/Tests/__init__.py +1 -0
  100. Cython/Debugger/Tests/cfuncs.c +8 -0
  101. Cython/Debugger/Tests/codefile +49 -0
  102. Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
  103. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  104. Cython/Debugger/__init__.py +1 -0
  105. Cython/Debugger/libcython.py +1548 -0
  106. Cython/Debugger/libpython.py +2821 -0
  107. Cython/Debugging.py +20 -0
  108. Cython/Distutils/__init__.py +2 -0
  109. Cython/Distutils/build_ext.py +139 -0
  110. Cython/Distutils/extension.py +96 -0
  111. Cython/Distutils/old_build_ext.py +351 -0
  112. Cython/Includes/cpython/__init__.pxd +173 -0
  113. Cython/Includes/cpython/array.pxd +178 -0
  114. Cython/Includes/cpython/bool.pxd +37 -0
  115. Cython/Includes/cpython/buffer.pxd +112 -0
  116. Cython/Includes/cpython/bytearray.pxd +33 -0
  117. Cython/Includes/cpython/bytes.pxd +200 -0
  118. Cython/Includes/cpython/cellobject.pxd +35 -0
  119. Cython/Includes/cpython/ceval.pxd +8 -0
  120. Cython/Includes/cpython/codecs.pxd +121 -0
  121. Cython/Includes/cpython/complex.pxd +60 -0
  122. Cython/Includes/cpython/contextvars.pxd +145 -0
  123. Cython/Includes/cpython/conversion.pxd +36 -0
  124. Cython/Includes/cpython/datetime.pxd +395 -0
  125. Cython/Includes/cpython/descr.pxd +26 -0
  126. Cython/Includes/cpython/dict.pxd +187 -0
  127. Cython/Includes/cpython/exc.pxd +263 -0
  128. Cython/Includes/cpython/fileobject.pxd +57 -0
  129. Cython/Includes/cpython/float.pxd +47 -0
  130. Cython/Includes/cpython/function.pxd +65 -0
  131. Cython/Includes/cpython/genobject.pxd +25 -0
  132. Cython/Includes/cpython/getargs.pxd +12 -0
  133. Cython/Includes/cpython/instance.pxd +25 -0
  134. Cython/Includes/cpython/iterator.pxd +36 -0
  135. Cython/Includes/cpython/iterobject.pxd +24 -0
  136. Cython/Includes/cpython/list.pxd +92 -0
  137. Cython/Includes/cpython/long.pxd +149 -0
  138. Cython/Includes/cpython/longintrepr.pxd +14 -0
  139. Cython/Includes/cpython/mapping.pxd +63 -0
  140. Cython/Includes/cpython/marshal.pxd +66 -0
  141. Cython/Includes/cpython/mem.pxd +120 -0
  142. Cython/Includes/cpython/memoryview.pxd +50 -0
  143. Cython/Includes/cpython/method.pxd +49 -0
  144. Cython/Includes/cpython/module.pxd +208 -0
  145. Cython/Includes/cpython/number.pxd +258 -0
  146. Cython/Includes/cpython/object.pxd +433 -0
  147. Cython/Includes/cpython/pycapsule.pxd +143 -0
  148. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  149. Cython/Includes/cpython/pyport.pxd +8 -0
  150. Cython/Includes/cpython/pystate.pxd +95 -0
  151. Cython/Includes/cpython/pythread.pxd +53 -0
  152. Cython/Includes/cpython/ref.pxd +141 -0
  153. Cython/Includes/cpython/sequence.pxd +134 -0
  154. Cython/Includes/cpython/set.pxd +119 -0
  155. Cython/Includes/cpython/slice.pxd +70 -0
  156. Cython/Includes/cpython/time.pxd +129 -0
  157. Cython/Includes/cpython/tuple.pxd +72 -0
  158. Cython/Includes/cpython/type.pxd +53 -0
  159. Cython/Includes/cpython/unicode.pxd +639 -0
  160. Cython/Includes/cpython/version.pxd +32 -0
  161. Cython/Includes/cpython/weakref.pxd +78 -0
  162. Cython/Includes/libc/__init__.pxd +1 -0
  163. Cython/Includes/libc/complex.pxd +35 -0
  164. Cython/Includes/libc/errno.pxd +127 -0
  165. Cython/Includes/libc/float.pxd +43 -0
  166. Cython/Includes/libc/limits.pxd +28 -0
  167. Cython/Includes/libc/locale.pxd +46 -0
  168. Cython/Includes/libc/math.pxd +209 -0
  169. Cython/Includes/libc/setjmp.pxd +10 -0
  170. Cython/Includes/libc/signal.pxd +64 -0
  171. Cython/Includes/libc/stddef.pxd +9 -0
  172. Cython/Includes/libc/stdint.pxd +105 -0
  173. Cython/Includes/libc/stdio.pxd +80 -0
  174. Cython/Includes/libc/stdlib.pxd +72 -0
  175. Cython/Includes/libc/string.pxd +50 -0
  176. Cython/Includes/libc/threads.pxd +234 -0
  177. Cython/Includes/libc/time.pxd +52 -0
  178. Cython/Includes/libcpp/__init__.pxd +4 -0
  179. Cython/Includes/libcpp/algorithm.pxd +320 -0
  180. Cython/Includes/libcpp/any.pxd +16 -0
  181. Cython/Includes/libcpp/atomic.pxd +59 -0
  182. Cython/Includes/libcpp/barrier.pxd +22 -0
  183. Cython/Includes/libcpp/bit.pxd +29 -0
  184. Cython/Includes/libcpp/cast.pxd +12 -0
  185. Cython/Includes/libcpp/cmath.pxd +518 -0
  186. Cython/Includes/libcpp/complex.pxd +106 -0
  187. Cython/Includes/libcpp/condition_variable.pxd +322 -0
  188. Cython/Includes/libcpp/deque.pxd +165 -0
  189. Cython/Includes/libcpp/exception.pxd +86 -0
  190. Cython/Includes/libcpp/execution.pxd +15 -0
  191. Cython/Includes/libcpp/forward_list.pxd +63 -0
  192. Cython/Includes/libcpp/functional.pxd +26 -0
  193. Cython/Includes/libcpp/future.pxd +103 -0
  194. Cython/Includes/libcpp/iterator.pxd +34 -0
  195. Cython/Includes/libcpp/latch.pxd +17 -0
  196. Cython/Includes/libcpp/limits.pxd +61 -0
  197. Cython/Includes/libcpp/list.pxd +117 -0
  198. Cython/Includes/libcpp/map.pxd +252 -0
  199. Cython/Includes/libcpp/memory.pxd +115 -0
  200. Cython/Includes/libcpp/mutex.pxd +387 -0
  201. Cython/Includes/libcpp/numbers.pxd +15 -0
  202. Cython/Includes/libcpp/numeric.pxd +131 -0
  203. Cython/Includes/libcpp/optional.pxd +34 -0
  204. Cython/Includes/libcpp/pair.pxd +1 -0
  205. Cython/Includes/libcpp/queue.pxd +25 -0
  206. Cython/Includes/libcpp/random.pxd +166 -0
  207. Cython/Includes/libcpp/semaphore.pxd +43 -0
  208. Cython/Includes/libcpp/set.pxd +228 -0
  209. Cython/Includes/libcpp/shared_mutex.pxd +96 -0
  210. Cython/Includes/libcpp/span.pxd +87 -0
  211. Cython/Includes/libcpp/stack.pxd +11 -0
  212. Cython/Includes/libcpp/stop_token.pxd +117 -0
  213. Cython/Includes/libcpp/string.pxd +355 -0
  214. Cython/Includes/libcpp/string_view.pxd +183 -0
  215. Cython/Includes/libcpp/typeindex.pxd +15 -0
  216. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  217. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  218. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  219. Cython/Includes/libcpp/utility.pxd +30 -0
  220. Cython/Includes/libcpp/vector.pxd +186 -0
  221. Cython/Includes/numpy/math.pxd +150 -0
  222. Cython/Includes/openmp.pxd +50 -0
  223. Cython/Includes/posix/__init__.pxd +1 -0
  224. Cython/Includes/posix/dlfcn.pxd +14 -0
  225. Cython/Includes/posix/fcntl.pxd +86 -0
  226. Cython/Includes/posix/ioctl.pxd +4 -0
  227. Cython/Includes/posix/mman.pxd +101 -0
  228. Cython/Includes/posix/resource.pxd +57 -0
  229. Cython/Includes/posix/select.pxd +21 -0
  230. Cython/Includes/posix/signal.pxd +73 -0
  231. Cython/Includes/posix/stat.pxd +98 -0
  232. Cython/Includes/posix/stdio.pxd +37 -0
  233. Cython/Includes/posix/stdlib.pxd +29 -0
  234. Cython/Includes/posix/strings.pxd +9 -0
  235. Cython/Includes/posix/time.pxd +71 -0
  236. Cython/Includes/posix/types.pxd +30 -0
  237. Cython/Includes/posix/uio.pxd +26 -0
  238. Cython/Includes/posix/unistd.pxd +271 -0
  239. Cython/Includes/posix/wait.pxd +38 -0
  240. Cython/Plex/Actions.pxd +24 -0
  241. Cython/Plex/Actions.py +119 -0
  242. Cython/Plex/Actions.pyd +0 -0
  243. Cython/Plex/DFA.pxd +14 -0
  244. Cython/Plex/DFA.py +164 -0
  245. Cython/Plex/DFA.pyd +0 -0
  246. Cython/Plex/Errors.py +48 -0
  247. Cython/Plex/Lexicons.py +178 -0
  248. Cython/Plex/Machines.pxd +36 -0
  249. Cython/Plex/Machines.py +238 -0
  250. Cython/Plex/Machines.pyd +0 -0
  251. Cython/Plex/Regexps.py +535 -0
  252. Cython/Plex/Scanners.pxd +45 -0
  253. Cython/Plex/Scanners.py +328 -0
  254. Cython/Plex/Scanners.pyd +0 -0
  255. Cython/Plex/Transitions.pxd +14 -0
  256. Cython/Plex/Transitions.py +239 -0
  257. Cython/Plex/Transitions.pyd +0 -0
  258. Cython/Plex/__init__.py +34 -0
  259. Cython/Runtime/__init__.py +1 -0
  260. Cython/Runtime/refnanny.pyd +0 -0
  261. Cython/Runtime/refnanny.pyx +237 -0
  262. Cython/Shadow.py +690 -0
  263. Cython/Shadow.pyi +521 -0
  264. Cython/StringIOTree.py +170 -0
  265. Cython/StringIOTree.pyd +0 -0
  266. Cython/Tempita/__init__.py +4 -0
  267. Cython/Tempita/_looper.py +154 -0
  268. Cython/Tempita/_tempita.py +1091 -0
  269. Cython/Tempita/_tempita.pyd +0 -0
  270. Cython/TestUtils.py +422 -0
  271. Cython/Tests/TestCodeWriter.py +128 -0
  272. Cython/Tests/TestCythonUtils.py +202 -0
  273. Cython/Tests/TestJediTyper.py +223 -0
  274. Cython/Tests/TestShadow.py +114 -0
  275. Cython/Tests/TestStringIOTree.py +67 -0
  276. Cython/Tests/TestTestUtils.py +90 -0
  277. Cython/Tests/__init__.py +1 -0
  278. Cython/Tests/xmlrunner.py +390 -0
  279. Cython/Utility/AsyncGen.c +1031 -0
  280. Cython/Utility/Buffer.c +865 -0
  281. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  282. Cython/Utility/Builtins.c +810 -0
  283. Cython/Utility/CConvert.pyx +134 -0
  284. Cython/Utility/CMath.c +104 -0
  285. Cython/Utility/CommonStructures.c +226 -0
  286. Cython/Utility/Complex.c +378 -0
  287. Cython/Utility/Coroutine.c +2300 -0
  288. Cython/Utility/CpdefEnums.pyx +103 -0
  289. Cython/Utility/CppConvert.pyx +282 -0
  290. Cython/Utility/CppSupport.cpp +151 -0
  291. Cython/Utility/CythonFunction.c +1832 -0
  292. Cython/Utility/Dataclasses.c +101 -0
  293. Cython/Utility/Embed.c +121 -0
  294. Cython/Utility/Exceptions.c +1016 -0
  295. Cython/Utility/ExtensionTypes.c +996 -0
  296. Cython/Utility/FunctionArguments.c +1043 -0
  297. Cython/Utility/FusedFunction.pyx +44 -0
  298. Cython/Utility/ImportExport.c +907 -0
  299. Cython/Utility/MemoryView.pxd +188 -0
  300. Cython/Utility/MemoryView.pyx +1482 -0
  301. Cython/Utility/MemoryView_C.c +927 -0
  302. Cython/Utility/ModuleSetupCode.c +3203 -0
  303. Cython/Utility/NumpyImportArray.c +46 -0
  304. Cython/Utility/ObjectHandling.c +3273 -0
  305. Cython/Utility/Optimize.c +1603 -0
  306. Cython/Utility/Overflow.c +384 -0
  307. Cython/Utility/Printing.c +86 -0
  308. Cython/Utility/Profile.c +732 -0
  309. Cython/Utility/StringTools.c +1379 -0
  310. Cython/Utility/Synchronization.c +399 -0
  311. Cython/Utility/TString.c +356 -0
  312. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  313. Cython/Utility/TestCythonScope.pyx +75 -0
  314. Cython/Utility/TestUtilityLoader.c +12 -0
  315. Cython/Utility/TypeConversion.c +1385 -0
  316. Cython/Utility/UFuncs.pyx +50 -0
  317. Cython/Utility/UFuncs_C.c +89 -0
  318. Cython/Utility/__init__.py +28 -0
  319. Cython/Utility/arrayarray.h +167 -0
  320. Cython/Utils.py +687 -0
  321. Cython/Utils.pyd +0 -0
  322. Cython/__init__.py +10 -0
  323. Cython/__init__.pyi +7 -0
  324. Cython/py.typed +0 -0
  325. cython-3.2.0.dist-info/METADATA +85 -0
  326. cython-3.2.0.dist-info/RECORD +333 -0
  327. cython-3.2.0.dist-info/WHEEL +5 -0
  328. cython-3.2.0.dist-info/entry_points.txt +4 -0
  329. cython-3.2.0.dist-info/top_level.txt +3 -0
  330. cython.py +29 -0
  331. pyximport/__init__.py +4 -0
  332. pyximport/pyxbuild.py +160 -0
  333. pyximport/pyximport.py +482 -0
@@ -0,0 +1,384 @@
1
+ /*
2
+ These functions provide integer arithmetic with integer checking. They do not
3
+ actually raise an exception when an overflow is detected, but rather set a bit
4
+ in the overflow parameter. (This parameter may be reused across several
5
+ arithmetic operations, so should be or-ed rather than assigned to.)
6
+
7
+ The implementation is divided into two parts, the signed and unsigned basecases,
8
+ which is where the magic happens, and a generic template matching a specific
9
+ type to an implementation based on its (c-compile-time) size and signedness.
10
+
11
+ When possible, branching is avoided, and preference is given to speed over
12
+ accuracy (a low rate of falsely "detected" overflows are acceptable,
13
+ undetected overflows are not).
14
+
15
+
16
+ TODO: Hook up checking.
17
+ TODO: Conditionally support 128-bit with intmax_t?
18
+ */
19
+
20
+ /////////////// Common.proto ///////////////
21
+
22
+ static int __Pyx_check_twos_complement(void) {
23
+ if ((-1) != (~0)) {
24
+ PyErr_SetString(PyExc_RuntimeError, "Two's complement required for overflow checks.");
25
+ return 1;
26
+ } else if ((sizeof(short) == sizeof(int))) {
27
+ PyErr_SetString(PyExc_RuntimeError, "sizeof(short) < sizeof(int) required for overflow checks.");
28
+ return 1;
29
+ } else {
30
+ return 0;
31
+ }
32
+ }
33
+
34
+ #define __PYX_SIGN_BIT(type) ((((unsigned type) 1) << (sizeof(type) * 8 - 1)))
35
+ #define __PYX_HALF_MAX(type) ((((type) 1) << (sizeof(type) * 8 - 2)))
36
+ #define __PYX_MIN(type) ((__PYX_IS_UNSIGNED(type) ? (type) 0 : 0 - __PYX_HALF_MAX(type) - __PYX_HALF_MAX(type)))
37
+ #define __PYX_MAX(type) ((~__PYX_MIN(type)))
38
+
39
+ #define __Pyx_add_no_overflow(a, b, overflow) ((a) + (b))
40
+ #define __Pyx_add_const_no_overflow(a, b, overflow) ((a) + (b))
41
+ #define __Pyx_sub_no_overflow(a, b, overflow) ((a) - (b))
42
+ #define __Pyx_sub_const_no_overflow(a, b, overflow) ((a) - (b))
43
+ #define __Pyx_mul_no_overflow(a, b, overflow) ((a) * (b))
44
+ #define __Pyx_mul_const_no_overflow(a, b, overflow) ((a) * (b))
45
+ #define __Pyx_div_no_overflow(a, b, overflow) ((a) / (b))
46
+ #define __Pyx_div_const_no_overflow(a, b, overflow) ((a) / (b))
47
+
48
+ #if defined(__has_builtin)
49
+ # if __has_builtin(__builtin_add_overflow) && !defined(__ibmxl__)
50
+ # define __PYX_HAVE_BUILTIN_OVERFLOW
51
+ # endif
52
+ #elif defined(__GNUC__) && (__GNUC__ >= 5) && (!defined(__INTEL_COMPILER) || (__INTEL_COMPILER >= 1800))
53
+ # define __PYX_HAVE_BUILTIN_OVERFLOW
54
+ #endif
55
+
56
+ #if defined(__GNUC__)
57
+ # define __Pyx_is_constant(x) (__builtin_constant_p(x))
58
+ #elif defined(__has_builtin)
59
+ # if __has_builtin(__builtin_constant_p)
60
+ # define __Pyx_is_constant(x) (__builtin_constant_p(x))
61
+ # endif
62
+ #else
63
+ # define __Pyx_is_constant(x) (0)
64
+ #endif
65
+
66
+ /////////////// Common.init ///////////////
67
+
68
+ if (likely(__Pyx_check_twos_complement() == 0)); else
69
+ // error propagation code is appended automatically
70
+
71
+ /////////////// BaseCaseUnsigned.proto ///////////////
72
+
73
+ static CYTHON_INLINE {{UINT}} __Pyx_add_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow);
74
+ static CYTHON_INLINE {{UINT}} __Pyx_sub_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow);
75
+ static CYTHON_INLINE {{UINT}} __Pyx_mul_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow);
76
+ static CYTHON_INLINE {{UINT}} __Pyx_div_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow);
77
+
78
+ // Use these when b is known at compile time.
79
+ #define __Pyx_add_const_{{NAME}}_checking_overflow __Pyx_add_{{NAME}}_checking_overflow
80
+ #define __Pyx_sub_const_{{NAME}}_checking_overflow __Pyx_sub_{{NAME}}_checking_overflow
81
+ #if defined(__PYX_HAVE_BUILTIN_OVERFLOW)
82
+ #define __Pyx_mul_const_{{NAME}}_checking_overflow __Pyx_mul_{{NAME}}_checking_overflow
83
+ #else
84
+ static CYTHON_INLINE {{UINT}} __Pyx_mul_const_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} constant, int *overflow);
85
+ #endif
86
+ #define __Pyx_div_const_{{NAME}}_checking_overflow __Pyx_div_{{NAME}}_checking_overflow
87
+
88
+ /////////////// BaseCaseUnsigned ///////////////
89
+
90
+ #if defined(__PYX_HAVE_BUILTIN_OVERFLOW)
91
+
92
+ static CYTHON_INLINE {{UINT}} __Pyx_add_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
93
+ {{UINT}} result;
94
+ *overflow |= __builtin_add_overflow(a, b, &result);
95
+ return result;
96
+ }
97
+
98
+ static CYTHON_INLINE {{UINT}} __Pyx_sub_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
99
+ {{UINT}} result;
100
+ *overflow |= __builtin_sub_overflow(a, b, &result);
101
+ return result;
102
+ }
103
+
104
+ static CYTHON_INLINE {{UINT}} __Pyx_mul_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
105
+ {{UINT}} result;
106
+ *overflow |= __builtin_mul_overflow(a, b, &result);
107
+ return result;
108
+ }
109
+
110
+ #else
111
+
112
+ static CYTHON_INLINE {{UINT}} __Pyx_add_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
113
+ {{UINT}} r = a + b;
114
+ *overflow |= r < a;
115
+ return r;
116
+ }
117
+
118
+ static CYTHON_INLINE {{UINT}} __Pyx_sub_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
119
+ {{UINT}} r = a - b;
120
+ *overflow |= r > a;
121
+ return r;
122
+ }
123
+
124
+ static CYTHON_INLINE {{UINT}} __Pyx_mul_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
125
+ // if we have a constant, use the constant version
126
+ if (__Pyx_is_constant(b)) {
127
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(a, b, overflow);
128
+ } else if (__Pyx_is_constant(a)) {
129
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(b, a, overflow);
130
+ } else if ((sizeof({{UINT}}) < sizeof(unsigned long))) {
131
+ unsigned long big_r = ((unsigned long) a) * ((unsigned long) b);
132
+ {{UINT}} r = ({{UINT}}) big_r;
133
+ *overflow |= big_r != r;
134
+ return r;
135
+ } else if ((sizeof({{UINT}}) < sizeof(unsigned PY_LONG_LONG))) {
136
+ unsigned PY_LONG_LONG big_r = ((unsigned PY_LONG_LONG) a) * ((unsigned PY_LONG_LONG) b);
137
+ {{UINT}} r = ({{UINT}}) big_r;
138
+ *overflow |= big_r != r;
139
+ return r;
140
+ } else {
141
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(a, b, overflow);
142
+ }
143
+ }
144
+
145
+ static CYTHON_INLINE {{UINT}} __Pyx_mul_const_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
146
+ // note that deliberately the overflow check is written such that it divides by b; this
147
+ // function is used when b is a constant thus the compiler should be able to eliminate the
148
+ // (very slow on most CPUs!) division operation
149
+ {{UINT}} prod;
150
+ if (__Pyx_is_constant(a) && !__Pyx_is_constant(b)) {
151
+ // if a is a compile-time constant and b isn't, swap them
152
+ {{UINT}} temp = b;
153
+ b = a;
154
+ a = temp;
155
+ }
156
+ prod = a * b;
157
+ if (b != 0)
158
+ *overflow |= a > (__PYX_MAX({{UINT}}) / b);
159
+ return prod;
160
+ }
161
+ #endif // __PYX_HAVE_BUILTIN_OVERFLOW
162
+
163
+
164
+ static CYTHON_INLINE {{UINT}} __Pyx_div_{{NAME}}_checking_overflow({{UINT}} a, {{UINT}} b, int *overflow) {
165
+ if (b == 0) {
166
+ *overflow |= 1;
167
+ return 0;
168
+ }
169
+ return a / b;
170
+ }
171
+
172
+
173
+ /////////////// BaseCaseSigned.proto ///////////////
174
+
175
+ static CYTHON_INLINE {{INT}} __Pyx_add_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow);
176
+ static CYTHON_INLINE {{INT}} __Pyx_sub_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow);
177
+ static CYTHON_INLINE {{INT}} __Pyx_mul_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow);
178
+ static CYTHON_INLINE {{INT}} __Pyx_div_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow);
179
+
180
+
181
+ // Use when b is known at compile time.
182
+ #define __Pyx_add_const_{{NAME}}_checking_overflow __Pyx_add_{{NAME}}_checking_overflow
183
+ #define __Pyx_sub_const_{{NAME}}_checking_overflow __Pyx_sub_{{NAME}}_checking_overflow
184
+ #if defined(__PYX_HAVE_BUILTIN_OVERFLOW)
185
+ #define __Pyx_mul_const_{{NAME}}_checking_overflow __Pyx_mul_{{NAME}}_checking_overflow
186
+ #else
187
+ static CYTHON_INLINE {{INT}} __Pyx_mul_const_{{NAME}}_checking_overflow({{INT}} a, {{INT}} constant, int *overflow);
188
+ #endif
189
+ #define __Pyx_div_const_{{NAME}}_checking_overflow __Pyx_div_{{NAME}}_checking_overflow
190
+
191
+ /////////////// BaseCaseSigned ///////////////
192
+
193
+ #if defined(__PYX_HAVE_BUILTIN_OVERFLOW)
194
+
195
+ static CYTHON_INLINE {{INT}} __Pyx_add_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
196
+ {{INT}} result;
197
+ *overflow |= __builtin_add_overflow(a, b, &result);
198
+ return result;
199
+ }
200
+
201
+ static CYTHON_INLINE {{INT}} __Pyx_sub_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
202
+ {{INT}} result;
203
+ *overflow |= __builtin_sub_overflow(a, b, &result);
204
+ return result;
205
+ }
206
+
207
+ static CYTHON_INLINE {{INT}} __Pyx_mul_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
208
+ {{INT}} result;
209
+ *overflow |= __builtin_mul_overflow(a, b, &result);
210
+ return result;
211
+ }
212
+
213
+ #else
214
+
215
+ static CYTHON_INLINE {{INT}} __Pyx_add_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
216
+ if ((sizeof({{INT}}) < sizeof(long))) {
217
+ long big_r = ((long) a) + ((long) b);
218
+ {{INT}} r = ({{INT}}) big_r;
219
+ *overflow |= big_r != r;
220
+ return r;
221
+ } else if ((sizeof({{INT}}) < sizeof(PY_LONG_LONG))) {
222
+ PY_LONG_LONG big_r = ((PY_LONG_LONG) a) + ((PY_LONG_LONG) b);
223
+ {{INT}} r = ({{INT}}) big_r;
224
+ *overflow |= big_r != r;
225
+ return r;
226
+ } else {
227
+ // Signed overflow undefined, but unsigned overflow is well defined. Casting is
228
+ // implementation-defined, but we assume two's complement (see __Pyx_check_twos_complement
229
+ // above), and arithmetic in two's-complement is the same as unsigned arithmetic.
230
+ unsigned {{INT}} r = (unsigned {{INT}}) a + (unsigned {{INT}}) b;
231
+ // Overflow happened if the operands have the same sign, but the result
232
+ // has opposite sign.
233
+ *overflow |= (((unsigned {{INT}})a ^ r) & ((unsigned {{INT}})b ^ r)) >> (8 * sizeof({{INT}}) - 1);
234
+ return ({{INT}}) r;
235
+ }
236
+ }
237
+
238
+ static CYTHON_INLINE {{INT}} __Pyx_sub_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
239
+ // Compilers don't handle widening as well in the subtraction case, so don't bother
240
+ unsigned {{INT}} r = (unsigned {{INT}}) a - (unsigned {{INT}}) b;
241
+ // Overflow happened if the operands differing signs, and the result
242
+ // has opposite sign to a.
243
+ *overflow |= (((unsigned {{INT}})a ^ (unsigned {{INT}})b) & ((unsigned {{INT}})a ^ r)) >> (8 * sizeof({{INT}}) - 1);
244
+ return ({{INT}}) r;
245
+ }
246
+
247
+ static CYTHON_INLINE {{INT}} __Pyx_mul_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
248
+ // if we have a constant, use the constant version
249
+ if (__Pyx_is_constant(b)) {
250
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(a, b, overflow);
251
+ } else if (__Pyx_is_constant(a)) {
252
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(b, a, overflow);
253
+ } else if ((sizeof({{INT}}) < sizeof(long))) {
254
+ long big_r = ((long) a) * ((long) b);
255
+ {{INT}} r = ({{INT}}) big_r;
256
+ *overflow |= big_r != r;
257
+ return ({{INT}}) r;
258
+ } else if ((sizeof({{INT}}) < sizeof(PY_LONG_LONG))) {
259
+ PY_LONG_LONG big_r = ((PY_LONG_LONG) a) * ((PY_LONG_LONG) b);
260
+ {{INT}} r = ({{INT}}) big_r;
261
+ *overflow |= big_r != r;
262
+ return ({{INT}}) r;
263
+ } else {
264
+ return __Pyx_mul_const_{{NAME}}_checking_overflow(a, b, overflow);
265
+ }
266
+ }
267
+
268
+ static CYTHON_INLINE {{INT}} __Pyx_mul_const_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
269
+ // note that deliberately all these comparisons are written such that they divide by b; this
270
+ // function is used when b is a constant thus the compiler should be able to eliminate the
271
+ // (very slow on most CPUs!) division operations
272
+ if (__Pyx_is_constant(a) && !__Pyx_is_constant(b)) {
273
+ // if a is a compile-time constant and b isn't, swap them
274
+ {{INT}} temp = b;
275
+ b = a;
276
+ a = temp;
277
+ }
278
+ if (b > 1) {
279
+ *overflow |= a > __PYX_MAX({{INT}}) / b;
280
+ *overflow |= a < __PYX_MIN({{INT}}) / b;
281
+ } else if (b == -1) {
282
+ *overflow |= a == __PYX_MIN({{INT}});
283
+ } else if (b < -1) {
284
+ *overflow |= a > __PYX_MIN({{INT}}) / b;
285
+ *overflow |= a < __PYX_MAX({{INT}}) / b;
286
+ }
287
+ return ({{INT}}) (((unsigned {{INT}})a) * ((unsigned {{INT}}) b));
288
+ }
289
+ #endif // defined(__PYX_HAVE_BUILTIN_OVERFLOW)
290
+
291
+ static CYTHON_INLINE {{INT}} __Pyx_div_{{NAME}}_checking_overflow({{INT}} a, {{INT}} b, int *overflow) {
292
+ if (b == 0) {
293
+ *overflow |= 1;
294
+ return 0;
295
+ }
296
+ *overflow |= a == __PYX_MIN({{INT}}) && b == -1;
297
+ return ({{INT}}) ((unsigned {{INT}}) a / (unsigned {{INT}}) b);
298
+ }
299
+
300
+
301
+ /////////////// SizeCheck.init ///////////////
302
+
303
+ if (likely(__Pyx_check_sane_{{NAME}}() == 0)); else
304
+ // error propagation code is appended automatically
305
+
306
+ /////////////// SizeCheck.proto ///////////////
307
+
308
+ static int __Pyx_check_sane_{{NAME}}(void) {
309
+ if (((sizeof({{TYPE}}) <= sizeof(int)) ||
310
+ (sizeof({{TYPE}}) == sizeof(PY_LONG_LONG)) ||
311
+ (sizeof({{TYPE}}) == sizeof(long)))) {
312
+ return 0;
313
+ } else {
314
+ PyErr_Format(PyExc_RuntimeError, \
315
+ "Bad size for int type %.{{max(60, len(TYPE))}}s: %d", "{{TYPE}}", (int) sizeof({{TYPE}}));
316
+ return 1;
317
+ }
318
+ }
319
+
320
+
321
+ /////////////// Binop.proto ///////////////
322
+
323
+ static CYTHON_INLINE {{TYPE}} __Pyx_{{BINOP}}_{{NAME}}_checking_overflow({{TYPE}} a, {{TYPE}} b, int *overflow);
324
+
325
+ /////////////// Binop ///////////////
326
+
327
+ static CYTHON_INLINE {{TYPE}} __Pyx_{{BINOP}}_{{NAME}}_checking_overflow({{TYPE}} a, {{TYPE}} b, int *overflow) {
328
+ if ((sizeof({{TYPE}}) < sizeof(int))) {
329
+ return __Pyx_{{BINOP}}_no_overflow(a, b, overflow);
330
+ } else if (__PYX_IS_UNSIGNED({{TYPE}})) {
331
+ if ((sizeof({{TYPE}}) == sizeof(unsigned int))) {
332
+ return ({{TYPE}}) __Pyx_{{BINOP}}_unsigned_int_checking_overflow(a, b, overflow);
333
+ } else if ((sizeof({{TYPE}}) == sizeof(unsigned long))) {
334
+ return ({{TYPE}}) __Pyx_{{BINOP}}_unsigned_long_checking_overflow(a, b, overflow);
335
+ } else if ((sizeof({{TYPE}}) == sizeof(unsigned PY_LONG_LONG))) {
336
+ return ({{TYPE}}) __Pyx_{{BINOP}}_unsigned_long_long_checking_overflow(a, b, overflow);
337
+ } else {
338
+ Py_FatalError(
339
+ "__Pyx_{{BINOP}}_{{NAME}}_checking_overflow({{TYPE}}) executed an unexpected code path. "
340
+ "Please report this as a bug in Cython"
341
+ );
342
+ return 0; /* handled elsewhere */
343
+ }
344
+ } else {
345
+ if ((sizeof({{TYPE}}) == sizeof(int))) {
346
+ return ({{TYPE}}) __Pyx_{{BINOP}}_int_checking_overflow(a, b, overflow);
347
+ } else if ((sizeof({{TYPE}}) == sizeof(long))) {
348
+ return ({{TYPE}}) __Pyx_{{BINOP}}_long_checking_overflow(a, b, overflow);
349
+ } else if ((sizeof({{TYPE}}) == sizeof(PY_LONG_LONG))) {
350
+ return ({{TYPE}}) __Pyx_{{BINOP}}_long_long_checking_overflow(a, b, overflow);
351
+ } else {
352
+ Py_FatalError(
353
+ "__Pyx_{{BINOP}}_{{NAME}}_checking_overflow({{TYPE}}) executed an unexpected code path. "
354
+ "Please report this as a bug in Cython"
355
+ );
356
+ return 0; /* handled elsewhere */
357
+ }
358
+ }
359
+ }
360
+
361
+ /////////////// LeftShift.proto ///////////////
362
+
363
+ static CYTHON_INLINE {{TYPE}} __Pyx_lshift_{{NAME}}_checking_overflow({{TYPE}} a, {{TYPE}} b, int *overflow) {
364
+ int overflow_check =
365
+ #if {{SIGNED}}
366
+ (a < 0) || (b < 0) ||
367
+ #endif
368
+ // the following must be a _logical_ OR as the RHS is undefined if the LHS is true
369
+ (b >= ({{TYPE}}) (8 * sizeof({{TYPE}}))) || (a > (__PYX_MAX({{TYPE}}) >> b));
370
+ if (overflow_check) {
371
+ *overflow |= 1;
372
+ return 0;
373
+ } else {
374
+ return a << b;
375
+ }
376
+ }
377
+ #define __Pyx_lshift_const_{{NAME}}_checking_overflow __Pyx_lshift_{{NAME}}_checking_overflow
378
+
379
+
380
+ /////////////// UnaryNegOverflows.proto ///////////////
381
+
382
+ // from intobject.c
383
+ #define __Pyx_UNARY_NEG_WOULD_OVERFLOW(x) \
384
+ (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
@@ -0,0 +1,86 @@
1
+ ////////////////////// Print.proto //////////////////////
2
+
3
+ static int __Pyx_Print(PyObject*, PyObject *, int); /*proto*/
4
+
5
+ ////////////////////// Print.module_state_decls /////////////
6
+ //@substitute: naming
7
+ PyObject* $print_function;
8
+ PyObject* $print_function_kwargs;
9
+
10
+ ////////////////////// Print.cleanup //////////////////////
11
+
12
+ Py_CLEAR(NAMED_CGLOBAL(print_function));
13
+ Py_CLEAR(NAMED_CGLOBAL(print_function_kwargs));
14
+
15
+ ////////////////////// Print //////////////////////
16
+
17
+ static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
18
+ PyObject* kwargs = 0;
19
+ PyObject* result = 0;
20
+ PyObject* end_string;
21
+ if (unlikely(!NAMED_CGLOBAL(print_function))) {
22
+ NAMED_CGLOBAL(print_function) = PyObject_GetAttr(NAMED_CGLOBAL(builtins_cname), PYIDENT("print"));
23
+ if (!NAMED_CGLOBAL(print_function))
24
+ return -1;
25
+ }
26
+ if (stream) {
27
+ kwargs = PyDict_New();
28
+ if (unlikely(!kwargs))
29
+ return -1;
30
+ if (unlikely(PyDict_SetItem(kwargs, PYIDENT("file"), stream) < 0))
31
+ goto bad;
32
+ if (!newline) {
33
+ end_string = PyUnicode_FromStringAndSize(" ", 1);
34
+ if (unlikely(!end_string))
35
+ goto bad;
36
+ if (PyDict_SetItem(kwargs, PYIDENT("end"), end_string) < 0) {
37
+ Py_DECREF(end_string);
38
+ goto bad;
39
+ }
40
+ Py_DECREF(end_string);
41
+ }
42
+ } else if (!newline) {
43
+ if (unlikely(!NAMED_CGLOBAL(print_function_kwargs))) {
44
+ NAMED_CGLOBAL(print_function_kwargs) = PyDict_New();
45
+ if (unlikely(!NAMED_CGLOBAL(print_function_kwargs)))
46
+ return -1;
47
+ end_string = PyUnicode_FromStringAndSize(" ", 1);
48
+ if (unlikely(!end_string))
49
+ return -1;
50
+ if (PyDict_SetItem(NAMED_CGLOBAL(print_function_kwargs), PYIDENT("end"), end_string) < 0) {
51
+ Py_DECREF(end_string);
52
+ return -1;
53
+ }
54
+ Py_DECREF(end_string);
55
+ }
56
+ kwargs = NAMED_CGLOBAL(print_function_kwargs);
57
+ }
58
+ result = PyObject_Call(NAMED_CGLOBAL(print_function), arg_tuple, kwargs);
59
+ if (unlikely(kwargs) && (kwargs != NAMED_CGLOBAL(print_function_kwargs)))
60
+ Py_DECREF(kwargs);
61
+ if (!result)
62
+ return -1;
63
+ Py_DECREF(result);
64
+ return 0;
65
+ bad:
66
+ if (kwargs != NAMED_CGLOBAL(print_function_kwargs))
67
+ Py_XDECREF(kwargs);
68
+ return -1;
69
+ }
70
+
71
+ ////////////////////// PrintOne.proto //////////////////////
72
+ //@requires: Print
73
+
74
+ static int __Pyx_PrintOne(PyObject* stream, PyObject *o); /*proto*/
75
+
76
+ ////////////////////// PrintOne //////////////////////
77
+
78
+ static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
79
+ int res;
80
+ PyObject* arg_tuple = PyTuple_Pack(1, o);
81
+ if (unlikely(!arg_tuple))
82
+ return -1;
83
+ res = __Pyx_Print(stream, arg_tuple, 1);
84
+ Py_DECREF(arg_tuple);
85
+ return res;
86
+ }