Cython 3.3.0__cp315-cp315-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. Cython/Build/BuildExecutable.py +156 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +349 -0
  4. Cython/Build/Dependencies.py +1281 -0
  5. Cython/Build/Distutils.py +1 -0
  6. Cython/Build/Inline.py +467 -0
  7. Cython/Build/IpythonMagic.py +559 -0
  8. Cython/Build/SharedModule.py +165 -0
  9. Cython/Build/Tests/TestCyCache.py +195 -0
  10. Cython/Build/Tests/TestCythonizeArgsParser.py +480 -0
  11. Cython/Build/Tests/TestDependencies.py +133 -0
  12. Cython/Build/Tests/TestInline.py +177 -0
  13. Cython/Build/Tests/TestIpythonMagic.py +303 -0
  14. Cython/Build/Tests/TestRecythonize.py +212 -0
  15. Cython/Build/Tests/TestStripLiterals.py +155 -0
  16. Cython/Build/Tests/__init__.py +1 -0
  17. Cython/Build/__init__.py +11 -0
  18. Cython/CodeWriter.py +825 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +328 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +679 -0
  23. Cython/Compiler/Builtin.py +1102 -0
  24. Cython/Compiler/CmdLine.py +373 -0
  25. Cython/Compiler/Code.cp315-win_amd64.pyd +0 -0
  26. Cython/Compiler/Code.pxd +154 -0
  27. Cython/Compiler/Code.py +3760 -0
  28. Cython/Compiler/CodeGeneration.py +33 -0
  29. Cython/Compiler/CythonScope.py +208 -0
  30. Cython/Compiler/Dataclass.py +890 -0
  31. Cython/Compiler/DebugFlags.py +24 -0
  32. Cython/Compiler/Errors.py +310 -0
  33. Cython/Compiler/ExprNodes.py +16273 -0
  34. Cython/Compiler/FlowControl.cp315-win_amd64.pyd +0 -0
  35. Cython/Compiler/FlowControl.pxd +112 -0
  36. Cython/Compiler/FlowControl.py +1573 -0
  37. Cython/Compiler/FusedNode.cp315-win_amd64.pyd +0 -0
  38. Cython/Compiler/FusedNode.py +978 -0
  39. Cython/Compiler/Future.py +16 -0
  40. Cython/Compiler/Interpreter.py +57 -0
  41. Cython/Compiler/Lexicon.py +422 -0
  42. Cython/Compiler/LineTable.cp315-win_amd64.pyd +0 -0
  43. Cython/Compiler/LineTable.py +114 -0
  44. Cython/Compiler/Main.py +856 -0
  45. Cython/Compiler/MatchCaseNodes.py +2200 -0
  46. Cython/Compiler/MemoryView.py +930 -0
  47. Cython/Compiler/ModuleNode.py +4548 -0
  48. Cython/Compiler/Naming.py +370 -0
  49. Cython/Compiler/Nodes.py +11304 -0
  50. Cython/Compiler/Optimize.py +5564 -0
  51. Cython/Compiler/Options.py +840 -0
  52. Cython/Compiler/ParseTreeTransforms.pxd +80 -0
  53. Cython/Compiler/ParseTreeTransforms.py +4808 -0
  54. Cython/Compiler/Parsing.cp315-win_amd64.pyd +0 -0
  55. Cython/Compiler/Parsing.pxd +9 -0
  56. Cython/Compiler/Parsing.py +4809 -0
  57. Cython/Compiler/Pipeline.py +439 -0
  58. Cython/Compiler/PyrexTypes.py +6588 -0
  59. Cython/Compiler/Pythran.py +232 -0
  60. Cython/Compiler/Scanning.cp315-win_amd64.pyd +0 -0
  61. Cython/Compiler/Scanning.pxd +70 -0
  62. Cython/Compiler/Scanning.py +720 -0
  63. Cython/Compiler/StringEncoding.cp315-win_amd64.pyd +0 -0
  64. Cython/Compiler/StringEncoding.py +354 -0
  65. Cython/Compiler/Symtab.py +3121 -0
  66. Cython/Compiler/Tests/TestBuffer.py +105 -0
  67. Cython/Compiler/Tests/TestBuiltin.py +196 -0
  68. Cython/Compiler/Tests/TestCmdLine.py +652 -0
  69. Cython/Compiler/Tests/TestCode.py +145 -0
  70. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  71. Cython/Compiler/Tests/TestGrammar.py +202 -0
  72. Cython/Compiler/Tests/TestMemView.py +71 -0
  73. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  74. Cython/Compiler/Tests/TestScanning.py +132 -0
  75. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  76. Cython/Compiler/Tests/TestStringEncoding.py +20 -0
  77. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  78. Cython/Compiler/Tests/TestTreePath.py +103 -0
  79. Cython/Compiler/Tests/TestTypes.py +119 -0
  80. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  81. Cython/Compiler/Tests/TestVisitor.py +119 -0
  82. Cython/Compiler/Tests/Utils.py +36 -0
  83. Cython/Compiler/Tests/__init__.py +1 -0
  84. Cython/Compiler/TreeFragment.py +279 -0
  85. Cython/Compiler/TreePath.py +303 -0
  86. Cython/Compiler/TypeInference.py +611 -0
  87. Cython/Compiler/TypeSlots.py +1329 -0
  88. Cython/Compiler/UFuncs.py +317 -0
  89. Cython/Compiler/UtilNodes.py +389 -0
  90. Cython/Compiler/UtilityCode.py +354 -0
  91. Cython/Compiler/Version.py +8 -0
  92. Cython/Compiler/Visitor.cp315-win_amd64.pyd +0 -0
  93. Cython/Compiler/Visitor.pxd +52 -0
  94. Cython/Compiler/Visitor.py +914 -0
  95. Cython/Compiler/__init__.py +1 -0
  96. Cython/Coverage.py +448 -0
  97. Cython/Debugger/Cygdb.py +214 -0
  98. Cython/Debugger/DebugWriter.py +82 -0
  99. Cython/Debugger/Tests/TestLibCython.py +280 -0
  100. Cython/Debugger/Tests/__init__.py +1 -0
  101. Cython/Debugger/Tests/cfuncs.c +8 -0
  102. Cython/Debugger/Tests/codefile +49 -0
  103. Cython/Debugger/Tests/test_libcython_in_gdb.py +580 -0
  104. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  105. Cython/Debugger/__init__.py +1 -0
  106. Cython/Debugger/libcython.py +1548 -0
  107. Cython/Debugger/libpython.py +2821 -0
  108. Cython/Debugging.py +20 -0
  109. Cython/Distutils/__init__.py +2 -0
  110. Cython/Distutils/build_ext.py +143 -0
  111. Cython/Distutils/extension.py +96 -0
  112. Cython/Distutils/old_build_ext.py +351 -0
  113. Cython/Includes/cpython/__init__.pxd +173 -0
  114. Cython/Includes/cpython/array.pxd +152 -0
  115. Cython/Includes/cpython/bool.pxd +37 -0
  116. Cython/Includes/cpython/buffer.pxd +112 -0
  117. Cython/Includes/cpython/bytearray.pxd +33 -0
  118. Cython/Includes/cpython/bytes.pxd +200 -0
  119. Cython/Includes/cpython/cellobject.pxd +35 -0
  120. Cython/Includes/cpython/ceval.pxd +8 -0
  121. Cython/Includes/cpython/codecs.pxd +121 -0
  122. Cython/Includes/cpython/complex.pxd +60 -0
  123. Cython/Includes/cpython/contextvars.pxd +145 -0
  124. Cython/Includes/cpython/conversion.pxd +36 -0
  125. Cython/Includes/cpython/datetime.pxd +395 -0
  126. Cython/Includes/cpython/descr.pxd +26 -0
  127. Cython/Includes/cpython/dict.pxd +268 -0
  128. Cython/Includes/cpython/exc.pxd +263 -0
  129. Cython/Includes/cpython/fileobject.pxd +57 -0
  130. Cython/Includes/cpython/float.pxd +56 -0
  131. Cython/Includes/cpython/frozendict.pxd +37 -0
  132. Cython/Includes/cpython/function.pxd +65 -0
  133. Cython/Includes/cpython/genobject.pxd +25 -0
  134. Cython/Includes/cpython/getargs.pxd +12 -0
  135. Cython/Includes/cpython/instance.pxd +25 -0
  136. Cython/Includes/cpython/iterator.pxd +36 -0
  137. Cython/Includes/cpython/iterobject.pxd +24 -0
  138. Cython/Includes/cpython/list.pxd +144 -0
  139. Cython/Includes/cpython/long.pxd +180 -0
  140. Cython/Includes/cpython/longintrepr.pxd +14 -0
  141. Cython/Includes/cpython/mapping.pxd +63 -0
  142. Cython/Includes/cpython/marshal.pxd +66 -0
  143. Cython/Includes/cpython/mem.pxd +120 -0
  144. Cython/Includes/cpython/memoryview.pxd +50 -0
  145. Cython/Includes/cpython/method.pxd +49 -0
  146. Cython/Includes/cpython/module.pxd +208 -0
  147. Cython/Includes/cpython/number.pxd +258 -0
  148. Cython/Includes/cpython/object.pxd +430 -0
  149. Cython/Includes/cpython/pycapsule.pxd +143 -0
  150. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  151. Cython/Includes/cpython/pyport.pxd +8 -0
  152. Cython/Includes/cpython/pystate.pxd +95 -0
  153. Cython/Includes/cpython/pythread.pxd +53 -0
  154. Cython/Includes/cpython/ref.pxd +141 -0
  155. Cython/Includes/cpython/sentinel.pxd +17 -0
  156. Cython/Includes/cpython/sequence.pxd +134 -0
  157. Cython/Includes/cpython/set.pxd +119 -0
  158. Cython/Includes/cpython/slice.pxd +70 -0
  159. Cython/Includes/cpython/time.pxd +129 -0
  160. Cython/Includes/cpython/tuple.pxd +72 -0
  161. Cython/Includes/cpython/type.pxd +146 -0
  162. Cython/Includes/cpython/unicode.pxd +639 -0
  163. Cython/Includes/cpython/version.pxd +32 -0
  164. Cython/Includes/cpython/weakref.pxd +78 -0
  165. Cython/Includes/libc/__init__.pxd +1 -0
  166. Cython/Includes/libc/complex.pxd +35 -0
  167. Cython/Includes/libc/errno.pxd +127 -0
  168. Cython/Includes/libc/float.pxd +43 -0
  169. Cython/Includes/libc/limits.pxd +28 -0
  170. Cython/Includes/libc/locale.pxd +46 -0
  171. Cython/Includes/libc/math.pxd +209 -0
  172. Cython/Includes/libc/setjmp.pxd +10 -0
  173. Cython/Includes/libc/signal.pxd +64 -0
  174. Cython/Includes/libc/stddef.pxd +9 -0
  175. Cython/Includes/libc/stdint.pxd +105 -0
  176. Cython/Includes/libc/stdio.pxd +80 -0
  177. Cython/Includes/libc/stdlib.pxd +72 -0
  178. Cython/Includes/libc/string.pxd +50 -0
  179. Cython/Includes/libc/threads.pxd +234 -0
  180. Cython/Includes/libc/time.pxd +52 -0
  181. Cython/Includes/libcpp/__init__.pxd +4 -0
  182. Cython/Includes/libcpp/algorithm.pxd +320 -0
  183. Cython/Includes/libcpp/any.pxd +16 -0
  184. Cython/Includes/libcpp/atomic.pxd +59 -0
  185. Cython/Includes/libcpp/barrier.pxd +22 -0
  186. Cython/Includes/libcpp/bit.pxd +29 -0
  187. Cython/Includes/libcpp/cast.pxd +12 -0
  188. Cython/Includes/libcpp/cmath.pxd +518 -0
  189. Cython/Includes/libcpp/complex.pxd +106 -0
  190. Cython/Includes/libcpp/condition_variable.pxd +322 -0
  191. Cython/Includes/libcpp/deque.pxd +165 -0
  192. Cython/Includes/libcpp/exception.pxd +216 -0
  193. Cython/Includes/libcpp/execution.pxd +15 -0
  194. Cython/Includes/libcpp/forward_list.pxd +63 -0
  195. Cython/Includes/libcpp/functional.pxd +26 -0
  196. Cython/Includes/libcpp/future.pxd +103 -0
  197. Cython/Includes/libcpp/iterator.pxd +34 -0
  198. Cython/Includes/libcpp/latch.pxd +17 -0
  199. Cython/Includes/libcpp/limits.pxd +61 -0
  200. Cython/Includes/libcpp/list.pxd +117 -0
  201. Cython/Includes/libcpp/map.pxd +252 -0
  202. Cython/Includes/libcpp/memory.pxd +115 -0
  203. Cython/Includes/libcpp/mutex.pxd +387 -0
  204. Cython/Includes/libcpp/numbers.pxd +15 -0
  205. Cython/Includes/libcpp/numeric.pxd +131 -0
  206. Cython/Includes/libcpp/optional.pxd +34 -0
  207. Cython/Includes/libcpp/pair.pxd +1 -0
  208. Cython/Includes/libcpp/queue.pxd +25 -0
  209. Cython/Includes/libcpp/random.pxd +166 -0
  210. Cython/Includes/libcpp/semaphore.pxd +43 -0
  211. Cython/Includes/libcpp/set.pxd +228 -0
  212. Cython/Includes/libcpp/shared_mutex.pxd +96 -0
  213. Cython/Includes/libcpp/span.pxd +87 -0
  214. Cython/Includes/libcpp/stack.pxd +11 -0
  215. Cython/Includes/libcpp/stop_token.pxd +117 -0
  216. Cython/Includes/libcpp/string.pxd +355 -0
  217. Cython/Includes/libcpp/string_view.pxd +183 -0
  218. Cython/Includes/libcpp/typeindex.pxd +15 -0
  219. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  220. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  221. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  222. Cython/Includes/libcpp/utility.pxd +30 -0
  223. Cython/Includes/libcpp/vector.pxd +186 -0
  224. Cython/Includes/numpy/math.pxd +150 -0
  225. Cython/Includes/openmp.pxd +50 -0
  226. Cython/Includes/posix/__init__.pxd +1 -0
  227. Cython/Includes/posix/dlfcn.pxd +14 -0
  228. Cython/Includes/posix/fcntl.pxd +86 -0
  229. Cython/Includes/posix/ioctl.pxd +4 -0
  230. Cython/Includes/posix/mman.pxd +101 -0
  231. Cython/Includes/posix/resource.pxd +57 -0
  232. Cython/Includes/posix/select.pxd +21 -0
  233. Cython/Includes/posix/signal.pxd +73 -0
  234. Cython/Includes/posix/stat.pxd +98 -0
  235. Cython/Includes/posix/stdio.pxd +37 -0
  236. Cython/Includes/posix/stdlib.pxd +29 -0
  237. Cython/Includes/posix/strings.pxd +9 -0
  238. Cython/Includes/posix/time.pxd +71 -0
  239. Cython/Includes/posix/types.pxd +30 -0
  240. Cython/Includes/posix/uio.pxd +26 -0
  241. Cython/Includes/posix/unistd.pxd +271 -0
  242. Cython/Includes/posix/wait.pxd +38 -0
  243. Cython/LZSS.cp315-win_amd64.pyd +0 -0
  244. Cython/LZSS.py +184 -0
  245. Cython/Plex/Actions.cp315-win_amd64.pyd +0 -0
  246. Cython/Plex/Actions.pxd +24 -0
  247. Cython/Plex/Actions.py +119 -0
  248. Cython/Plex/DFA.cp315-win_amd64.pyd +0 -0
  249. Cython/Plex/DFA.pxd +14 -0
  250. Cython/Plex/DFA.py +164 -0
  251. Cython/Plex/Errors.py +48 -0
  252. Cython/Plex/Lexicons.py +178 -0
  253. Cython/Plex/Machines.cp315-win_amd64.pyd +0 -0
  254. Cython/Plex/Machines.pxd +36 -0
  255. Cython/Plex/Machines.py +238 -0
  256. Cython/Plex/Regexps.py +535 -0
  257. Cython/Plex/Scanners.cp315-win_amd64.pyd +0 -0
  258. Cython/Plex/Scanners.pxd +45 -0
  259. Cython/Plex/Scanners.py +328 -0
  260. Cython/Plex/Transitions.cp315-win_amd64.pyd +0 -0
  261. Cython/Plex/Transitions.pxd +14 -0
  262. Cython/Plex/Transitions.py +239 -0
  263. Cython/Plex/__init__.py +34 -0
  264. Cython/Runtime/__init__.py +1 -0
  265. Cython/Runtime/refnanny.cp315-win_amd64.pyd +0 -0
  266. Cython/Runtime/refnanny.pyx +237 -0
  267. Cython/Shadow.py +1174 -0
  268. Cython/StringIOTree.cp315-win_amd64.pyd +0 -0
  269. Cython/StringIOTree.py +169 -0
  270. Cython/Tempita/__init__.py +4 -0
  271. Cython/Tempita/_looper.py +154 -0
  272. Cython/Tempita/_tempita.cp315-win_amd64.pyd +0 -0
  273. Cython/Tempita/_tempita.py +1087 -0
  274. Cython/TestUtils.py +472 -0
  275. Cython/Tests/TestCodeWriter.py +128 -0
  276. Cython/Tests/TestCythonUtils.py +202 -0
  277. Cython/Tests/TestJediTyper.py +223 -0
  278. Cython/Tests/TestShadow.py +125 -0
  279. Cython/Tests/TestStringIOTree.py +68 -0
  280. Cython/Tests/TestTestUtils.py +89 -0
  281. Cython/Tests/__init__.py +1 -0
  282. Cython/Tests/xmlrunner.py +390 -0
  283. Cython/Utility/AsyncGen.c +1152 -0
  284. Cython/Utility/Buffer.c +866 -0
  285. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  286. Cython/Utility/Builtins.c +1068 -0
  287. Cython/Utility/CConvert.pyx +153 -0
  288. Cython/Utility/CMath.c +104 -0
  289. Cython/Utility/CommonStructures.c +244 -0
  290. Cython/Utility/Complex.c +378 -0
  291. Cython/Utility/Coroutine.c +2344 -0
  292. Cython/Utility/CpdefEnums.pyx +119 -0
  293. Cython/Utility/CppConvert.pyx +282 -0
  294. Cython/Utility/CppSupport.cpp +151 -0
  295. Cython/Utility/CythonFunction.c +2185 -0
  296. Cython/Utility/Dataclasses.c +101 -0
  297. Cython/Utility/Embed.c +129 -0
  298. Cython/Utility/Exceptions.c +1331 -0
  299. Cython/Utility/Exceptions_Cy.pyx +109 -0
  300. Cython/Utility/ExtensionTypes.c +1199 -0
  301. Cython/Utility/FunctionArguments.c +1052 -0
  302. Cython/Utility/FusedFunction.pyx +44 -0
  303. Cython/Utility/ImportExport.c +972 -0
  304. Cython/Utility/MatchCase.c +981 -0
  305. Cython/Utility/MatchCase_Cy.pyx +12 -0
  306. Cython/Utility/MemoryView.pxd +108 -0
  307. Cython/Utility/MemoryView.pyx +1499 -0
  308. Cython/Utility/MemoryView_C.c +1056 -0
  309. Cython/Utility/ModuleSetupCode.c +3319 -0
  310. Cython/Utility/NumpyImportArray.c +46 -0
  311. Cython/Utility/ObjectHandling.c +3404 -0
  312. Cython/Utility/Optimize.c +2564 -0
  313. Cython/Utility/Overflow.c +378 -0
  314. Cython/Utility/Profile.c +736 -0
  315. Cython/Utility/StringTools.c +1534 -0
  316. Cython/Utility/Synchronization.c +438 -0
  317. Cython/Utility/TString.c +369 -0
  318. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  319. Cython/Utility/TestCythonScope.pyx +75 -0
  320. Cython/Utility/TestUtilityLoader.c +12 -0
  321. Cython/Utility/TypeConversion.c +1588 -0
  322. Cython/Utility/UFuncs.pyx +50 -0
  323. Cython/Utility/UFuncs_C.c +89 -0
  324. Cython/Utility/__init__.py +28 -0
  325. Cython/Utility/arrayarray.h +172 -0
  326. Cython/Utils.cp315-win_amd64.pyd +0 -0
  327. Cython/Utils.py +680 -0
  328. Cython/__init__.py +12 -0
  329. Cython/_shared.cp315-win_amd64.pyd +0 -0
  330. Cython/py.typed +0 -0
  331. cython-3.3.0.dist-info/METADATA +555 -0
  332. cython-3.3.0.dist-info/RECORD +339 -0
  333. cython-3.3.0.dist-info/WHEEL +5 -0
  334. cython-3.3.0.dist-info/entry_points.txt +4 -0
  335. cython-3.3.0.dist-info/top_level.txt +3 -0
  336. cython.py +29 -0
  337. pyximport/__init__.py +4 -0
  338. pyximport/pyxbuild.py +160 -0
  339. pyximport/pyximport.py +482 -0
