Cython 3.1.0__py3-none-any.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 (316) hide show
  1. Cython/Build/BuildExecutable.py +169 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +323 -0
  4. Cython/Build/Dependencies.py +1306 -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 +76 -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 +8 -0
  18. Cython/CodeWriter.py +811 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +326 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +680 -0
  23. Cython/Compiler/Builtin.py +934 -0
  24. Cython/Compiler/CmdLine.py +259 -0
  25. Cython/Compiler/Code.pxd +148 -0
  26. Cython/Compiler/Code.py +3375 -0
  27. Cython/Compiler/CodeGeneration.py +33 -0
  28. Cython/Compiler/CythonScope.py +187 -0
  29. Cython/Compiler/Dataclass.py +868 -0
  30. Cython/Compiler/DebugFlags.py +24 -0
  31. Cython/Compiler/Errors.py +295 -0
  32. Cython/Compiler/ExprNodes.py +15267 -0
  33. Cython/Compiler/FlowControl.pxd +97 -0
  34. Cython/Compiler/FlowControl.py +1455 -0
  35. Cython/Compiler/FusedNode.py +1002 -0
  36. Cython/Compiler/Future.py +16 -0
  37. Cython/Compiler/Interpreter.py +57 -0
  38. Cython/Compiler/Lexicon.py +340 -0
  39. Cython/Compiler/LineTable.py +114 -0
  40. Cython/Compiler/Main.py +853 -0
  41. Cython/Compiler/MatchCaseNodes.py +259 -0
  42. Cython/Compiler/MemoryView.py +922 -0
  43. Cython/Compiler/ModuleNode.py +4024 -0
  44. Cython/Compiler/Naming.py +374 -0
  45. Cython/Compiler/Nodes.py +10826 -0
  46. Cython/Compiler/Optimize.py +5256 -0
  47. Cython/Compiler/Options.py +835 -0
  48. Cython/Compiler/ParseTreeTransforms.pxd +77 -0
  49. Cython/Compiler/ParseTreeTransforms.py +4509 -0
  50. Cython/Compiler/Parsing.pxd +9 -0
  51. Cython/Compiler/Parsing.py +4789 -0
  52. Cython/Compiler/Pipeline.py +439 -0
  53. Cython/Compiler/PyrexTypes.py +5762 -0
  54. Cython/Compiler/Pythran.py +232 -0
  55. Cython/Compiler/Scanning.pxd +40 -0
  56. Cython/Compiler/Scanning.py +577 -0
  57. Cython/Compiler/StringEncoding.py +347 -0
  58. Cython/Compiler/Symtab.py +3080 -0
  59. Cython/Compiler/Tests/TestBuffer.py +105 -0
  60. Cython/Compiler/Tests/TestBuiltin.py +72 -0
  61. Cython/Compiler/Tests/TestCmdLine.py +586 -0
  62. Cython/Compiler/Tests/TestCode.py +86 -0
  63. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  64. Cython/Compiler/Tests/TestGrammar.py +202 -0
  65. Cython/Compiler/Tests/TestMemView.py +71 -0
  66. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  67. Cython/Compiler/Tests/TestScanning.py +134 -0
  68. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  69. Cython/Compiler/Tests/TestStringEncoding.py +33 -0
  70. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  71. Cython/Compiler/Tests/TestTreePath.py +103 -0
  72. Cython/Compiler/Tests/TestTypes.py +75 -0
  73. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  74. Cython/Compiler/Tests/TestVisitor.py +61 -0
  75. Cython/Compiler/Tests/Utils.py +36 -0
  76. Cython/Compiler/Tests/__init__.py +1 -0
  77. Cython/Compiler/TreeFragment.py +278 -0
  78. Cython/Compiler/TreePath.py +303 -0
  79. Cython/Compiler/TypeInference.py +584 -0
  80. Cython/Compiler/TypeSlots.py +1181 -0
  81. Cython/Compiler/UFuncs.py +311 -0
  82. Cython/Compiler/UtilNodes.py +389 -0
  83. Cython/Compiler/UtilityCode.py +344 -0
  84. Cython/Compiler/Version.py +8 -0
  85. Cython/Compiler/Visitor.pxd +53 -0
  86. Cython/Compiler/Visitor.py +861 -0
  87. Cython/Compiler/__init__.py +1 -0
  88. Cython/Coverage.py +448 -0
  89. Cython/Debugger/Cygdb.py +175 -0
  90. Cython/Debugger/DebugWriter.py +82 -0
  91. Cython/Debugger/Tests/TestLibCython.py +275 -0
  92. Cython/Debugger/Tests/__init__.py +1 -0
  93. Cython/Debugger/Tests/cfuncs.c +8 -0
  94. Cython/Debugger/Tests/codefile +49 -0
  95. Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
  96. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  97. Cython/Debugger/__init__.py +1 -0
  98. Cython/Debugger/libcython.py +1548 -0
  99. Cython/Debugger/libpython.py +2821 -0
  100. Cython/Debugging.py +20 -0
  101. Cython/Distutils/__init__.py +2 -0
  102. Cython/Distutils/build_ext.py +139 -0
  103. Cython/Distutils/extension.py +96 -0
  104. Cython/Distutils/old_build_ext.py +351 -0
  105. Cython/Includes/cpython/__init__.pxd +173 -0
  106. Cython/Includes/cpython/array.pxd +174 -0
  107. Cython/Includes/cpython/bool.pxd +37 -0
  108. Cython/Includes/cpython/buffer.pxd +112 -0
  109. Cython/Includes/cpython/bytearray.pxd +33 -0
  110. Cython/Includes/cpython/bytes.pxd +200 -0
  111. Cython/Includes/cpython/cellobject.pxd +35 -0
  112. Cython/Includes/cpython/ceval.pxd +8 -0
  113. Cython/Includes/cpython/codecs.pxd +121 -0
  114. Cython/Includes/cpython/complex.pxd +60 -0
  115. Cython/Includes/cpython/contextvars.pxd +145 -0
  116. Cython/Includes/cpython/conversion.pxd +36 -0
  117. Cython/Includes/cpython/datetime.pxd +395 -0
  118. Cython/Includes/cpython/descr.pxd +26 -0
  119. Cython/Includes/cpython/dict.pxd +187 -0
  120. Cython/Includes/cpython/exc.pxd +263 -0
  121. Cython/Includes/cpython/fileobject.pxd +57 -0
  122. Cython/Includes/cpython/float.pxd +47 -0
  123. Cython/Includes/cpython/function.pxd +65 -0
  124. Cython/Includes/cpython/genobject.pxd +25 -0
  125. Cython/Includes/cpython/getargs.pxd +12 -0
  126. Cython/Includes/cpython/instance.pxd +25 -0
  127. Cython/Includes/cpython/iterator.pxd +36 -0
  128. Cython/Includes/cpython/iterobject.pxd +24 -0
  129. Cython/Includes/cpython/list.pxd +92 -0
  130. Cython/Includes/cpython/long.pxd +149 -0
  131. Cython/Includes/cpython/longintrepr.pxd +14 -0
  132. Cython/Includes/cpython/mapping.pxd +63 -0
  133. Cython/Includes/cpython/marshal.pxd +66 -0
  134. Cython/Includes/cpython/mem.pxd +120 -0
  135. Cython/Includes/cpython/memoryview.pxd +50 -0
  136. Cython/Includes/cpython/method.pxd +49 -0
  137. Cython/Includes/cpython/module.pxd +208 -0
  138. Cython/Includes/cpython/number.pxd +258 -0
  139. Cython/Includes/cpython/object.pxd +433 -0
  140. Cython/Includes/cpython/pycapsule.pxd +143 -0
  141. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  142. Cython/Includes/cpython/pyport.pxd +8 -0
  143. Cython/Includes/cpython/pystate.pxd +95 -0
  144. Cython/Includes/cpython/pythread.pxd +53 -0
  145. Cython/Includes/cpython/ref.pxd +67 -0
  146. Cython/Includes/cpython/sequence.pxd +134 -0
  147. Cython/Includes/cpython/set.pxd +119 -0
  148. Cython/Includes/cpython/slice.pxd +70 -0
  149. Cython/Includes/cpython/time.pxd +129 -0
  150. Cython/Includes/cpython/tuple.pxd +72 -0
  151. Cython/Includes/cpython/type.pxd +53 -0
  152. Cython/Includes/cpython/unicode.pxd +639 -0
  153. Cython/Includes/cpython/version.pxd +32 -0
  154. Cython/Includes/cpython/weakref.pxd +78 -0
  155. Cython/Includes/libc/__init__.pxd +1 -0
  156. Cython/Includes/libc/complex.pxd +35 -0
  157. Cython/Includes/libc/errno.pxd +127 -0
  158. Cython/Includes/libc/float.pxd +43 -0
  159. Cython/Includes/libc/limits.pxd +28 -0
  160. Cython/Includes/libc/locale.pxd +46 -0
  161. Cython/Includes/libc/math.pxd +209 -0
  162. Cython/Includes/libc/setjmp.pxd +10 -0
  163. Cython/Includes/libc/signal.pxd +64 -0
  164. Cython/Includes/libc/stddef.pxd +9 -0
  165. Cython/Includes/libc/stdint.pxd +105 -0
  166. Cython/Includes/libc/stdio.pxd +80 -0
  167. Cython/Includes/libc/stdlib.pxd +72 -0
  168. Cython/Includes/libc/string.pxd +50 -0
  169. Cython/Includes/libc/threads.pxd +84 -0
  170. Cython/Includes/libc/time.pxd +51 -0
  171. Cython/Includes/libcpp/__init__.pxd +4 -0
  172. Cython/Includes/libcpp/algorithm.pxd +320 -0
  173. Cython/Includes/libcpp/any.pxd +16 -0
  174. Cython/Includes/libcpp/atomic.pxd +59 -0
  175. Cython/Includes/libcpp/barrier.pxd +22 -0
  176. Cython/Includes/libcpp/bit.pxd +29 -0
  177. Cython/Includes/libcpp/cast.pxd +12 -0
  178. Cython/Includes/libcpp/cmath.pxd +518 -0
  179. Cython/Includes/libcpp/complex.pxd +106 -0
  180. Cython/Includes/libcpp/deque.pxd +165 -0
  181. Cython/Includes/libcpp/exception.pxd +86 -0
  182. Cython/Includes/libcpp/execution.pxd +15 -0
  183. Cython/Includes/libcpp/forward_list.pxd +63 -0
  184. Cython/Includes/libcpp/functional.pxd +26 -0
  185. Cython/Includes/libcpp/future.pxd +103 -0
  186. Cython/Includes/libcpp/iterator.pxd +34 -0
  187. Cython/Includes/libcpp/latch.pxd +17 -0
  188. Cython/Includes/libcpp/limits.pxd +61 -0
  189. Cython/Includes/libcpp/list.pxd +117 -0
  190. Cython/Includes/libcpp/map.pxd +252 -0
  191. Cython/Includes/libcpp/memory.pxd +115 -0
  192. Cython/Includes/libcpp/mutex.pxd +130 -0
  193. Cython/Includes/libcpp/numbers.pxd +15 -0
  194. Cython/Includes/libcpp/numeric.pxd +131 -0
  195. Cython/Includes/libcpp/optional.pxd +34 -0
  196. Cython/Includes/libcpp/pair.pxd +1 -0
  197. Cython/Includes/libcpp/queue.pxd +25 -0
  198. Cython/Includes/libcpp/random.pxd +166 -0
  199. Cython/Includes/libcpp/semaphore.pxd +44 -0
  200. Cython/Includes/libcpp/set.pxd +228 -0
  201. Cython/Includes/libcpp/shared_mutex.pxd +72 -0
  202. Cython/Includes/libcpp/span.pxd +87 -0
  203. Cython/Includes/libcpp/stack.pxd +11 -0
  204. Cython/Includes/libcpp/stop_token.pxd +105 -0
  205. Cython/Includes/libcpp/string.pxd +355 -0
  206. Cython/Includes/libcpp/string_view.pxd +181 -0
  207. Cython/Includes/libcpp/typeindex.pxd +15 -0
  208. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  209. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  210. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  211. Cython/Includes/libcpp/utility.pxd +30 -0
  212. Cython/Includes/libcpp/vector.pxd +186 -0
  213. Cython/Includes/openmp.pxd +50 -0
  214. Cython/Includes/posix/__init__.pxd +1 -0
  215. Cython/Includes/posix/dlfcn.pxd +14 -0
  216. Cython/Includes/posix/fcntl.pxd +86 -0
  217. Cython/Includes/posix/ioctl.pxd +4 -0
  218. Cython/Includes/posix/mman.pxd +101 -0
  219. Cython/Includes/posix/resource.pxd +57 -0
  220. Cython/Includes/posix/select.pxd +21 -0
  221. Cython/Includes/posix/signal.pxd +73 -0
  222. Cython/Includes/posix/stat.pxd +98 -0
  223. Cython/Includes/posix/stdio.pxd +37 -0
  224. Cython/Includes/posix/stdlib.pxd +29 -0
  225. Cython/Includes/posix/strings.pxd +9 -0
  226. Cython/Includes/posix/time.pxd +71 -0
  227. Cython/Includes/posix/types.pxd +30 -0
  228. Cython/Includes/posix/uio.pxd +26 -0
  229. Cython/Includes/posix/unistd.pxd +271 -0
  230. Cython/Includes/posix/wait.pxd +38 -0
  231. Cython/Plex/Actions.pxd +24 -0
  232. Cython/Plex/Actions.py +119 -0
  233. Cython/Plex/DFA.pxd +14 -0
  234. Cython/Plex/DFA.py +164 -0
  235. Cython/Plex/Errors.py +48 -0
  236. Cython/Plex/Lexicons.py +178 -0
  237. Cython/Plex/Machines.pxd +36 -0
  238. Cython/Plex/Machines.py +238 -0
  239. Cython/Plex/Regexps.py +539 -0
  240. Cython/Plex/Scanners.pxd +47 -0
  241. Cython/Plex/Scanners.py +360 -0
  242. Cython/Plex/Transitions.pxd +14 -0
  243. Cython/Plex/Transitions.py +239 -0
  244. Cython/Plex/__init__.py +34 -0
  245. Cython/Runtime/__init__.py +1 -0
  246. Cython/Runtime/refnanny.pyx +237 -0
  247. Cython/Shadow.py +690 -0
  248. Cython/Shadow.pyi +521 -0
  249. Cython/StringIOTree.py +170 -0
  250. Cython/Tempita/__init__.py +4 -0
  251. Cython/Tempita/_looper.py +154 -0
  252. Cython/Tempita/_tempita.py +1091 -0
  253. Cython/TestUtils.py +410 -0
  254. Cython/Tests/TestCodeWriter.py +128 -0
  255. Cython/Tests/TestCythonUtils.py +202 -0
  256. Cython/Tests/TestJediTyper.py +223 -0
  257. Cython/Tests/TestShadow.py +114 -0
  258. Cython/Tests/TestStringIOTree.py +67 -0
  259. Cython/Tests/TestTestUtils.py +90 -0
  260. Cython/Tests/__init__.py +1 -0
  261. Cython/Tests/xmlrunner.py +390 -0
  262. Cython/Utility/AsyncGen.c +1002 -0
  263. Cython/Utility/Buffer.c +875 -0
  264. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  265. Cython/Utility/Builtins.c +776 -0
  266. Cython/Utility/CConvert.pyx +134 -0
  267. Cython/Utility/CMath.c +104 -0
  268. Cython/Utility/CommonStructures.c +118 -0
  269. Cython/Utility/Complex.c +378 -0
  270. Cython/Utility/Coroutine.c +2206 -0
  271. Cython/Utility/CpdefEnums.pyx +103 -0
  272. Cython/Utility/CppConvert.pyx +279 -0
  273. Cython/Utility/CppSupport.cpp +143 -0
  274. Cython/Utility/CythonFunction.c +1794 -0
  275. Cython/Utility/Dataclasses.c +185 -0
  276. Cython/Utility/Dataclasses.py +112 -0
  277. Cython/Utility/Embed.c +125 -0
  278. Cython/Utility/Exceptions.c +1012 -0
  279. Cython/Utility/ExtensionTypes.c +809 -0
  280. Cython/Utility/FunctionArguments.c +965 -0
  281. Cython/Utility/ImportExport.c +987 -0
  282. Cython/Utility/Lock.c +136 -0
  283. Cython/Utility/MemoryView.pxd +187 -0
  284. Cython/Utility/MemoryView.pyx +1481 -0
  285. Cython/Utility/MemoryView_C.c +1046 -0
  286. Cython/Utility/ModuleSetupCode.c +3059 -0
  287. Cython/Utility/NumpyImportArray.c +46 -0
  288. Cython/Utility/ObjectHandling.c +3342 -0
  289. Cython/Utility/Optimize.c +1589 -0
  290. Cython/Utility/Overflow.c +404 -0
  291. Cython/Utility/Printing.c +86 -0
  292. Cython/Utility/Profile.c +709 -0
  293. Cython/Utility/StringTools.c +1259 -0
  294. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  295. Cython/Utility/TestCythonScope.pyx +75 -0
  296. Cython/Utility/TestUtilityLoader.c +12 -0
  297. Cython/Utility/TypeConversion.c +1284 -0
  298. Cython/Utility/UFuncs.pyx +50 -0
  299. Cython/Utility/UFuncs_C.c +89 -0
  300. Cython/Utility/__init__.py +28 -0
  301. Cython/Utility/arrayarray.h +148 -0
  302. Cython/Utils.py +687 -0
  303. Cython/__init__.py +10 -0
  304. Cython/__init__.pyi +7 -0
  305. Cython/py.typed +0 -0
  306. cython-3.1.0.dist-info/COPYING.txt +19 -0
  307. cython-3.1.0.dist-info/LICENSE.txt +176 -0
  308. cython-3.1.0.dist-info/METADATA +636 -0
  309. cython-3.1.0.dist-info/RECORD +316 -0
  310. cython-3.1.0.dist-info/WHEEL +5 -0
  311. cython-3.1.0.dist-info/entry_points.txt +4 -0
  312. cython-3.1.0.dist-info/top_level.txt +3 -0
  313. cython.py +29 -0
  314. pyximport/__init__.py +4 -0
  315. pyximport/pyxbuild.py +160 -0
  316. pyximport/pyximport.py +482 -0
