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,232 @@
1
+ from .PyrexTypes import CType, CTypedefType, CStructOrUnionType
2
+
3
+ import cython
4
+
5
+ try:
6
+ import pythran
7
+ pythran_is_pre_0_9 = tuple(map(int, pythran.__version__.split('.')[0:2])) < (0, 9)
8
+ pythran_is_pre_0_9_6 = tuple(map(int, pythran.__version__.split('.')[0:3])) < (0, 9, 6)
9
+ except ImportError:
10
+ pythran = None
11
+ pythran_is_pre_0_9 = True
12
+ pythran_is_pre_0_9_6 = True
13
+
14
+ if pythran_is_pre_0_9_6:
15
+ pythran_builtins = '__builtin__'
16
+ else:
17
+ pythran_builtins = 'builtins'
18
+
19
+
20
+ # Pythran/Numpy specific operations
21
+
22
+ def has_np_pythran(env):
23
+ if env is None:
24
+ return False
25
+ directives = getattr(env, 'directives', None)
26
+ return (directives and directives.get('np_pythran', False))
27
+
28
+ @cython.ccall
29
+ def is_pythran_supported_dtype(type_):
30
+ if isinstance(type_, CTypedefType):
31
+ return is_pythran_supported_type(type_.typedef_base_type)
32
+ return type_.is_numeric
33
+
34
+
35
+ def pythran_type(Ty, ptype="ndarray"):
36
+ if Ty.is_buffer:
37
+ ndim,dtype = Ty.ndim, Ty.dtype
38
+ if isinstance(dtype, CStructOrUnionType):
39
+ ctype = dtype.cname
40
+ elif isinstance(dtype, CType):
41
+ ctype = dtype.sign_and_name()
42
+ elif isinstance(dtype, CTypedefType):
43
+ ctype = dtype.typedef_cname
44
+ else:
45
+ raise ValueError("unsupported type %s!" % dtype)
46
+ if pythran_is_pre_0_9:
47
+ return "pythonic::types::%s<%s,%d>" % (ptype,ctype, ndim)
48
+ else:
49
+ return "pythonic::types::%s<%s,pythonic::types::pshape<%s>>" % (ptype,ctype, ",".join(("long",)*ndim))
50
+ if Ty.is_pythran_expr:
51
+ return Ty.pythran_type
52
+ #if Ty.is_none:
53
+ # return "decltype(pythonic::builtins::None)"
54
+ if Ty.is_numeric:
55
+ return Ty.sign_and_name()
56
+ raise ValueError("unsupported pythran type %s (%s)" % (Ty, type(Ty)))
57
+
58
+
59
+ @cython.cfunc
60
+ def type_remove_ref(ty):
61
+ return "typename std::remove_reference<%s>::type" % ty
62
+
63
+
64
+ def pythran_binop_type(op, tA, tB):
65
+ if op == '**':
66
+ return 'decltype(pythonic::numpy::functor::power{}(std::declval<%s>(), std::declval<%s>()))' % (
67
+ pythran_type(tA), pythran_type(tB))
68
+ else:
69
+ return "decltype(std::declval<%s>() %s std::declval<%s>())" % (
70
+ pythran_type(tA), op, pythran_type(tB))
71
+
72
+
73
+ def pythran_unaryop_type(op, type_):
74
+ return "decltype(%sstd::declval<%s>())" % (
75
+ op, pythran_type(type_))
76
+
77
+
78
+ @cython.cfunc
79
+ def _index_access(index_code, indices):
80
+ indexing = ",".join([index_code(idx) for idx in indices])
81
+ return ('[%s]' if len(indices) == 1 else '(%s)') % indexing
82
+
83
+
84
+ def _index_type_code(index_with_type):
85
+ idx, index_type = index_with_type
86
+ if idx.is_slice:
87
+ n = 2 + int(not idx.step.is_none)
88
+ return "pythonic::%s::functor::slice{}(%s)" % (
89
+ pythran_builtins,
90
+ ",".join(["0"]*n))
91
+ elif index_type.is_int:
92
+ return "std::declval<%s>()" % index_type.sign_and_name()
93
+ elif index_type.is_pythran_expr:
94
+ return "std::declval<%s>()" % index_type.pythran_type
95
+ raise ValueError("unsupported indexing type %s!" % index_type)
96
+
97
+
98
+ def _index_code(idx):
99
+ if idx.is_slice:
100
+ values = idx.start, idx.stop, idx.step
101
+ if idx.step.is_none:
102
+ func = "contiguous_slice"
103
+ values = values[:2]
104
+ else:
105
+ func = "slice"
106
+ return "pythonic::types::%s(%s)" % (
107
+ func, ",".join(v.pythran_result() for v in values))
108
+ elif idx.type.is_int:
109
+ return to_pythran(idx)
110
+ elif idx.type.is_pythran_expr:
111
+ return idx.pythran_result()
112
+ raise ValueError("unsupported indexing type %s" % idx.type)
113
+
114
+
115
+ def pythran_indexing_type(type_, indices):
116
+ return type_remove_ref("decltype(std::declval<%s>()%s)" % (
117
+ pythran_type(type_),
118
+ _index_access(_index_type_code, indices),
119
+ ))
120
+
121
+
122
+ def pythran_indexing_code(indices):
123
+ return _index_access(_index_code, indices)
124
+
125
+ def np_func_to_list(func):
126
+ if not func.is_numpy_attribute:
127
+ return []
128
+ return np_func_to_list(func.obj) + [func.attribute]
129
+
130
+ if pythran is None:
131
+ def pythran_is_numpy_func_supported(name):
132
+ return False
133
+ else:
134
+ def pythran_is_numpy_func_supported(func):
135
+ CurF = pythran.tables.MODULES['numpy']
136
+ FL = np_func_to_list(func)
137
+ for F in FL:
138
+ CurF = CurF.get(F, None)
139
+ if CurF is None:
140
+ return False
141
+ return True
142
+
143
+ def pythran_functor(func):
144
+ func = np_func_to_list(func)
145
+ submodules = "::".join(func[:-1] + ["functor"])
146
+ return "pythonic::numpy::%s::%s" % (submodules, func[-1])
147
+
148
+ def pythran_func_type(func, args):
149
+ args = ",".join("std::declval<%s>()" % pythran_type(a.type) for a in args)
150
+ return "decltype(%s{}(%s))" % (pythran_functor(func), args)
151
+
152
+
153
+ @cython.ccall
154
+ def to_pythran(op, ptype=None):
155
+ op_type = op.type
156
+ if op_type.is_int:
157
+ # Make sure that integer literals always have exactly the type that the templates expect.
158
+ return op_type.cast_code(op.result())
159
+ if is_pythran_expr(op_type) and (op.result_in_temp() or getattr(op, "entry", None)):
160
+ # Currently Pythran seems to generate different code for lvalve and rvalue references.
161
+ # The inferred variable types are all in terms of rvalue references (std::declval).
162
+ # Anything pythran expression written in terms of lvalue references ends up not
163
+ # default constructable so is unsuitable for use as a Cython temp.
164
+ # Therefore, we must make sure that we're passing rvalue references.
165
+ # (std::move would also do and likely be better in the case of most temps,
166
+ # but maybe not all temps)
167
+ return f"decltype({op.result()}){{{op.result()}}}"
168
+ if is_type(op_type, ["is_pythran_expr", "is_numeric", "is_float", "is_complex"]):
169
+ return op.result()
170
+ if op.is_none:
171
+ return "pythonic::%s::None" % pythran_builtins
172
+ if ptype is None:
173
+ ptype = pythran_type(op_type)
174
+
175
+ assert op.type.is_pyobject
176
+ return "from_python<%s>(%s)" % (ptype, op.py_result())
177
+
178
+
179
+ @cython.cfunc
180
+ def is_type(type_, types):
181
+ for attr in types:
182
+ if getattr(type_, attr, False):
183
+ return True
184
+ return False
185
+
186
+
187
+ def is_pythran_supported_node_or_none(node):
188
+ return node.is_none or is_pythran_supported_type(node.type)
189
+
190
+
191
+ @cython.ccall
192
+ def is_pythran_supported_type(type_):
193
+ pythran_supported = (
194
+ "is_pythran_expr", "is_int", "is_numeric", "is_float", "is_none", "is_complex")
195
+ return is_type(type_, pythran_supported) or is_pythran_expr(type_)
196
+
197
+
198
+ def is_pythran_supported_operation_type(type_):
199
+ pythran_supported = (
200
+ "is_pythran_expr", "is_int", "is_numeric", "is_float", "is_complex")
201
+ return is_type(type_,pythran_supported) or is_pythran_expr(type_)
202
+
203
+
204
+ @cython.ccall
205
+ def is_pythran_expr(type_):
206
+ return type_.is_pythran_expr
207
+
208
+
209
+ def is_pythran_buffer(type_):
210
+ return (type_.is_numpy_buffer and is_pythran_supported_dtype(type_.dtype) and
211
+ type_.mode in ("c", "strided") and not type_.cast)
212
+
213
+ def pythran_get_func_include_file(func):
214
+ func = np_func_to_list(func)
215
+ return "pythonic/numpy/%s.hpp" % "/".join(func)
216
+
217
+ def include_pythran_generic(env):
218
+ # Generic files
219
+ env.add_include_file("pythonic/core.hpp")
220
+ env.add_include_file("pythonic/python/core.hpp")
221
+ env.add_include_file("pythonic/types/bool.hpp")
222
+ env.add_include_file("pythonic/types/ndarray.hpp")
223
+ env.add_include_file("pythonic/numpy/power.hpp")
224
+ env.add_include_file("pythonic/%s/slice.hpp" % pythran_builtins)
225
+ env.add_include_file("<new>") # for placement new
226
+
227
+ for i in (8, 16, 32, 64):
228
+ env.add_include_file("pythonic/types/uint%d.hpp" % i)
229
+ env.add_include_file("pythonic/types/int%d.hpp" % i)
230
+ for t in ("float", "float32", "float64", "set", "slice", "tuple", "int",
231
+ "complex", "complex64", "complex128"):
232
+ env.add_include_file("pythonic/types/%s.hpp" % t)
@@ -0,0 +1,48 @@
1
+ import cython
2
+
3
+ from ..Plex.Scanners cimport Scanner
4
+
5
+ cdef unicode any_string_prefix, IDENT
6
+
7
+ cdef get_lexicon()
8
+ cdef initial_compile_time_env()
9
+
10
+ ## methods commented with '##' out are used by Parsing.py when compiled.
11
+
12
+ @cython.final
13
+ cdef class CompileTimeScope:
14
+ cdef public dict entries
15
+ cdef public CompileTimeScope outer
16
+ ##cdef declare(self, name, value)
17
+ ##cdef lookup_here(self, name)
18
+ ##cpdef lookup(self, name)
19
+
20
+ @cython.final
21
+ cdef class PyrexScanner(Scanner):
22
+ cdef public context
23
+ cdef public list included_files
24
+ cdef public CompileTimeScope compile_time_env
25
+ cdef public bint compile_time_eval
26
+ cdef public bint compile_time_expr
27
+ cdef public bint parse_comments
28
+ cdef public bint in_python_file
29
+ cdef public source_encoding
30
+ cdef dict keywords
31
+ cdef public list indentation_stack
32
+ cdef public Py_UCS4 indentation_char
33
+ cdef public int bracket_nesting_level
34
+ cdef readonly bint async_enabled
35
+ cdef public unicode sy
36
+ cdef public systring # EncodedString
37
+ cdef public list put_back_on_failure
38
+ # fstrings/tstrings
39
+ cdef list ft_string_state_stack
40
+ cdef int in_ft_string_expr_prescan
41
+
42
+ cdef Py_ssize_t current_level(self)
43
+ cdef int error_at_scanpos(self, str message) except -1
44
+
45
+
46
+ cdef class FTStringState:
47
+ cdef list bracket_states
48
+ cdef readonly str scanner_state