Cython 3.1.0__py3-none-any.whl

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