@@ -0,0 +1,134 @@
1
+ #################### FromPyStructUtility ####################
2
+
3
+ cdef extern from *:
4
+ ctypedef struct PyTypeObject:
5
+ char* tp_name
6
+ PyTypeObject *Py_TYPE(obj)
7
+ bint PyMapping_Check(obj)
8
+ object PyErr_Format(exc, const char *format, ...)
9
+ int __Pyx_RaiseUnexpectedTypeError(const char *expected, object obj) except 0
10
+
11
+ @cname("{{funcname}}")
12
+ cdef {{struct_type}} {{funcname}}(obj) except *:
13
+ cdef {{struct_type}} result
14
+ if not PyMapping_Check(obj):
15
+ __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
16
+
17
+ {{for member in var_entries:}}
18
+ try:
19
+ value = obj['{{member.name}}']
20
+ except KeyError:
21
+ raise ValueError("No value specified for struct attribute '{{member.name}}'")
22
+ result.{{member.name}} = value
23
+ {{endfor}}
24
+ return result
25
+
26
+
27
+ #################### FromPyUnionUtility ####################
28
+
29
+ cdef extern from *:
30
+ ctypedef struct PyTypeObject:
31
+ char* tp_name
32
+ PyTypeObject *Py_TYPE(obj)
33
+ bint PyMapping_Check(obj)
34
+ object PyErr_Format(exc, const char *format, ...)
35
+ int __Pyx_RaiseUnexpectedTypeError(const char *expected, object obj) except 0
36
+
37
+ @cname("{{funcname}}")
38
+ cdef {{struct_type}} {{funcname}}(obj) except *:
39
+ cdef {{struct_type}} result
40
+ cdef Py_ssize_t length
41
+ if not PyMapping_Check(obj):
42
+ __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
43
+
44
+ last_found = None
45
+ length = len(obj)
46
+ if length:
47
+ {{for member in var_entries:}}
48
+ if '{{member.name}}' in obj:
49
+ if last_found is not None:
50
+ raise ValueError("More than one union attribute passed: '%s' and '%s'" % (last_found, '{{member.name}}'))
51
+ last_found = '{{member.name}}'
52
+ result.{{member.cname}} = obj['{{member.name}}']
53
+ length -= 1
54
+ if not length:
55
+ return result
56
+ {{endfor}}
57
+ if last_found is None:
58
+ raise ValueError("No value specified for any of the union attributes (%s)" %
59
+ '{{", ".join(member.name for member in var_entries)}}')
60
+ return result
61
+
62
+
63
+ #################### cfunc.to_py ####################
64
+
65
+ @cname("{{cname}}")
66
+ cdef object {{cname}}({{return_type.ctype}} (*f)({{ ', '.join(arg.type_cname for arg in args) }}) {{except_clause}}):
67
+ def wrap({{ ', '.join('{arg.ctype} {arg.name}'.format(arg=arg) for arg in args) }}):
68
+ """wrap({{', '.join(('{arg.name}: {arg.type_displayname}'.format(arg=arg) if arg.type_displayname else arg.name) for arg in args)}}){{if return_type.type_displayname}} -> {{return_type.type_displayname}}{{endif}}"""
69
+ {{'' if return_type.type.is_void else 'return '}}f({{ ', '.join(arg.name for arg in args) }})
70
+ return wrap
71
+
72
+
73
+ #################### carray.from_py ####################
74
+
75
+ cdef extern from *:
76
+ object PyErr_Format(exc, const char *format, ...)
77
+
78
+ @cname("{{cname}}")
79
+ cdef int {{cname}}(object o, {{base_type}} *v, Py_ssize_t length) except -1:
80
+ cdef Py_ssize_t i = length
81
+ try:
82
+ i = len(o)
83
+ except (TypeError, OverflowError):
84
+ pass
85
+ if i == length:
86
+ for i, item in enumerate(o):
87
+ if i >= length:
88
+ break
89
+ v[i] = item
90
+ else:
91
+ i += 1 # convert index to length
92
+ if i == length:
93
+ return 0
94
+
95
+ PyErr_Format(
96
+ IndexError,
97
+ ("too many values found during array assignment, expected %zd"
98
+ if i >= length else
99
+ "not enough values found during array assignment, expected %zd, got %zd"),
100
+ length, i)
101
+
102
+
103
+ #################### carray.to_py ####################
104
+
105
+ cdef extern from *:
106
+ void Py_INCREF(object o)
107
+ tuple PyTuple_New(Py_ssize_t size)
108
+ list PyList_New(Py_ssize_t size)
109
+ int __Pyx_PyTuple_SET_ITEM(object p, Py_ssize_t pos, object o) except -1
110
+ int __Pyx_PyList_SET_ITEM(object p, Py_ssize_t pos, object o) except -1
111
+
112
+
113
+ @cname("{{cname}}")
114
+ cdef inline list {{cname}}({{base_type}} *v, Py_ssize_t length):
115
+ cdef size_t i
116
+ cdef object value
117
+ l = PyList_New(length)
118
+ for i in range(<size_t>length):
119
+ value = v[i]
120
+ Py_INCREF(value)
121
+ __Pyx_PyList_SET_ITEM(l, i, value)
122
+ return l
123
+
124
+
125
+ @cname("{{to_tuple_cname}}")
126
+ cdef inline tuple {{to_tuple_cname}}({{base_type}} *v, Py_ssize_t length):
127
+ cdef size_t i
128
+ cdef object value
129
+ t = PyTuple_New(length)
130
+ for i in range(<size_t>length):
131
+ value = v[i]
132
+ Py_INCREF(value)
133
+ __Pyx_PyTuple_SET_ITEM(t, i, value)
134
+ return t
Cython/Utility/CMath.c ADDED
@@ -0,0 +1,104 @@
1
+
2
+ /////////////// CDivisionWarning.proto ///////////////
3
+
4
+ static int __Pyx_cdivision_warning(const char *, int); /* proto */
5
+
6
+ /////////////// CDivisionWarning ///////////////
7
+
8
+ static int __Pyx_cdivision_warning(const char *filename, int lineno) {
9
+ #if CYTHON_COMPILING_IN_PYPY
10
+ // avoid compiler warnings
11
+ filename++; lineno++;
12
+ return PyErr_Warn(PyExc_RuntimeWarning,
13
+ "division with oppositely signed operands, C and Python semantics differ");
14
+ #else
15
+ return PyErr_WarnExplicit(PyExc_RuntimeWarning,
16
+ "division with oppositely signed operands, C and Python semantics differ",
17
+ filename,
18
+ lineno,
19
+ __Pyx_MODULE_NAME,
20
+ NULL);
21
+ #endif
22
+ }
23
+
24
+
25
+ /////////////// DivInt.proto ///////////////
26
+
27
+ static CYTHON_INLINE %(type)s __Pyx_div_%(type_name)s(%(type)s, %(type)s, int b_is_constant); /* proto */
28
+
29
+ /////////////// DivInt ///////////////
30
+
31
+ static CYTHON_INLINE %(type)s __Pyx_div_%(type_name)s(%(type)s a, %(type)s b, int b_is_constant) {
32
+ %(type)s q = a / b;
33
+ %(type)s r = a - q*b;
34
+ %(type)s adapt_python = (b_is_constant ?
35
+ // Take advantage of constant folding for 'b'.
36
+ ((r != 0) & ((r < 0) ^ (b < 0))) :
37
+ ((r != 0) & ((r ^ b) < 0))
38
+ );
39
+ return q - adapt_python;
40
+ }
41
+
42
+
43
+ /////////////// ModInt.proto ///////////////
44
+
45
+ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s, %(type)s, int b_is_constant); /* proto */
46
+
47
+ /////////////// ModInt ///////////////
48
+
49
+ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s a, %(type)s b, int b_is_constant) {
50
+ %(type)s r = a %% b;
51
+ %(type)s adapt_python = (b_is_constant ?
52
+ // Take advantage of constant folding for 'b'.
53
+ ((r != 0) & ((r < 0) ^ (b < 0))) :
54
+ ((r != 0) & ((r ^ b) < 0))
55
+ );
56
+ return r + adapt_python * b;
57
+ }
58
+
59
+
60
+ /////////////// ModFloat.proto ///////////////
61
+
62
+ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s, %(type)s, int b_is_constant); /* proto */
63
+
64
+ /////////////// ModFloat ///////////////
65
+
66
+ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s a, %(type)s b, int b_is_constant) {
67
+ CYTHON_UNUSED_VAR(b_is_constant);
68
+ %(type)s r = fmod%(math_h_modifier)s(a, b);
69
+ r += ((r != 0) & ((r < 0) ^ (b < 0))) * b;
70
+ return r;
71
+ }
72
+
73
+
74
+ /////////////// IntPow.proto ///////////////
75
+
76
+ static CYTHON_INLINE %(type)s %(func_name)s(%(type)s, %(type)s); /* proto */
77
+
78
+ /////////////// IntPow ///////////////
79
+
80
+ static CYTHON_INLINE %(type)s %(func_name)s(%(type)s b, %(type)s e) {
81
+ %(type)s t = b;
82
+ switch (e) {
83
+ case 3:
84
+ t *= b;
85
+ CYTHON_FALLTHROUGH;
86
+ case 2:
87
+ t *= b;
88
+ CYTHON_FALLTHROUGH;
89
+ case 1:
90
+ return t;
91
+ case 0:
92
+ return 1;
93
+ }
94
+ #if %(signed)s
95
+ if (unlikely(e<0)) return 0;
96
+ #endif
97
+ t = 1;
98
+ while (likely(e)) {
99
+ t *= (b * (e&1)) | ((~e)&1); /* 1 or b */
100
+ b *= b;
101
+ e >>= 1;
102
+ }
103
+ return t;
104
+ }
@@ -0,0 +1,118 @@
1
+ /////////////// FetchSharedCythonModule.proto ///////
2
+
3
+ static PyObject *__Pyx_FetchSharedCythonABIModule(void);
4
+
5
+ /////////////// FetchSharedCythonModule ////////////
6
+
7
+ static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
8
+ return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME);
9
+ }
10
+
11
+ /////////////// FetchCommonType.proto ///////////////
12
+
13
+ static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
14
+
15
+ /////////////// FetchCommonType ///////////////
16
+ //@requires:ExtensionTypes.c::FixUpExtensionType
17
+ //@requires: FetchSharedCythonModule
18
+ //@requires:StringTools.c::IncludeStringH
19
+ //@requires:Optimize.c::dict_setdefault
20
+
21
+ static int __Pyx_VerifyCachedType(PyObject *cached_type,
22
+ const char *name,
23
+ Py_ssize_t expected_basicsize) {
24
+ Py_ssize_t basicsize;
25
+
26
+ if (!PyType_Check(cached_type)) {
27
+ PyErr_Format(PyExc_TypeError,
28
+ "Shared Cython type %.200s is not a type object", name);
29
+ return -1;
30
+ }
31
+
32
+ #if CYTHON_COMPILING_IN_LIMITED_API
33
+ PyObject *py_basicsize;
34
+ py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
35
+ if (unlikely(!py_basicsize)) return -1;
36
+ basicsize = PyLong_AsSsize_t(py_basicsize);
37
+ Py_DECREF(py_basicsize);
38
+ py_basicsize = NULL;
39
+ if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1;
40
+ #else
41
+ basicsize = ((PyTypeObject*) cached_type)->tp_basicsize;
42
+ #endif
43
+
44
+ if (basicsize != expected_basicsize) {
45
+ PyErr_Format(PyExc_TypeError,
46
+ "Shared Cython type %.200s has the wrong size, try recompiling",
47
+ name);
48
+ return -1;
49
+ }
50
+ return 0;
51
+ }
52
+
53
+ static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
54
+ PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
55
+ int get_item_ref_result;
56
+ // get the final part of the object name (after the last dot)
57
+ const char* object_name = strrchr(spec->name, '.');
58
+ object_name = object_name ? object_name+1 : spec->name;
59
+
60
+ py_object_name = PyUnicode_FromString(object_name);
61
+ if (!py_object_name) return NULL;
62
+
63
+ abi_module = __Pyx_FetchSharedCythonABIModule();
64
+ if (!abi_module) goto done;
65
+ abi_module_dict = PyModule_GetDict(abi_module);
66
+ if (!abi_module_dict) goto done;
67
+
68
+
69
+ get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type);
70
+ if (get_item_ref_result == 1) {
71
+ if (__Pyx_VerifyCachedType(
72
+ cached_type,
73
+ object_name,
74
+ spec->basicsize) < 0) {
75
+ goto bad;
76
+ }
77
+ goto done;
78
+ } else if (unlikely(get_item_ref_result == -1)) {
79
+ goto bad;
80
+ }
81
+
82
+ // We pass the ABI module reference to avoid keeping the user module alive by foreign type usages.
83
+ CYTHON_UNUSED_VAR(module);
84
+ cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
85
+ if (unlikely(!cached_type)) goto bad;
86
+ if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
87
+
88
+ new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1);
89
+ if (unlikely(new_cached_type != cached_type)) {
90
+ if (unlikely(!new_cached_type)) goto bad;
91
+ // race to initialize it - use the value that's already been set.
92
+ Py_DECREF(cached_type);
93
+ cached_type = new_cached_type;
94
+
95
+ if (__Pyx_VerifyCachedType(
96
+ cached_type,
97
+ object_name,
98
+ spec->basicsize) < 0) {
99
+ goto bad;
100
+ }
101
+ goto done;
102
+ } else {
103
+ Py_DECREF(new_cached_type);
104
+ }
105
+
106
+ done:
107
+ Py_XDECREF(abi_module);
108
+ Py_DECREF(py_object_name);
109
+ // NOTE: always returns owned reference, or NULL on error
110
+ assert(cached_type == NULL || PyType_Check(cached_type));
111
+ return (PyTypeObject *) cached_type;
112
+
113
+ bad:
114
+ Py_XDECREF(cached_type);
115
+ cached_type = NULL;
116
+ goto done;
117
+ }
118
+