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,173 @@
1
+ #####################################################################
2
+ #
3
+ # These are the Cython pxd files for (most of) the Python/C API.
4
+ #
5
+ # REFERENCE COUNTING:
6
+ #
7
+ # JUST TO SCARE YOU:
8
+ # If you are going to use any of the Python/C API in your Cython
9
+ # program, you might be responsible for doing reference counting.
10
+ # Read http://docs.python.org/api/refcounts.html which is so
11
+ # important I've copied it below.
12
+ #
13
+ # For all the declaration below, whenever the Py_ function returns
14
+ # a *new reference* to a PyObject*, the return type is "object".
15
+ # When the function returns a borrowed reference, the return
16
+ # type is PyObject*. When Cython sees "object" as a return type
17
+ # it doesn't increment the reference count. When it sees PyObject*
18
+ # in order to use the result you must explicitly cast to <object>,
19
+ # and when you do that Cython increments the reference count whether
20
+ # you want it to or not, forcing you to an explicit DECREF (or leak memory).
21
+ # To avoid this we make the above convention. Note, you can
22
+ # always locally override this convention by putting something like
23
+ #
24
+ # cdef extern from "Python.h":
25
+ # PyObject* PyNumber_Add(PyObject *o1, PyObject *o2)
26
+ #
27
+ # in your .pyx file or into a cimported .pxd file. You just have to
28
+ # use the one from the right (pxd-)namespace then.
29
+ #
30
+ # Cython automatically takes care of reference counting for anything
31
+ # of type object.
32
+ #
33
+ ## More precisely, I think the correct convention for
34
+ ## using the Python/C API from Cython is as follows.
35
+ ##
36
+ ## (1) Declare all input arguments as type "object". This way no explicit
37
+ ## <PyObject*> casting is needed, and moreover Cython doesn't generate
38
+ ## any funny reference counting.
39
+ ## (2) Declare output as object if a new reference is returned.
40
+ ## (3) Declare output as PyObject* if a borrowed reference is returned.
41
+ ##
42
+ ## This way when you call objects, no cast is needed, and if the api
43
+ ## calls returns a new reference (which is about 95% of them), then
44
+ ## you can just assign to a variable of type object. With borrowed
45
+ ## references if you do an explicit typecast to <object>, Cython generates an
46
+ ## INCREF and DECREF so you have to be careful. However, you got a
47
+ ## borrowed reference in this case, so there's got to be another reference
48
+ ## to your object, so you're OK, as long as you relealize this
49
+ ## and use the result of an explicit cast to <object> as a borrowed
50
+ ## reference (and you can call Py_INCREF if you want to turn it
51
+ ## into another reference for some reason).
52
+ #
53
+ # "The reference count is important because today's computers have
54
+ # a finite (and often severely limited) memory size; it counts how
55
+ # many different places there are that have a reference to an
56
+ # object. Such a place could be another object, or a global (or
57
+ # static) C variable, or a local variable in some C function. When
58
+ # an object's reference count becomes zero, the object is
59
+ # deallocated. If it contains references to other objects, their
60
+ # reference count is decremented. Those other objects may be
61
+ # deallocated in turn, if this decrement makes their reference
62
+ # count become zero, and so on. (There's an obvious problem with
63
+ # objects that reference each other here; for now, the solution is
64
+ # ``don't do that.'')
65
+ #
66
+ # Reference counts are always manipulated explicitly. The normal
67
+ # way is to use the macro Py_INCREF() to increment an object's
68
+ # reference count by one, and Py_DECREF() to decrement it by
69
+ # one. The Py_DECREF() macro is considerably more complex than the
70
+ # incref one, since it must check whether the reference count
71
+ # becomes zero and then cause the object's deallocator to be
72
+ # called. The deallocator is a function pointer contained in the
73
+ # object's type structure. The type-specific deallocator takes
74
+ # care of decrementing the reference counts for other objects
75
+ # contained in the object if this is a compound object type, such
76
+ # as a list, as well as performing any additional finalization
77
+ # that's needed. There's no chance that the reference count can
78
+ # overflow; at least as many bits are used to hold the reference
79
+ # count as there are distinct memory locations in virtual memory
80
+ # (assuming sizeof(long) >= sizeof(char*)). Thus, the reference
81
+ # count increment is a simple operation.
82
+ #
83
+ # It is not necessary to increment an object's reference count for
84
+ # every local variable that contains a pointer to an object. In
85
+ # theory, the object's reference count goes up by one when the
86
+ # variable is made to point to it and it goes down by one when the
87
+ # variable goes out of scope. However, these two cancel each other
88
+ # out, so at the end the reference count hasn't changed. The only
89
+ # real reason to use the reference count is to prevent the object
90
+ # from being deallocated as long as our variable is pointing to
91
+ # it. If we know that there is at least one other reference to the
92
+ # object that lives at least as long as our variable, there is no
93
+ # need to increment the reference count temporarily. An important
94
+ # situation where this arises is in objects that are passed as
95
+ # arguments to C functions in an extension module that are called
96
+ # from Python; the call mechanism guarantees to hold a reference
97
+ # to every argument for the duration of the call.
98
+ #
99
+ # However, a common pitfall is to extract an object from a list
100
+ # and hold on to it for a while without incrementing its reference
101
+ # count. Some other operation might conceivably remove the object
102
+ # from the list, decrementing its reference count and possible
103
+ # deallocating it. The real danger is that innocent-looking
104
+ # operations may invoke arbitrary Python code which could do this;
105
+ # there is a code path which allows control to flow back to the
106
+ # user from a Py_DECREF(), so almost any operation is potentially
107
+ # dangerous.
108
+ #
109
+ # A safe approach is to always use the generic operations
110
+ # (functions whose name begins with "PyObject_", "PyNumber_",
111
+ # "PySequence_" or "PyMapping_"). These operations always
112
+ # increment the reference count of the object they return. This
113
+ # leaves the caller with the responsibility to call Py_DECREF()
114
+ # when they are done with the result; this soon becomes second
115
+ # nature.
116
+ #
117
+ # Now you should read http://docs.python.org/api/refcountDetails.html
118
+ # just to be sure you understand what is going on.
119
+ #
120
+ #################################################################
121
+
122
+
123
+
124
+ #################################################################
125
+ # BIG FAT DEPRECATION WARNING
126
+ #################################################################
127
+ # Do NOT cimport any names directly from the cpython package,
128
+ # despite of the star-imports below. They will be removed at
129
+ # some point.
130
+ # Instead, use the correct sub-module to draw your cimports from.
131
+ #
132
+ # A direct cimport from the package will make your code depend on
133
+ # all of the existing declarations. This may have side-effects
134
+ # and reduces the portability of your code.
135
+ #################################################################
136
+ # START OF DEPRECATED SECTION
137
+ #################################################################
138
+
139
+ from cpython.version cimport *
140
+ from cpython.ref cimport *
141
+ from cpython.exc cimport *
142
+ from cpython.module cimport *
143
+ from cpython.mem cimport *
144
+ from cpython.tuple cimport *
145
+ from cpython.list cimport *
146
+ from cpython.object cimport *
147
+ from cpython.sequence cimport *
148
+ from cpython.mapping cimport *
149
+ from cpython.iterator cimport *
150
+ from cpython.type cimport *
151
+ from cpython.number cimport *
152
+ from cpython.bool cimport *
153
+ from cpython.long cimport *
154
+ from cpython.float cimport *
155
+ from cpython.complex cimport *
156
+ from cpython.unicode cimport *
157
+ from cpython.dict cimport *
158
+ from cpython.instance cimport *
159
+ from cpython.function cimport *
160
+ from cpython.method cimport *
161
+ from cpython.weakref cimport *
162
+ from cpython.getargs cimport *
163
+ from cpython.pythread cimport *
164
+ from cpython.pystate cimport *
165
+ from cpython.set cimport *
166
+ from cpython.buffer cimport *
167
+ from cpython.bytes cimport *
168
+ from cpython.pycapsule cimport *
169
+ from cpython.contextvars cimport *
170
+
171
+ #################################################################
172
+ # END OF DEPRECATED SECTION
173
+ #################################################################
@@ -0,0 +1,178 @@
1
+ """
2
+ array.pxd
3
+
4
+ Cython interface to Python's array.array module.
5
+
6
+ * 1D contiguous data view
7
+ * tools for fast array creation, maximum C-speed and handiness
8
+ * suitable as allround light weight auto-array within Cython code too
9
+
10
+ Usage:
11
+
12
+ >>> cimport array
13
+
14
+ Usage through Cython buffer interface (Py2.3+):
15
+
16
+ >>> def f(arg1, unsigned i, double dx)
17
+ ... array.array[double] a = arg1
18
+ ... a[i] += dx
19
+
20
+ Fast C-level new_array(_zeros), resize_array, copy_array, Py_SIZE(obj),
21
+ zero_array
22
+
23
+ cdef array.array[double] k = array.copy(d)
24
+ cdef array.array[double] n = array.array(d, Py_SIZE(d) * 2 )
25
+ cdef array.array[double] m = array.zeros_like(FLOAT_TEMPLATE)
26
+ array.resize(f, 200000)
27
+
28
+ Zero overhead with naked data pointer views by union:
29
+ _f, _d, _i, _c, _u, ...
30
+ => Original C array speed + Python dynamic memory management
31
+
32
+ cdef array.array a = inarray
33
+ if
34
+ a._d[2] += 0.66 # use as double array without extra casting
35
+
36
+ float *subview = vector._f + 10 # starting from 10th element
37
+ unsigned char *subview_buffer = vector._B + 4
38
+
39
+ Suitable as lightweight arrays intra Cython without speed penalty.
40
+ Replacement for C stack/malloc arrays; no trouble with refcounting,
41
+ mem.leaks; seamless Python compatibility, buffer() optional
42
+
43
+
44
+ last changes: 2009-05-15 rk
45
+ : 2009-12-06 bp
46
+ : 2012-05-02 andreasvc
47
+ : (see revision control)
48
+ """
49
+
50
+ cdef extern from *:
51
+ """
52
+ #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
53
+ #ifdef _MSC_VER
54
+ #pragma message ("This module uses CPython specific internals of 'array.array', which are not available in PyPy or the limited API.")
55
+ #else
56
+ #warning This module uses CPython specific internals of 'array.array', which are not available in PyPy or the limited API.
57
+ #endif
58
+ #endif
59
+ """
60
+
61
+ from libc.string cimport memset, memcpy
62
+
63
+ from cpython.object cimport Py_SIZE
64
+ from cpython.ref cimport PyTypeObject, Py_TYPE
65
+ from cpython.exc cimport PyErr_BadArgument
66
+ from cpython.mem cimport PyObject_Malloc, PyObject_Free
67
+
68
+ cdef extern from *: # Hard-coded utility code hack.
69
+ ctypedef class array.array [object arrayobject]
70
+ ctypedef object GETF(array a, Py_ssize_t ix)
71
+ ctypedef object SETF(array a, Py_ssize_t ix, object o)
72
+ ctypedef struct arraydescr: # [object arraydescr]:
73
+ char typecode
74
+ int itemsize
75
+ GETF getitem # PyObject * (*getitem)(struct arrayobject *, Py_ssize_t);
76
+ SETF setitem # int (*setitem)(struct arrayobject *, Py_ssize_t, PyObject *);
77
+
78
+ ctypedef union __data_union "__Pyx_data_union":
79
+ # views of ob_item:
80
+ float* as_floats # direct float pointer access to buffer
81
+ double* as_doubles # double ...
82
+ int* as_ints
83
+ unsigned int *as_uints
84
+ unsigned char *as_uchars
85
+ signed char *as_schars
86
+ char *as_chars
87
+ unsigned long *as_ulongs
88
+ long *as_longs
89
+ unsigned long long *as_ulonglongs
90
+ long long *as_longlongs
91
+ short *as_shorts
92
+ unsigned short *as_ushorts
93
+ Py_UNICODE *as_pyunicodes
94
+ void *as_voidptr
95
+
96
+ ctypedef class array.array [object arrayobject]:
97
+ cdef __cythonbufferdefaults__ = {'ndim' : 1, 'mode':'c'}
98
+
99
+ cdef:
100
+ Py_ssize_t ob_size
101
+ arraydescr* ob_descr # struct arraydescr *ob_descr;
102
+
103
+ @property
104
+ cdef inline __data_union data(self) nogil:
105
+ return __Pyx_PyArray_Data(self)
106
+
107
+ def __getbuffer__(self, Py_buffer* info, int flags):
108
+ # This implementation of getbuffer is geared towards Cython
109
+ # requirements, and does not yet fulfill the PEP.
110
+ # In particular strided access is always provided regardless
111
+ # of flags
112
+ item_count = Py_SIZE(self)
113
+
114
+ info.suboffsets = NULL
115
+ info.buf = self.data.as_chars
116
+ info.readonly = 0
117
+ info.ndim = 1
118
+ info.itemsize = self.ob_descr.itemsize # e.g. sizeof(float)
119
+ info.len = info.itemsize * item_count
120
+
121
+ info.shape = <Py_ssize_t*> PyObject_Malloc(sizeof(Py_ssize_t) + 2)
122
+ if not info.shape:
123
+ raise MemoryError()
124
+ info.shape[0] = item_count # constant regardless of resizing
125
+ info.strides = &info.itemsize
126
+
127
+ info.format = <char*> (info.shape + 1)
128
+ info.format[0] = self.ob_descr.typecode
129
+ info.format[1] = 0
130
+ info.obj = self
131
+
132
+ def __releasebuffer__(self, Py_buffer* info):
133
+ PyObject_Free(info.shape)
134
+
135
+ array newarrayobject(PyTypeObject* type, Py_ssize_t size, arraydescr *descr)
136
+
137
+ __data_union __Pyx_PyArray_Data(array self) nogil
138
+ # fast resize/realloc
139
+ # not suitable for small increments; reallocation 'to the point'
140
+ int resize(array self, Py_ssize_t n) except -1
141
+ # efficient for small increments (not in Py2.3-)
142
+ int resize_smart(array self, Py_ssize_t n) except -1
143
+
144
+
145
+ cdef inline array clone(array template, Py_ssize_t length, bint zero):
146
+ """ fast creation of a new array, given a template array.
147
+ type will be same as template.
148
+ if zero is true, new array will be initialized with zeroes."""
149
+ cdef array op = newarrayobject(Py_TYPE(template), length, template.ob_descr)
150
+ if zero and op is not None:
151
+ memset(op.data.as_chars, 0, length * op.ob_descr.itemsize)
152
+ return op
153
+
154
+ cdef inline array copy(array self):
155
+ """ make a copy of an array. """
156
+ cdef array op = newarrayobject(Py_TYPE(self), Py_SIZE(self), self.ob_descr)
157
+ memcpy(op.data.as_chars, self.data.as_chars, Py_SIZE(op) * op.ob_descr.itemsize)
158
+ return op
159
+
160
+ cdef inline int extend_buffer(array self, char* stuff, Py_ssize_t n) except -1:
161
+ """ efficient appending of new stuff of same type
162
+ (e.g. of same array type)
163
+ n: number of elements (not number of bytes!) """
164
+ cdef Py_ssize_t itemsize = self.ob_descr.itemsize
165
+ cdef Py_ssize_t origsize = Py_SIZE(self)
166
+ resize_smart(self, origsize + n)
167
+ memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize)
168
+ return 0
169
+
170
+ cdef inline int extend(array self, array other) except -1:
171
+ """ extend array with data from another array; types must match. """
172
+ if self.ob_descr.typecode != other.ob_descr.typecode:
173
+ PyErr_BadArgument()
174
+ return extend_buffer(self, other.data.as_chars, Py_SIZE(other))
175
+
176
+ cdef inline void zero(array self) noexcept:
177
+ """ set all elements of array to zero. """
178
+ memset(self.data.as_chars, 0, Py_SIZE(self) * self.ob_descr.itemsize)
@@ -0,0 +1,37 @@
1
+
2
+ cdef extern from "Python.h":
3
+
4
+ ############################################################################
5
+ # 7.2.2 Boolean Objects
6
+ ############################################################################
7
+
8
+ ctypedef class __builtin__.bool [object PyLongObject]:
9
+ pass
10
+
11
+ # Booleans in Python are implemented as a subclass of
12
+ # integers. There are only two booleans, Py_False and Py_True. As
13
+ # such, the normal creation and deletion functions don't apply to
14
+ # booleans. The following macros are available, however.
15
+
16
+ bint PyBool_Check(object o)
17
+ # Return true if o is of type PyBool_Type.
18
+
19
+ #PyObject* Py_False
20
+ # The Python False object. This object has no methods. It needs to
21
+ # be treated just like any other object with respect to reference
22
+ # counts.
23
+
24
+ #PyObject* Py_True
25
+ # The Python True object. This object has no methods. It needs to
26
+ # be treated just like any other object with respect to reference
27
+ # counts.
28
+
29
+ # Py_RETURN_FALSE
30
+ # Return Py_False from a function, properly incrementing its reference count.
31
+
32
+ # Py_RETURN_TRUE
33
+ # Return Py_True from a function, properly incrementing its reference count.
34
+
35
+ object PyBool_FromLong(long v)
36
+ # Return value: New reference.
37
+ # Return a new reference to Py_True or Py_False depending on the truth value of v.
@@ -0,0 +1,112 @@
1
+ # Please see the Python header files (object.h/abstract.h) for docs
2
+
3
+ cdef extern from "Python.h":
4
+
5
+ cdef enum:
6
+ PyBUF_MAX_NDIM
7
+
8
+ cdef enum:
9
+ PyBUF_SIMPLE,
10
+ PyBUF_WRITABLE,
11
+ PyBUF_WRITEABLE, # backwards compatibility
12
+ PyBUF_FORMAT,
13
+ PyBUF_ND,
14
+ PyBUF_STRIDES,
15
+ PyBUF_C_CONTIGUOUS,
16
+ PyBUF_F_CONTIGUOUS,
17
+ PyBUF_ANY_CONTIGUOUS,
18
+ PyBUF_INDIRECT,
19
+ PyBUF_CONTIG,
20
+ PyBUF_CONTIG_RO,
21
+ PyBUF_STRIDED,
22
+ PyBUF_STRIDED_RO,
23
+ PyBUF_RECORDS,
24
+ PyBUF_RECORDS_RO,
25
+ PyBUF_FULL,
26
+ PyBUF_FULL_RO,
27
+ PyBUF_READ,
28
+ PyBUF_WRITE,
29
+ PyBUF_SHADOW
30
+
31
+ bint PyObject_CheckBuffer(object obj)
32
+ # Return 1 if obj supports the buffer interface otherwise 0.
33
+
34
+ int PyObject_GetBuffer(object obj, Py_buffer *view, int flags) except -1
35
+ # Export obj into a Py_buffer, view. These arguments must never be
36
+ # NULL. The flags argument is a bit field indicating what kind of
37
+ # buffer the caller is prepared to deal with and therefore what
38
+ # kind of buffer the exporter is allowed to return. The buffer
39
+ # interface allows for complicated memory sharing possibilities,
40
+ # but some caller may not be able to handle all the complexity but
41
+ # may want to see if the exporter will let them take a simpler
42
+ # view to its memory.
43
+
44
+ # Some exporters may not be able to share memory in every possible
45
+ # way and may need to raise errors to signal to some consumers
46
+ # that something is just not possible. These errors should be a
47
+ # BufferError unless there is another error that is actually
48
+ # causing the problem. The exporter can use flags information to
49
+ # simplify how much of the Py_buffer structure is filled in with
50
+ # non-default values and/or raise an error if the object can’t
51
+ # support a simpler view of its memory.
52
+
53
+ # 0 is returned on success and -1 on error.
54
+
55
+ void PyBuffer_Release(Py_buffer *view)
56
+ # Release the buffer view. This should be called when the buffer
57
+ # is no longer being used as it may free memory from it.
58
+
59
+ void* PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices)
60
+ # ??
61
+
62
+ Py_ssize_t PyBuffer_SizeFromFormat(char *) # actually const char
63
+ # Return the implied ~Py_buffer.itemsize from the struct-stype
64
+ # ~Py_buffer.format
65
+
66
+ int PyBuffer_ToContiguous(void *buf, Py_buffer *view, Py_ssize_t len, char fort)
67
+ # ??
68
+
69
+ int PyBuffer_FromContiguous(Py_buffer *view, void *buf, Py_ssize_t len, char fort)
70
+ # ??
71
+
72
+ int PyObject_CopyToObject(object obj, void *buf, Py_ssize_t len, char fortran) except -1
73
+ # Copy len bytes of data pointed to by the contiguous chunk of
74
+ # memory pointed to by buf into the buffer exported by obj. The
75
+ # buffer must of course be writable. Return 0 on success and
76
+ # return -1 and raise an error on failure. If the object does not
77
+ # have a writable buffer, then an error is raised. If fortran is
78
+ # 'F', then if the object is multi-dimensional, then the data will
79
+ # be copied into the array in Fortran-style (first dimension
80
+ # varies the fastest). If fortran is 'C', then the data will be
81
+ # copied into the array in C-style (last dimension varies the
82
+ # fastest). If fortran is 'A', then it does not matter and the
83
+ # copy will be made in whatever way is more efficient.
84
+
85
+ int PyObject_CopyData(object dest, object src) except -1
86
+ # Copy the data from the src buffer to the buffer of destination
87
+
88
+ bint PyBuffer_IsContiguous(Py_buffer *view, char fort)
89
+ # Return 1 if the memory defined by the view is C-style (fortran
90
+ # is 'C') or Fortran-style (fortran is 'F') contiguous or either
91
+ # one (fortran is 'A'). Return 0 otherwise.
92
+
93
+ void PyBuffer_FillContiguousStrides(int ndims,
94
+ Py_ssize_t *shape,
95
+ Py_ssize_t *strides,
96
+ Py_ssize_t itemsize,
97
+ char fort)
98
+ # Fill the strides array with byte-strides of a contiguous
99
+ # (Fortran-style if fort is 'F' or C-style otherwise) array of the
100
+ # given shape with the given number of bytes per element.
101
+
102
+ int PyBuffer_FillInfo(Py_buffer *view, object exporter, void *buf,
103
+ Py_ssize_t len, int readonly, int flags) except -1
104
+ # Fill in a buffer-info structure, view, correctly for an exporter
105
+ # that can only share a contiguous chunk of memory of “unsigned
106
+ # bytes” of the given length. Return 0 on success and -1 (with
107
+ # raising an error) on error.
108
+
109
+ # DEPRECATED HERE: do not cimport from here, cimport from cpython.object instead
110
+ object PyObject_Format(object obj, object format_spec)
111
+ # Takes an arbitrary object and returns the result of calling
112
+ # obj.__format__(format_spec).
@@ -0,0 +1,33 @@
1
+ from .object cimport PyObject
2
+
3
+ cdef extern from "Python.h":
4
+ bint PyByteArray_Check(object o)
5
+ # Return true if the object o is a bytearray object or an instance of a subtype of the bytearray type.
6
+
7
+ bint PyByteArray_CheckExact(object o)
8
+ # Return true if the object o is a bytearray object, but not an instance of a subtype of the bytearray type.
9
+
10
+ bytearray PyByteArray_FromObject(object o)
11
+ # Return a new bytearray object from any object, o, that implements the buffer protocol.
12
+
13
+ bytearray PyByteArray_FromStringAndSize(char *string, Py_ssize_t len)
14
+ # Create a new bytearray object from string and its length, len. On failure, NULL is returned.
15
+
16
+ bytearray PyByteArray_Concat(object a, object b)
17
+ # Concat bytearrays a and b and return a new bytearray with the result.
18
+
19
+ Py_ssize_t PyByteArray_Size(object bytearray)
20
+ # Return the size of bytearray after checking for a NULL pointer.
21
+
22
+ char* PyByteArray_AsString(object bytearray)
23
+ # Return the contents of bytearray as a char array after checking for a NULL pointer.
24
+ # The returned array always has an extra null byte appended.
25
+
26
+ int PyByteArray_Resize(object bytearray, Py_ssize_t len) except -1
27
+ # Resize the internal buffer of bytearray to len.
28
+
29
+ char* PyByteArray_AS_STRING(object bytearray)
30
+ # Macro version of PyByteArray_AsString().
31
+
32
+ Py_ssize_t PyByteArray_GET_SIZE(object bytearray)
33
+ # Macro version of PyByteArray_Size().