@@ -0,0 +1,373 @@
1
+ #
2
+ # Cython - Command Line Parsing
3
+ #
4
+
5
+
6
+ import os
7
+ from argparse import ArgumentParser, Action, SUPPRESS, RawDescriptionHelpFormatter
8
+ from . import Options
9
+
10
+ TOOL_DESCRIPTION = """\
11
+ Cython (https://cython.org/) is a compiler for code written in the \
12
+ Cython language. Cython is based on Pyrex by Greg Ewing.
13
+ """
14
+
15
+ EPILOG = """
16
+ Environment variables:
17
+ CYTHON_CACHE_DIR: the base directory containing Cython's caches.
18
+ """
19
+
20
+
21
+ class ParseDirectivesAction(Action):
22
+ def __call__(self, parser, namespace, values, option_string=None):
23
+ old_directives = dict(getattr(namespace, self.dest,
24
+ Options.get_directive_defaults()))
25
+ directives = Options.parse_directive_list(
26
+ values, relaxed_bool=True, current_settings=old_directives)
27
+ setattr(namespace, self.dest, directives)
28
+
29
+
30
+ class ParseOptionsAction(Action):
31
+ def __call__(self, parser, namespace, values, option_string=None):
32
+ options = dict(getattr(namespace, self.dest, {}))
33
+ for opt in values.split(','):
34
+ if '=' in opt:
35
+ n, v = opt.split('=', 1)
36
+ v = v.lower() not in ('false', 'f', '0', 'no')
37
+ else:
38
+ n, v = opt, True
39
+ options[n] = v
40
+ setattr(namespace, self.dest, options)
41
+
42
+
43
+ class ParseCommaListAction(Action):
44
+ def __call__(self, parser, namespace, values, option_string=None):
45
+ options = list(getattr(namespace, self.dest, []))
46
+
47
+ seen = set(options)
48
+ for opt in values.split(','):
49
+ if opt not in seen:
50
+ seen.add(opt)
51
+ options.append(opt)
52
+
53
+ setattr(namespace, self.dest, options)
54
+
55
+
56
+ class ParseCompileTimeEnvAction(Action):
57
+ def __call__(self, parser, namespace, values, option_string=None):
58
+ old_env = dict(getattr(namespace, self.dest, {}))
59
+ new_env = Options.parse_compile_time_env(values, current_settings=old_env)
60
+ setattr(namespace, self.dest, new_env)
61
+
62
+
63
+ class ActivateAllWarningsAction(Action):
64
+ def __call__(self, parser, namespace, values, option_string=None):
65
+ directives = getattr(namespace, 'compiler_directives', {})
66
+ directives.update(Options.extra_warnings)
67
+ namespace.compiler_directives = directives
68
+
69
+
70
+ class SetLenientAction(Action):
71
+ def __call__(self, parser, namespace, values, option_string=None):
72
+ namespace.error_on_unknown_names = False
73
+ namespace.error_on_uninitialized = False
74
+
75
+
76
+ class SetGDBDebugAction(Action):
77
+ def __call__(self, parser, namespace, values, option_string=None):
78
+ namespace.gdb_debug = True
79
+ namespace.output_dir = os.curdir
80
+
81
+
82
+ class SetGDBDebugOutputAction(Action):
83
+ def __call__(self, parser, namespace, values, option_string=None):
84
+ namespace.gdb_debug = True
85
+ namespace.output_dir = values
86
+
87
+
88
+ class SetAnnotateCoverageAction(Action):
89
+ def __call__(self, parser, namespace, values, option_string=None):
90
+ namespace.annotate = True
91
+ namespace.annotate_coverage_xml = values
92
+
93
+
94
+ class CythonSharedModuleArgumentParser(ArgumentParser):
95
+ # Build the epilog lazily at request as it may take time to produce.
96
+ @property
97
+ def epilog(self):
98
+ import textwrap
99
+ from ..Build import SharedModule
100
+ return (
101
+ '\nValid feature names for the shared module:\n FEATURES: ' +
102
+ '\n'.join(textwrap.wrap(
103
+ ' , '.join(SharedModule.list_of_features()),
104
+ subsequent_indent=" "*12,
105
+ )) + '\n' +
106
+ EPILOG
107
+ )
108
+
109
+ @epilog.setter
110
+ def epilog(self, value):
111
+ pass
112
+
113
+
114
+ def add_compile_arguments(parser, include_sources=True, for_shared=False):
115
+ if not for_shared:
116
+ parser.add_argument("-V", "--version", dest='show_version', action='store_const', const=1,
117
+ help='Display version number of cython compiler')
118
+ parser.add_argument("-l", "--create-listing", dest='use_listing_file', action='store_const', const=1,
119
+ help='Write error messages to a listing file')
120
+ parser.add_argument("-I", "--include-dir", dest='include_path', action='append',
121
+ help='Search for include files in named directory '
122
+ '(multiple include directories are allowed).')
123
+ parser.add_argument("-o", "--output-file", dest='output_file', action='store', type=str,
124
+ help='Specify name of generated C file')
125
+ parser.add_argument("-t", "--timestamps", dest='timestamps', action='store_const', const=1,
126
+ help='Only compile newer source files')
127
+ parser.add_argument("-f", "--force", dest='timestamps', action='store_const', const=0,
128
+ help='Compile all source files (overrides implied -t)')
129
+ parser.add_argument("-v", "--verbose", dest='verbose', action='count',
130
+ help='Be verbose, print file names on multiple compilation')
131
+ if not for_shared:
132
+ parser.add_argument("-p", "--embed-positions", dest='embed_pos_in_docstring', action='store_const', const=1,
133
+ help='If specified, the positions in Cython files of each '
134
+ 'function definition is embedded in its docstring.')
135
+ parser.add_argument("--cleanup", dest='generate_cleanup_code', action='store', type=int,
136
+ help='Release interned objects on python exit, for memory debugging. '
137
+ 'Level indicates aggressiveness, default 0 releases nothing.')
138
+ parser.add_argument("--cache", dest='cache', action='store_true',
139
+ help='Enables Cython compilation cache.')
140
+ parser.add_argument("-w", "--working", dest='working_path', action='store', type=str,
141
+ help='Sets the working directory for Cython (the directory modules are searched from)')
142
+ parser.add_argument("--gdb", action=SetGDBDebugAction, nargs=0,
143
+ help='Output debug information for cygdb')
144
+ parser.add_argument("--gdb-outdir", action=SetGDBDebugOutputAction, type=str,
145
+ help='Specify gdb debug information output directory. Implies --gdb.')
146
+ parser.add_argument("-D", "--no-docstrings", dest='docstrings', action='store_false',
147
+ help='Strip docstrings from the compiled module.')
148
+ parser.add_argument('-a', '--annotate', action='store_const', const='default', dest='annotate',
149
+ help='Produce a colorized HTML version of the source.')
150
+ parser.add_argument('--annotate-fullc', action='store_const', const='fullc', dest='annotate',
151
+ help='Produce a colorized HTML version of the source '
152
+ 'which includes entire generated C/C++-code.')
153
+ parser.add_argument("--annotate-coverage", dest='annotate_coverage_xml', action=SetAnnotateCoverageAction, type=str,
154
+ help='Annotate and include coverage information from cov.xml.')
155
+ parser.add_argument("--line-directives", dest='emit_linenums', action='store_true',
156
+ help='Produce #line directives pointing to the .pyx source')
157
+ parser.add_argument("-+", "--cplus", dest='cplus', action='store_const', const=1,
158
+ help='Output a C++ rather than C file.')
159
+ if not for_shared:
160
+ parser.add_argument('--embed', action='store_const', const='main',
161
+ help='Generate a main() function that embeds the Python interpreter. '
162
+ 'Pass --embed=<method_name> for a name other than main().')
163
+ parser.add_argument('--embed-modules', action='store', type=comma_list,
164
+ help='')
165
+ parser.add_argument('-2', dest='language_level', action='store_const', const=2,
166
+ help='Compile based on Python-2 syntax and code semantics.')
167
+ parser.add_argument('-3', dest='language_level', action='store_const', const=3,
168
+ help='Compile based on Python-3 syntax and code semantics.')
169
+ parser.add_argument('--3str', dest='language_level', action='store_const', const='3',
170
+ help='Compile based on Python-3 syntax and code semantics (same as -3 since Cython 3.1).')
171
+ parser.add_argument("--lenient", action=SetLenientAction, nargs=0,
172
+ help='Change some compile time errors to runtime errors to '
173
+ 'improve Python compatibility')
174
+ parser.add_argument("--capi-reexport-cincludes", dest='capi_reexport_cincludes', action='store_true',
175
+ help='Add cincluded headers to any auto-generated header files.')
176
+ parser.add_argument("--fast-fail", dest='fast_fail', action='store_true',
177
+ help='Abort the compilation on the first error')
178
+ parser.add_argument("-Werror", "--warning-errors", dest='warning_errors', action='store_true',
179
+ help='Make all warnings into errors')
180
+ parser.add_argument("-Wextra", "--warning-extra", action=ActivateAllWarningsAction, nargs=0,
181
+ help='Enable extra warnings')
182
+
183
+ parser.add_argument('-X', '--directive', metavar='NAME=VALUE,...',
184
+ dest='compiler_directives', type=str,
185
+ action=ParseDirectivesAction,
186
+ help='Overrides a compiler directive')
187
+ if not for_shared:
188
+ parser.add_argument('-E', '--compile-time-env', metavar='NAME=VALUE,...',
189
+ dest='compile_time_env', type=str,
190
+ action=ParseCompileTimeEnvAction,
191
+ help='Provides compile time env like DEF would do.')
192
+ parser.add_argument("--module-name",
193
+ dest='module_name', type=str, action='store',
194
+ help='Fully qualified module name. If not given, is '
195
+ 'deduced from the import path if source file is in '
196
+ 'a package, or equals the filename otherwise.')
197
+ parser.add_argument('-M', '--depfile', action='store_true', help='produce depfiles for the sources')
198
+
199
+ # Shared module setup.
200
+ parser.add_argument("--shared", dest='shared_utility_qualified_name', action='store', type=str,
201
+ help='Imports utility code from shared module specified by fully qualified module name.')
202
+
203
+ if include_sources:
204
+ parser.add_argument('sources', nargs='*', default=[])
205
+
206
+ # TODO: add help
207
+ parser.add_argument("-z", "--pre-import", dest='pre_import', action='store', type=str, help=SUPPRESS)
208
+ parser.add_argument("--convert-range", dest='convert_range', action='store_true', help=SUPPRESS)
209
+ parser.add_argument("--no-c-in-traceback", dest='c_line_in_traceback', action='store_false', help=SUPPRESS)
210
+ parser.add_argument("--cimport-from-pyx", dest='cimport_from_pyx', action='store_true', help=SUPPRESS)
211
+ parser.add_argument("--old-style-globals", dest='old_style_globals', action='store_true', help=SUPPRESS)
212
+
213
+ # debug stuff:
214
+ from . import DebugFlags
215
+ for name in vars(DebugFlags):
216
+ if name.startswith("debug"):
217
+ option_name = name.replace('_', '-')
218
+ parser.add_argument("--" + option_name, action='store_true', help=SUPPRESS)
219
+
220
+
221
+ def create_cython_argparser():
222
+ parser = ArgumentParser(
223
+ description=TOOL_DESCRIPTION,
224
+ argument_default=SUPPRESS,
225
+ formatter_class=RawDescriptionHelpFormatter,
226
+ epilog=EPILOG,
227
+ )
228
+ add_compile_arguments(parser, include_sources=True, for_shared=False)
229
+
230
+ parser.add_argument("--generate-shared", dest='shared_c_file_path', action='store', type=str,
231
+ help='Generates shared module with specified name.')
232
+
233
+ return parser
234
+
235
+
236
+ def create_cython_subcommand_parser():
237
+ parser = CythonSharedModuleArgumentParser(
238
+ description=TOOL_DESCRIPTION,
239
+ argument_default=SUPPRESS,
240
+ formatter_class=RawDescriptionHelpFormatter,
241
+ )
242
+ parser.add_argument("-V", "--version", dest='show_version', action='store_const', const=1,
243
+ help='Display version number of cython compiler')
244
+
245
+ subparsers = parser.add_subparsers(dest='command', help='Subcommands')
246
+
247
+ # Generate-shared subcommand
248
+ generate_parser = subparsers.add_parser(
249
+ 'generate-shared',
250
+ help='Generate shared module C/C++ file',
251
+ argument_default=SUPPRESS,
252
+ formatter_class=RawDescriptionHelpFormatter,
253
+ )
254
+ generate_parser.add_argument('shared_c_file_path', metavar='OUTPUT_FILE', type=str,
255
+ help='Path to the generated shared C/C++ file.')
256
+ generate_parser.add_argument("--only", dest='shared_utility_features_enabled',
257
+ action=ParseCommaListAction, type=str, metavar='FEATURES',
258
+ help='Comma separate list of features to move to the shared module exclusively.')
259
+ generate_parser.add_argument("--exclude", dest='shared_utility_features_disabled',
260
+ action=ParseCommaListAction, type=str, metavar='FEATURES',
261
+ help='Comma separate list of features to exclude from the shared module.')
262
+ add_compile_arguments(generate_parser, include_sources=False, for_shared=True)
263
+
264
+ return parser
265
+
266
+
267
+ def comma_list(string):
268
+ return string.split(',')
269
+
270
+
271
+ def parse_command_line_raw(parser, args):
272
+ # special handling for --embed and --embed=xxxx as they aren't correctly parsed
273
+ def filter_out_embed_options(args):
274
+ with_embed, without_embed = [], []
275
+ for x in args:
276
+ if x == '--embed' or x.startswith('--embed='):
277
+ with_embed.append(x)
278
+ else:
279
+ without_embed.append(x)
280
+ return with_embed, without_embed
281
+
282
+ with_embed, args_without_embed = filter_out_embed_options(args)
283
+
284
+ arguments, unknown = parser.parse_known_args(args_without_embed)
285
+
286
+ if getattr(arguments, 'command', None) == 'generate-shared':
287
+ if with_embed:
288
+ parser.error("unknown option " + with_embed[0].split('=', 1)[0])
289
+ shared_c_path = getattr(arguments, 'shared_c_file_path', None)
290
+ if shared_c_path and shared_c_path.startswith('-'):
291
+ parser.error("unknown option " + shared_c_path)
292
+
293
+ try:
294
+ sources = arguments.sources
295
+ del arguments.sources
296
+ except AttributeError:
297
+ sources = []
298
+
299
+ # unknown can be either debug, embed or input files or really unknown
300
+ for option in unknown:
301
+ if option.startswith('-'):
302
+ parser.error("unknown option " + option)
303
+ else:
304
+ sources.append(option)
305
+
306
+ # embed-stuff must be handled extra:
307
+ for x in with_embed:
308
+ if x == '--embed':
309
+ name = 'main' # default value
310
+ else:
311
+ name = x[len('--embed='):]
312
+ setattr(arguments, 'embed', name)
313
+
314
+ return arguments, sources
315
+
316
+
317
+ def parse_command_line(args):
318
+ is_subcommand = args and args[0] == "generate-shared"
319
+ if is_subcommand:
320
+ parser = create_cython_subcommand_parser()
321
+ else:
322
+ parser = create_cython_argparser()
323
+
324
+ arguments, sources = parse_command_line_raw(parser, args)
325
+
326
+ command = getattr(arguments, 'command', None)
327
+ if command:
328
+ del arguments.command
329
+
330
+ work_dir = getattr(arguments, 'working_path', '')
331
+ for source in sources:
332
+ if work_dir and not os.path.isabs(source):
333
+ source = os.path.join(work_dir, source)
334
+ if not os.path.exists(source):
335
+ import errno
336
+ raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), source)
337
+
338
+ options = Options.CompilationOptions(Options.default_options)
339
+ for name, value in vars(arguments).items():
340
+ if name.startswith('debug'):
341
+ from . import DebugFlags
342
+ if name in dir(DebugFlags):
343
+ setattr(DebugFlags, name, value)
344
+ else:
345
+ parser.error("Unknown debug flag: %s\n" % name)
346
+ elif hasattr(Options, name):
347
+ setattr(Options, name, value)
348
+ else:
349
+ setattr(options, name, value)
350
+
351
+ if options.use_listing_file and len(sources) > 1:
352
+ parser.error("cython: Only one source file allowed when using -o\n")
353
+
354
+ if options.shared_c_file_path:
355
+ if len(sources) > 0:
356
+ parser.error("cython: Source file not allowed when using generate-shared\n")
357
+ elif len(sources) == 0 and not options.show_version:
358
+ parser.error("cython: Need at least one source file\n")
359
+
360
+ if options.shared_utility_features_disabled or options.shared_utility_features_enabled:
361
+ if not options.shared_c_file_path:
362
+ parser.error("cython: --only and --exclude require generate-shared")
363
+
364
+ if Options.embed and len(sources) > 1:
365
+ parser.error("cython: Only one source file allowed when using --embed\n")
366
+
367
+ if options.module_name:
368
+ if options.timestamps:
369
+ parser.error("cython: Cannot use --module-name with --timestamps\n")
370
+ if len(sources) > 1:
371
+ parser.error("cython: Only one source file allowed when using --module-name\n")
372
+
373
+ return options, sources
Binary file
@@ -0,0 +1,154 @@
1
+ cimport cython
2
+ from ..StringIOTree cimport StringIOTree
3
+
4
+
5
+ cdef class AbstractUtilityCode:
6
+ pass
7
+
8
+
9
+ cdef class UtilityCodeBase(AbstractUtilityCode):
10
+ cpdef format_code(self, code_string, replace_empty_lines=*)
11
+
12
+
13
+ cdef class UtilityCode(UtilityCodeBase):
14
+ cdef public object name
15
+ cdef public object proto
16
+ cdef public object export
17
+ cdef public object impl
18
+ cdef public object init
19
+ cdef public object cleanup
20
+ cdef object proto_block
21
+ cdef object init_block
22
+ cdef readonly object module_state_decls
23
+ cdef readonly object module_state_traverse
24
+ cdef readonly object module_state_clear
25
+ cdef public object requires
26
+ cdef dict _cache
27
+ cdef list specialize_list
28
+ cdef public object file
29
+ cdef readonly tuple _parts_tuple
30
+ cdef list shared_utility_functions
31
+
32
+ cpdef none_or_sub(self, s, context)
33
+ # TODO - Signature not compatible with previous declaration
34
+ #@cython.final
35
+ #cdef bint _put_code_section(self, writer, code_type: str) except -1
36
+
37
+
38
+ @cython.final
39
+ cdef class FunctionState:
40
+ cdef set names_taken
41
+ cdef public object owner
42
+ cdef public object scope
43
+
44
+ cdef public object error_label
45
+ cdef public size_t label_counter
46
+ cdef public set labels_used
47
+ cdef public object return_label
48
+ cdef public object continue_label
49
+ cdef public object break_label
50
+ cdef readonly list yield_labels
51
+
52
+ cdef public object return_from_error_cleanup_label # not used in __init__ ?
53
+
54
+ cdef public object exc_vars
55
+ cdef public object current_except
56
+ cdef public bint can_trace
57
+ cdef public bint gil_owned
58
+
59
+ cdef CCodeWriter temp_decl_writer
60
+ cdef list[tuple] temps_allocated
61
+ cdef dict[tuple, tuple] temps_free
62
+ cdef dict[object, tuple] temps_used_type
63
+ cdef set zombie_temps
64
+ cdef size_t temp_counter
65
+ cdef list[set[tuple]] collect_temps_stack
66
+
67
+ cdef readonly object closure_temps
68
+ cdef bint should_declare_error_indicator
69
+ cdef public bint uses_error_indicator
70
+ cdef public bint error_without_exception
71
+ cdef public bint has_except_star
72
+
73
+ cdef public bint needs_refnanny
74
+
75
+ cpdef new_label(self, name=*)
76
+ cpdef tuple get_loop_labels(self)
77
+ cpdef set_loop_labels(self, labels: tuple)
78
+ cpdef tuple get_all_labels(self)
79
+ cpdef set_all_labels(self, labels: tuple)
80
+ cpdef start_collecting_temps(self)
81
+ cpdef set stop_collecting_temps(self)
82
+
83
+ cpdef list[tuple] temps_in_use(self)
84
+
85
+
86
+ @cython.final
87
+ cdef class PyObjectConst:
88
+ cdef readonly object cname
89
+ cdef readonly object type
90
+
91
+
92
+ @cython.final
93
+ cdef class StringConst:
94
+ cdef readonly object cname
95
+ cdef readonly object text
96
+ cdef readonly object escaped_value
97
+ cdef readonly dict[tuple, PyStringConst] py_strings
98
+ cdef public bint c_used
99
+
100
+ cpdef get_py_string_const(self, encoding, identifier=*)
101
+
102
+
103
+ @cython.final
104
+ cdef class PyStringConst:
105
+ cdef readonly object cname
106
+ cdef readonly object encoding
107
+ cdef readonly bint is_unicode
108
+ cdef readonly bint intern
109
+
110
+
111
+ #class GlobalState(object):
112
+
113
+ #def funccontext_property(name):
114
+
115
+ cdef class CCodeWriter(object):
116
+ cdef readonly StringIOTree buffer
117
+ cdef readonly list pyclass_stack
118
+ cdef readonly object globalstate
119
+ cdef readonly FunctionState funcstate
120
+ cdef object code_config
121
+ cdef tuple last_pos
122
+ cdef tuple last_marked_pos
123
+ cdef Py_ssize_t level
124
+ cdef public Py_ssize_t call_level # debug-only, see Nodes.py
125
+ cdef bint bol
126
+
127
+ @cython.final
128
+ cdef void handle_refnanny(self, tp, bint nanny=*)
129
+ cpdef write(self, s)
130
+ cdef _write_lines(self, s)
131
+ cpdef _write_to_buffer(self, s)
132
+ cdef put_multilines(self, code)
133
+ cpdef put(self, code)
134
+ cpdef put_safe(self, code)
135
+ cpdef putln(self, code=*, bint safe=*)
136
+ cdef emit_marker(self)
137
+ cdef _build_marker(self, tuple pos)
138
+ cdef increase_indent(self)
139
+ cdef decrease_indent(self)
140
+ cdef indent(self)
141
+
142
+
143
+ cdef class PyrexCodeWriter:
144
+ cdef readonly object f
145
+ cdef readonly Py_ssize_t level
146
+
147
+
148
+ cdef class PyxCodeWriter:
149
+ cdef public StringIOTree buffer
150
+ cdef public object context
151
+ cdef object encoding
152
+ cdef Py_ssize_t level
153
+ cdef Py_ssize_t original_level
154
+ cdef dict _insertion_points