Nuitka-winsvc 2.7.7__cp313-cp313-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.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (995) hide show
  1. nuitka/Builtins.py +259 -0
  2. nuitka/BytecodeCaching.py +184 -0
  3. nuitka/Bytecodes.py +109 -0
  4. nuitka/CacheCleanup.py +54 -0
  5. nuitka/Constants.py +425 -0
  6. nuitka/Errors.py +93 -0
  7. nuitka/HardImportRegistry.py +408 -0
  8. nuitka/MainControl.py +1201 -0
  9. nuitka/ModuleRegistry.py +364 -0
  10. nuitka/OptionParsing.py +2473 -0
  11. nuitka/Options.py +2948 -0
  12. nuitka/OutputDirectories.py +201 -0
  13. nuitka/PostProcessing.py +551 -0
  14. nuitka/Progress.py +252 -0
  15. nuitka/PythonFlavors.py +426 -0
  16. nuitka/PythonOperators.py +146 -0
  17. nuitka/PythonVersions.py +513 -0
  18. nuitka/Serialization.py +291 -0
  19. nuitka/SourceCodeReferences.py +176 -0
  20. nuitka/Tracing.py +579 -0
  21. nuitka/TreeXML.py +141 -0
  22. nuitka/Variables.py +515 -0
  23. nuitka/Version.py +88 -0
  24. nuitka/__init__.py +19 -0
  25. nuitka/__main__.py +224 -0
  26. nuitka/__past__.py +217 -0
  27. nuitka/build/Backend.scons +1111 -0
  28. nuitka/build/CCompilerVersion.scons +281 -0
  29. nuitka/build/DataComposerInterface.py +116 -0
  30. nuitka/build/Offsets.scons +626 -0
  31. nuitka/build/Onefile.scons +564 -0
  32. nuitka/build/SconsCaching.py +451 -0
  33. nuitka/build/SconsCompilerSettings.py +1133 -0
  34. nuitka/build/SconsHacks.py +215 -0
  35. nuitka/build/SconsInterface.py +664 -0
  36. nuitka/build/SconsProgress.py +100 -0
  37. nuitka/build/SconsSpawn.py +436 -0
  38. nuitka/build/SconsUtils.py +939 -0
  39. nuitka/build/__init__.py +19 -0
  40. nuitka/build/include/nuitka/allocator.h +450 -0
  41. nuitka/build/include/nuitka/builtins.h +97 -0
  42. nuitka/build/include/nuitka/calling.h +123 -0
  43. nuitka/build/include/nuitka/checkers.h +39 -0
  44. nuitka/build/include/nuitka/checksum_tools.h +28 -0
  45. nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
  46. nuitka/build/include/nuitka/compiled_cell.h +64 -0
  47. nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
  48. nuitka/build/include/nuitka/compiled_frame.h +502 -0
  49. nuitka/build/include/nuitka/compiled_function.h +170 -0
  50. nuitka/build/include/nuitka/compiled_generator.h +287 -0
  51. nuitka/build/include/nuitka/compiled_method.h +54 -0
  52. nuitka/build/include/nuitka/constants.h +251 -0
  53. nuitka/build/include/nuitka/constants_blob.h +34 -0
  54. nuitka/build/include/nuitka/debug_settings.h +60 -0
  55. nuitka/build/include/nuitka/environment_variables.h +30 -0
  56. nuitka/build/include/nuitka/environment_variables_system.h +51 -0
  57. nuitka/build/include/nuitka/exception_groups.h +167 -0
  58. nuitka/build/include/nuitka/exceptions.h +1458 -0
  59. nuitka/build/include/nuitka/filesystem_paths.h +117 -0
  60. nuitka/build/include/nuitka/freelists.h +92 -0
  61. nuitka/build/include/nuitka/hedley.h +1774 -0
  62. nuitka/build/include/nuitka/helper/attributes.h +90 -0
  63. nuitka/build/include/nuitka/helper/boolean.h +86 -0
  64. nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
  65. nuitka/build/include/nuitka/helper/bytes.h +28 -0
  66. nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
  67. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  68. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  69. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  70. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
  74. nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
  75. nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
  76. nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
  77. nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
  78. nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
  79. nuitka/build/include/nuitka/helper/complex.h +46 -0
  80. nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
  81. nuitka/build/include/nuitka/helper/floats.h +32 -0
  82. nuitka/build/include/nuitka/helper/import_hard.h +121 -0
  83. nuitka/build/include/nuitka/helper/indexes.h +47 -0
  84. nuitka/build/include/nuitka/helper/ints.h +165 -0
  85. nuitka/build/include/nuitka/helper/iterators.h +376 -0
  86. nuitka/build/include/nuitka/helper/lists.h +94 -0
  87. nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
  88. nuitka/build/include/nuitka/helper/mappings.h +39 -0
  89. nuitka/build/include/nuitka/helper/operations.h +114 -0
  90. nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
  91. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
  92. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
  93. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
  94. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
  95. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  96. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
  97. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
  98. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
  100. nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
  101. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
  102. nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
  103. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
  104. nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
  105. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
  106. nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
  107. nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
  108. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
  109. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
  110. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
  111. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
  112. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
  113. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
  114. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
  115. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
  116. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
  117. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
  118. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
  119. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
  120. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
  121. nuitka/build/include/nuitka/helper/raising.h +114 -0
  122. nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
  123. nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
  124. nuitka/build/include/nuitka/helper/sequences.h +33 -0
  125. nuitka/build/include/nuitka/helper/sets.h +25 -0
  126. nuitka/build/include/nuitka/helper/slices.h +314 -0
  127. nuitka/build/include/nuitka/helper/strings.h +30 -0
  128. nuitka/build/include/nuitka/helper/subscripts.h +390 -0
  129. nuitka/build/include/nuitka/helper/tuples.h +187 -0
  130. nuitka/build/include/nuitka/helpers.h +417 -0
  131. nuitka/build/include/nuitka/importing.h +149 -0
  132. nuitka/build/include/nuitka/incbin.h +402 -0
  133. nuitka/build/include/nuitka/jit_sources.h +25 -0
  134. nuitka/build/include/nuitka/prelude.h +626 -0
  135. nuitka/build/include/nuitka/printing.h +84 -0
  136. nuitka/build/include/nuitka/python_pgo.h +57 -0
  137. nuitka/build/include/nuitka/safe_string_ops.h +57 -0
  138. nuitka/build/include/nuitka/threading.h +142 -0
  139. nuitka/build/include/nuitka/tracing.h +82 -0
  140. nuitka/build/include/nuitka/type_aliases.h +30 -0
  141. nuitka/build/include/nuitka/unfreezing.h +91 -0
  142. nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
  143. nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
  144. nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
  145. nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
  146. nuitka/build/inline_copy/bin/scons.py +58 -0
  147. nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
  148. nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
  149. nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
  150. nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
  151. nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
  152. nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
  153. nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
  154. nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
  155. nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
  156. nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
  157. nuitka/build/inline_copy/glob2/LICENSE +27 -0
  158. nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
  159. nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
  160. nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
  161. nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
  162. nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
  163. nuitka/build/inline_copy/jinja2/README.rst +2 -0
  164. nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
  165. nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
  166. nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
  167. nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
  168. nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
  169. nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
  170. nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
  171. nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
  172. nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
  173. nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
  174. nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
  175. nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
  176. nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
  177. nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
  178. nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
  179. nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
  180. nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
  181. nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
  182. nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
  183. nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
  184. nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
  185. nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
  186. nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
  187. nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
  188. nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
  189. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
  190. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
  191. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
  192. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
  193. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
  194. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
  195. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
  196. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
  197. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
  198. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
  199. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
  200. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
  201. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
  202. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
  203. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
  204. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
  205. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
  206. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
  207. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
  208. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
  209. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
  210. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
  211. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
  212. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
  213. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
  214. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
  215. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
  216. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
  217. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
  218. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
  219. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
  220. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
  221. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
  222. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
  223. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
  224. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
  225. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
  226. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
  227. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
  228. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
  229. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
  230. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
  231. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
  232. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
  233. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
  234. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
  235. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
  236. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
  237. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
  238. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
  239. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
  240. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
  241. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
  242. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
  243. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
  244. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
  245. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
  246. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
  247. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
  248. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
  249. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
  250. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
  251. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
  252. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
  253. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
  254. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
  255. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
  256. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
  257. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
  258. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
  259. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
  260. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
  261. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
  262. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
  263. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
  264. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
  265. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
  266. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
  267. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
  268. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
  269. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
  270. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
  271. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
  272. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
  273. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
  274. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
  275. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
  276. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
  277. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
  278. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
  279. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
  280. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
  281. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
  282. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
  283. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
  284. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
  285. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
  286. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
  287. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
  288. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
  289. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
  290. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
  291. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
  292. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
  293. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
  294. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
  295. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
  296. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
  297. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
  298. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
  299. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
  300. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
  301. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
  302. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
  303. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
  304. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
  305. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
  306. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
  307. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
  308. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
  309. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
  310. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
  311. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
  312. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
  313. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
  314. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
  315. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
  316. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
  317. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
  318. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
  319. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
  320. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
  321. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
  322. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
  323. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
  324. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
  325. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
  326. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
  327. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
  328. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
  329. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
  330. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
  331. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
  332. nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
  333. nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
  334. nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
  335. nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
  336. nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
  337. nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
  338. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  339. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  340. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  341. nuitka/build/inline_copy/pefile/pefile.py +8034 -0
  342. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
  343. nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
  344. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  345. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  346. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  347. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  348. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  349. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  350. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  351. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  352. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  353. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  354. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  355. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  356. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  357. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  358. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  359. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  360. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  361. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  362. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  363. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  364. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  365. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  366. nuitka/build/inline_copy/stubgen/six.py +998 -0
  367. nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
  368. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
  369. nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
  370. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
  371. nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
  372. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
  373. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
  374. nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
  375. nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
  376. nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
  377. nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
  378. nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
  379. nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
  380. nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
  381. nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
  382. nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
  383. nuitka/build/inline_copy/yaml/LICENSE +20 -0
  384. nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
  385. nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
  386. nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
  387. nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
  388. nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
  389. nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
  390. nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
  391. nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
  392. nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
  393. nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
  394. nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
  395. nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
  396. nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
  397. nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
  398. nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
  399. nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
  400. nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
  401. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  402. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  403. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  404. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  405. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  406. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  407. nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
  408. nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
  409. nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
  410. nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
  411. nuitka/build/inline_copy/zstd/common/debug.h +107 -0
  412. nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
  413. nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
  414. nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
  415. nuitka/build/inline_copy/zstd/common/fse.h +715 -0
  416. nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
  417. nuitka/build/inline_copy/zstd/common/huf.h +361 -0
  418. nuitka/build/inline_copy/zstd/common/mem.h +426 -0
  419. nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
  420. nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
  421. nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
  422. nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
  423. nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
  424. nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
  425. nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
  426. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
  427. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
  428. nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
  429. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
  430. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
  431. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
  432. nuitka/build/inline_copy/zstd/zstd.h +2391 -0
  433. nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
  434. nuitka/build/static_src/CompiledCellType.c +300 -0
  435. nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
  436. nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
  437. nuitka/build/static_src/CompiledFrameType.c +1337 -0
  438. nuitka/build/static_src/CompiledFunctionType.c +3320 -0
  439. nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
  440. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
  441. nuitka/build/static_src/CompiledMethodType.c +614 -0
  442. nuitka/build/static_src/GenerateHeadersMain.c +30 -0
  443. nuitka/build/static_src/HelpersAllocator.c +939 -0
  444. nuitka/build/static_src/HelpersAttributes.c +1241 -0
  445. nuitka/build/static_src/HelpersBuiltin.c +901 -0
  446. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
  447. nuitka/build/static_src/HelpersBytes.c +107 -0
  448. nuitka/build/static_src/HelpersCalling.c +397 -0
  449. nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
  450. nuitka/build/static_src/HelpersChecksumTools.c +59 -0
  451. nuitka/build/static_src/HelpersClasses.c +91 -0
  452. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  453. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  454. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  455. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  456. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  457. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  458. nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
  459. nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
  460. nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
  461. nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
  462. nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
  463. nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
  464. nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
  465. nuitka/build/static_src/HelpersConsole.c +124 -0
  466. nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
  467. nuitka/build/static_src/HelpersDeepcopy.c +636 -0
  468. nuitka/build/static_src/HelpersDictionaries.c +1739 -0
  469. nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
  470. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  471. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  472. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
  473. nuitka/build/static_src/HelpersExceptions.c +298 -0
  474. nuitka/build/static_src/HelpersFiles.c +353 -0
  475. nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
  476. nuitka/build/static_src/HelpersFloats.c +92 -0
  477. nuitka/build/static_src/HelpersHeapStorage.c +68 -0
  478. nuitka/build/static_src/HelpersImport.c +506 -0
  479. nuitka/build/static_src/HelpersImportHard.c +526 -0
  480. nuitka/build/static_src/HelpersJitSources.c +48 -0
  481. nuitka/build/static_src/HelpersLists.c +899 -0
  482. nuitka/build/static_src/HelpersListsGenerated.c +564 -0
  483. nuitka/build/static_src/HelpersMappings.c +46 -0
  484. nuitka/build/static_src/HelpersMatching.c +192 -0
  485. nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
  486. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
  487. nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
  488. nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
  489. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
  490. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
  491. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
  492. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  493. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
  494. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
  495. nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
  496. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
  497. nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
  498. nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
  499. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
  500. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
  501. nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
  502. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
  503. nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
  504. nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
  505. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
  506. nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
  507. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
  508. nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
  509. nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
  510. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
  511. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
  512. nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
  513. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
  514. nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
  515. nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
  516. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
  517. nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
  518. nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
  519. nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
  520. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
  521. nuitka/build/static_src/HelpersProfiling.c +104 -0
  522. nuitka/build/static_src/HelpersPythonPgo.c +113 -0
  523. nuitka/build/static_src/HelpersRaising.c +447 -0
  524. nuitka/build/static_src/HelpersSafeStrings.c +185 -0
  525. nuitka/build/static_src/HelpersSequences.c +134 -0
  526. nuitka/build/static_src/HelpersSlices.c +73 -0
  527. nuitka/build/static_src/HelpersStrings.c +998 -0
  528. nuitka/build/static_src/HelpersTuples.c +148 -0
  529. nuitka/build/static_src/HelpersTypes.c +329 -0
  530. nuitka/build/static_src/InspectPatcher.c +439 -0
  531. nuitka/build/static_src/MainProgram.c +2060 -0
  532. nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
  533. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
  534. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
  535. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
  536. nuitka/build/static_src/OnefileBootstrap.c +1580 -0
  537. nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
  538. nuitka/code_generation/AsyncgenCodes.py +186 -0
  539. nuitka/code_generation/AttributeCodes.py +357 -0
  540. nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
  541. nuitka/code_generation/BranchCodes.py +67 -0
  542. nuitka/code_generation/BuiltinCodes.py +529 -0
  543. nuitka/code_generation/CallCodes.py +1186 -0
  544. nuitka/code_generation/ClassCodes.py +156 -0
  545. nuitka/code_generation/CodeGeneration.py +1078 -0
  546. nuitka/code_generation/CodeHelperSelection.py +81 -0
  547. nuitka/code_generation/CodeHelpers.py +455 -0
  548. nuitka/code_generation/CodeObjectCodes.py +165 -0
  549. nuitka/code_generation/ComparisonCodes.py +569 -0
  550. nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
  551. nuitka/code_generation/ConditionalCodes.py +236 -0
  552. nuitka/code_generation/ConstantCodes.py +243 -0
  553. nuitka/code_generation/Contexts.py +1248 -0
  554. nuitka/code_generation/CoroutineCodes.py +253 -0
  555. nuitka/code_generation/CtypesCodes.py +46 -0
  556. nuitka/code_generation/DictCodes.py +918 -0
  557. nuitka/code_generation/Emission.py +75 -0
  558. nuitka/code_generation/ErrorCodes.py +281 -0
  559. nuitka/code_generation/EvalCodes.py +444 -0
  560. nuitka/code_generation/ExceptionCodes.py +337 -0
  561. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
  562. nuitka/code_generation/ExpressionCodes.py +61 -0
  563. nuitka/code_generation/FrameCodes.py +518 -0
  564. nuitka/code_generation/FunctionCodes.py +858 -0
  565. nuitka/code_generation/GeneratorCodes.py +218 -0
  566. nuitka/code_generation/GlobalConstants.py +249 -0
  567. nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
  568. nuitka/code_generation/IdCodes.py +53 -0
  569. nuitka/code_generation/ImportCodes.py +468 -0
  570. nuitka/code_generation/Indentation.py +45 -0
  571. nuitka/code_generation/IndexCodes.py +50 -0
  572. nuitka/code_generation/InjectCCodes.py +28 -0
  573. nuitka/code_generation/IntegerCodes.py +110 -0
  574. nuitka/code_generation/IteratorCodes.py +378 -0
  575. nuitka/code_generation/JitCodes.py +44 -0
  576. nuitka/code_generation/LabelCodes.py +68 -0
  577. nuitka/code_generation/LineNumberCodes.py +91 -0
  578. nuitka/code_generation/ListCodes.py +502 -0
  579. nuitka/code_generation/LoaderCodes.py +193 -0
  580. nuitka/code_generation/LocalsDictCodes.py +359 -0
  581. nuitka/code_generation/LoopCodes.py +88 -0
  582. nuitka/code_generation/MatchCodes.py +67 -0
  583. nuitka/code_generation/ModuleCodes.py +247 -0
  584. nuitka/code_generation/Namify.py +260 -0
  585. nuitka/code_generation/NetworkxCodes.py +51 -0
  586. nuitka/code_generation/OperationCodes.py +398 -0
  587. nuitka/code_generation/PackageResourceCodes.py +986 -0
  588. nuitka/code_generation/PrintCodes.py +93 -0
  589. nuitka/code_generation/PythonAPICodes.py +215 -0
  590. nuitka/code_generation/RaisingCodes.py +481 -0
  591. nuitka/code_generation/Reports.py +115 -0
  592. nuitka/code_generation/ReturnCodes.py +143 -0
  593. nuitka/code_generation/SetCodes.py +196 -0
  594. nuitka/code_generation/SliceCodes.py +465 -0
  595. nuitka/code_generation/StringCodes.py +303 -0
  596. nuitka/code_generation/SubscriptCodes.py +263 -0
  597. nuitka/code_generation/TensorflowCodes.py +54 -0
  598. nuitka/code_generation/TryCodes.py +326 -0
  599. nuitka/code_generation/TupleCodes.py +115 -0
  600. nuitka/code_generation/TypeAliasCodes.py +120 -0
  601. nuitka/code_generation/VariableCodes.py +519 -0
  602. nuitka/code_generation/VariableDeclarations.py +279 -0
  603. nuitka/code_generation/YieldCodes.py +253 -0
  604. nuitka/code_generation/__init__.py +19 -0
  605. nuitka/code_generation/c_types/CTypeBases.py +177 -0
  606. nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
  607. nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
  608. nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
  609. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
  610. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
  611. nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
  612. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
  613. nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
  614. nuitka/code_generation/c_types/CTypeVoids.py +92 -0
  615. nuitka/code_generation/c_types/__init__.py +19 -0
  616. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
  617. nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
  618. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
  619. nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
  620. nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
  621. nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
  622. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
  623. nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
  624. nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
  625. nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
  626. nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
  627. nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
  628. nuitka/code_generation/templates/__init__.py +19 -0
  629. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
  630. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
  631. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
  632. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
  633. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
  634. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
  635. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
  636. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
  637. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
  638. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
  639. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
  640. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
  641. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  642. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
  643. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
  644. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  645. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
  646. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
  647. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
  648. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
  649. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
  650. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
  651. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
  652. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
  653. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
  654. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
  655. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
  656. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
  657. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
  658. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
  659. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
  660. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
  661. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
  662. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
  663. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
  664. nuitka/containers/Namedtuples.py +51 -0
  665. nuitka/containers/OrderedDicts.py +191 -0
  666. nuitka/containers/OrderedSets.py +123 -0
  667. nuitka/containers/OrderedSetsFallback.py +139 -0
  668. nuitka/containers/__init__.py +19 -0
  669. nuitka/distutils/Build.py +76 -0
  670. nuitka/distutils/DistutilCommands.py +438 -0
  671. nuitka/distutils/__init__.py +19 -0
  672. nuitka/finalizations/Finalization.py +35 -0
  673. nuitka/finalizations/FinalizeMarkups.py +136 -0
  674. nuitka/finalizations/__init__.py +19 -0
  675. nuitka/freezer/DependsExe.py +257 -0
  676. nuitka/freezer/DllDependenciesCommon.py +97 -0
  677. nuitka/freezer/DllDependenciesMacOS.py +444 -0
  678. nuitka/freezer/DllDependenciesPosix.py +242 -0
  679. nuitka/freezer/DllDependenciesWin32.py +315 -0
  680. nuitka/freezer/ImportDetection.py +359 -0
  681. nuitka/freezer/IncludedDataFiles.py +689 -0
  682. nuitka/freezer/IncludedEntryPoints.py +376 -0
  683. nuitka/freezer/Onefile.py +296 -0
  684. nuitka/freezer/Standalone.py +520 -0
  685. nuitka/freezer/__init__.py +19 -0
  686. nuitka/importing/IgnoreListing.py +449 -0
  687. nuitka/importing/ImportCache.py +95 -0
  688. nuitka/importing/ImportResolving.py +186 -0
  689. nuitka/importing/Importing.py +1200 -0
  690. nuitka/importing/PreloadedPackages.py +164 -0
  691. nuitka/importing/Recursion.py +611 -0
  692. nuitka/importing/StandardLibrary.py +429 -0
  693. nuitka/importing/__init__.py +19 -0
  694. nuitka/nodes/AsyncgenNodes.py +107 -0
  695. nuitka/nodes/AttributeLookupNodes.py +124 -0
  696. nuitka/nodes/AttributeNodes.py +386 -0
  697. nuitka/nodes/AttributeNodesGenerated.py +10734 -0
  698. nuitka/nodes/BuiltinAllNodes.py +115 -0
  699. nuitka/nodes/BuiltinAnyNodes.py +124 -0
  700. nuitka/nodes/BuiltinComplexNodes.py +83 -0
  701. nuitka/nodes/BuiltinDecodingNodes.py +52 -0
  702. nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
  703. nuitka/nodes/BuiltinDictNodes.py +140 -0
  704. nuitka/nodes/BuiltinFormatNodes.py +159 -0
  705. nuitka/nodes/BuiltinHashNodes.py +63 -0
  706. nuitka/nodes/BuiltinInputNodes.py +39 -0
  707. nuitka/nodes/BuiltinIntegerNodes.py +170 -0
  708. nuitka/nodes/BuiltinIteratorNodes.py +391 -0
  709. nuitka/nodes/BuiltinLenNodes.py +61 -0
  710. nuitka/nodes/BuiltinNextNodes.py +111 -0
  711. nuitka/nodes/BuiltinOpenNodes.py +148 -0
  712. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
  713. nuitka/nodes/BuiltinRangeNodes.py +690 -0
  714. nuitka/nodes/BuiltinRefNodes.py +314 -0
  715. nuitka/nodes/BuiltinSumNodes.py +104 -0
  716. nuitka/nodes/BuiltinTypeNodes.py +454 -0
  717. nuitka/nodes/BuiltinVarsNodes.py +44 -0
  718. nuitka/nodes/BytesNodes.py +829 -0
  719. nuitka/nodes/CallNodes.py +217 -0
  720. nuitka/nodes/Checkers.py +55 -0
  721. nuitka/nodes/ChildrenHavingMixins.py +21576 -0
  722. nuitka/nodes/ClassNodes.py +286 -0
  723. nuitka/nodes/CodeObjectSpecs.py +230 -0
  724. nuitka/nodes/ComparisonNodes.py +687 -0
  725. nuitka/nodes/ConditionalNodes.py +884 -0
  726. nuitka/nodes/ConstantRefNodes.py +1717 -0
  727. nuitka/nodes/ContainerMakingNodes.py +408 -0
  728. nuitka/nodes/ContainerOperationNodes.py +87 -0
  729. nuitka/nodes/CoroutineNodes.py +144 -0
  730. nuitka/nodes/CtypesNodes.py +51 -0
  731. nuitka/nodes/DictionaryNodes.py +1513 -0
  732. nuitka/nodes/ExceptionNodes.py +393 -0
  733. nuitka/nodes/ExecEvalNodes.py +229 -0
  734. nuitka/nodes/ExpressionBases.py +1301 -0
  735. nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
  736. nuitka/nodes/ExpressionShapeMixins.py +886 -0
  737. nuitka/nodes/FrameNodes.py +413 -0
  738. nuitka/nodes/FunctionAttributeNodes.py +102 -0
  739. nuitka/nodes/FunctionNodes.py +1303 -0
  740. nuitka/nodes/FutureSpecs.py +224 -0
  741. nuitka/nodes/GeneratorNodes.py +201 -0
  742. nuitka/nodes/GlobalsLocalsNodes.py +209 -0
  743. nuitka/nodes/HardImportNodesGenerated.py +3599 -0
  744. nuitka/nodes/ImportHardNodes.py +185 -0
  745. nuitka/nodes/ImportNodes.py +1366 -0
  746. nuitka/nodes/IndicatorMixins.py +79 -0
  747. nuitka/nodes/InjectCNodes.py +51 -0
  748. nuitka/nodes/IterationHandles.py +407 -0
  749. nuitka/nodes/KeyValuePairNodes.py +378 -0
  750. nuitka/nodes/ListOperationNodes.py +525 -0
  751. nuitka/nodes/LocalsDictNodes.py +717 -0
  752. nuitka/nodes/LocalsScopes.py +505 -0
  753. nuitka/nodes/LoopNodes.py +445 -0
  754. nuitka/nodes/MatchNodes.py +60 -0
  755. nuitka/nodes/ModuleAttributeNodes.py +180 -0
  756. nuitka/nodes/ModuleNodes.py +1137 -0
  757. nuitka/nodes/NetworkxNodes.py +45 -0
  758. nuitka/nodes/NodeBases.py +890 -0
  759. nuitka/nodes/NodeMakingHelpers.py +481 -0
  760. nuitka/nodes/NodeMetaClasses.py +172 -0
  761. nuitka/nodes/OperatorNodes.py +944 -0
  762. nuitka/nodes/OperatorNodesUnary.py +403 -0
  763. nuitka/nodes/OsSysNodes.py +215 -0
  764. nuitka/nodes/OutlineNodes.py +372 -0
  765. nuitka/nodes/PackageMetadataNodes.py +982 -0
  766. nuitka/nodes/PackageResourceNodes.py +424 -0
  767. nuitka/nodes/PrintNodes.py +105 -0
  768. nuitka/nodes/ReturnNodes.py +255 -0
  769. nuitka/nodes/SideEffectNodes.py +139 -0
  770. nuitka/nodes/SliceNodes.py +386 -0
  771. nuitka/nodes/StatementBasesGenerated.py +3419 -0
  772. nuitka/nodes/StatementNodes.py +316 -0
  773. nuitka/nodes/StrNodes.py +919 -0
  774. nuitka/nodes/StringConcatenationNodes.py +103 -0
  775. nuitka/nodes/SubscriptNodes.py +245 -0
  776. nuitka/nodes/TensorflowNodes.py +38 -0
  777. nuitka/nodes/TryNodes.py +519 -0
  778. nuitka/nodes/TypeMatchNodes.py +65 -0
  779. nuitka/nodes/TypeNodes.py +390 -0
  780. nuitka/nodes/VariableAssignNodes.py +1177 -0
  781. nuitka/nodes/VariableDelNodes.py +320 -0
  782. nuitka/nodes/VariableNameNodes.py +153 -0
  783. nuitka/nodes/VariableRefNodes.py +895 -0
  784. nuitka/nodes/VariableReleaseNodes.py +153 -0
  785. nuitka/nodes/YieldNodes.py +121 -0
  786. nuitka/nodes/__init__.py +19 -0
  787. nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
  788. nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
  789. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  790. nuitka/nodes/shapes/ShapeMixins.py +255 -0
  791. nuitka/nodes/shapes/StandardShapes.py +1384 -0
  792. nuitka/nodes/shapes/__init__.py +19 -0
  793. nuitka/optimizations/BytecodeDemotion.py +105 -0
  794. nuitka/optimizations/FunctionInlining.py +110 -0
  795. nuitka/optimizations/Graphs.py +70 -0
  796. nuitka/optimizations/Optimization.py +363 -0
  797. nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
  798. nuitka/optimizations/Tags.py +76 -0
  799. nuitka/optimizations/TraceCollections.py +1257 -0
  800. nuitka/optimizations/ValueTraces.py +980 -0
  801. nuitka/optimizations/__init__.py +19 -0
  802. nuitka/pgo/PGO.py +160 -0
  803. nuitka/pgo/__init__.py +19 -0
  804. nuitka/plugins/PluginBase.py +1924 -0
  805. nuitka/plugins/Plugins.py +2007 -0
  806. nuitka/plugins/YamlPluginBase.py +121 -0
  807. nuitka/plugins/__init__.py +19 -0
  808. nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
  809. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
  810. nuitka/plugins/standard/DataFilesPlugin.py +311 -0
  811. nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
  812. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  813. nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
  814. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
  815. nuitka/plugins/standard/DillPlugin.py +137 -0
  816. nuitka/plugins/standard/DllFilesPlugin.py +527 -0
  817. nuitka/plugins/standard/EnumPlugin.py +64 -0
  818. nuitka/plugins/standard/EventletPlugin.py +57 -0
  819. nuitka/plugins/standard/GeventPlugin.py +64 -0
  820. nuitka/plugins/standard/GiPlugin.py +118 -0
  821. nuitka/plugins/standard/GlfwPlugin.py +138 -0
  822. nuitka/plugins/standard/ImplicitImports.py +845 -0
  823. nuitka/plugins/standard/KivyPlugin.py +141 -0
  824. nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
  825. nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
  826. nuitka/plugins/standard/NumpyPlugin.py +35 -0
  827. nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
  828. nuitka/plugins/standard/PbrPlugin.py +62 -0
  829. nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
  830. nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
  831. nuitka/plugins/standard/PmwPlugin.py +248 -0
  832. nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
  833. nuitka/plugins/standard/PywebViewPlugin.py +81 -0
  834. nuitka/plugins/standard/SpacyPlugin.py +137 -0
  835. nuitka/plugins/standard/TensorflowPlugin.py +35 -0
  836. nuitka/plugins/standard/TkinterPlugin.py +416 -0
  837. nuitka/plugins/standard/TorchPlugin.py +35 -0
  838. nuitka/plugins/standard/TransformersPlugin.py +121 -0
  839. nuitka/plugins/standard/TrioPlugin.py +33 -0
  840. nuitka/plugins/standard/UpxPlugin.py +174 -0
  841. nuitka/plugins/standard/__init__.py +19 -0
  842. nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
  843. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
  844. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
  845. nuitka/reports/CompilationReportReader.py +83 -0
  846. nuitka/reports/LicenseReport.rst.j2 +41 -0
  847. nuitka/reports/Reports.py +961 -0
  848. nuitka/reports/__init__.py +19 -0
  849. nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
  850. nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
  851. nuitka/specs/BuiltinListOperationSpecs.py +80 -0
  852. nuitka/specs/BuiltinParameterSpecs.py +831 -0
  853. nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
  854. nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
  855. nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
  856. nuitka/specs/HardImportSpecs.py +236 -0
  857. nuitka/specs/ParameterSpecs.py +630 -0
  858. nuitka/specs/__init__.py +19 -0
  859. nuitka/tools/Basics.py +55 -0
  860. nuitka/tools/__init__.py +19 -0
  861. nuitka/tools/commercial/__init__.py +21 -0
  862. nuitka/tools/data_composer/DataComposer.py +593 -0
  863. nuitka/tools/data_composer/__init__.py +19 -0
  864. nuitka/tools/data_composer/__main__.py +41 -0
  865. nuitka/tools/environments/CreateEnvironment.py +69 -0
  866. nuitka/tools/environments/Virtualenv.py +158 -0
  867. nuitka/tools/environments/__init__.py +19 -0
  868. nuitka/tools/general/__init__.py +19 -0
  869. nuitka/tools/general/dll_report/__init__.py +19 -0
  870. nuitka/tools/general/dll_report/__main__.py +83 -0
  871. nuitka/tools/general/find_module/FindModuleCode.py +127 -0
  872. nuitka/tools/general/find_module/__init__.py +19 -0
  873. nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
  874. nuitka/tools/general/generate_header/__init__.py +19 -0
  875. nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
  876. nuitka/tools/onefile_compressor/__init__.py +19 -0
  877. nuitka/tools/onefile_compressor/__main__.py +41 -0
  878. nuitka/tools/podman/Podman.py +55 -0
  879. nuitka/tools/podman/__init__.py +19 -0
  880. nuitka/tools/podman/__main__.py +425 -0
  881. nuitka/tools/profiler/__init__.py +19 -0
  882. nuitka/tools/profiler/__main__.py +93 -0
  883. nuitka/tools/scanning/DisplayDistributions.py +39 -0
  884. nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
  885. nuitka/tools/scanning/DisplayPackageData.py +73 -0
  886. nuitka/tools/scanning/__init__.py +19 -0
  887. nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
  888. nuitka/tools/specialize/Common.py +380 -0
  889. nuitka/tools/specialize/SpecializeC.py +1483 -0
  890. nuitka/tools/specialize/SpecializePython.py +1151 -0
  891. nuitka/tools/specialize/__init__.py +19 -0
  892. nuitka/tools/testing/Common.py +2007 -0
  893. nuitka/tools/testing/Constructs.py +53 -0
  894. nuitka/tools/testing/DocTests.py +156 -0
  895. nuitka/tools/testing/OutputComparison.py +313 -0
  896. nuitka/tools/testing/Pythons.py +34 -0
  897. nuitka/tools/testing/RuntimeTracing.py +260 -0
  898. nuitka/tools/testing/SearchModes.py +208 -0
  899. nuitka/tools/testing/Valgrind.py +103 -0
  900. nuitka/tools/testing/__init__.py +19 -0
  901. nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
  902. nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
  903. nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
  904. nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
  905. nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
  906. nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
  907. nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
  908. nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
  909. nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
  910. nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
  911. nuitka/tools/watch/AutoStage.py +145 -0
  912. nuitka/tools/watch/Common.py +55 -0
  913. nuitka/tools/watch/Conda.py +125 -0
  914. nuitka/tools/watch/GitHub.py +113 -0
  915. nuitka/tools/watch/Pacman.py +73 -0
  916. nuitka/tools/watch/Pipenv.py +145 -0
  917. nuitka/tools/watch/__init__.py +19 -0
  918. nuitka/tools/watch/__main__.py +615 -0
  919. nuitka/tree/Building.py +1459 -0
  920. nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
  921. nuitka/tree/Extractions.py +48 -0
  922. nuitka/tree/FutureSpecState.py +71 -0
  923. nuitka/tree/InternalModule.py +96 -0
  924. nuitka/tree/Operations.py +45 -0
  925. nuitka/tree/ReformulationAssertStatements.py +97 -0
  926. nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
  927. nuitka/tree/ReformulationBooleanExpressions.py +97 -0
  928. nuitka/tree/ReformulationCallExpressions.py +314 -0
  929. nuitka/tree/ReformulationClasses.py +407 -0
  930. nuitka/tree/ReformulationClasses3.py +1149 -0
  931. nuitka/tree/ReformulationComparisonExpressions.py +174 -0
  932. nuitka/tree/ReformulationContractionExpressions.py +676 -0
  933. nuitka/tree/ReformulationDictionaryCreation.py +304 -0
  934. nuitka/tree/ReformulationExecStatements.py +386 -0
  935. nuitka/tree/ReformulationForLoopStatements.py +215 -0
  936. nuitka/tree/ReformulationFunctionStatements.py +931 -0
  937. nuitka/tree/ReformulationImportStatements.py +333 -0
  938. nuitka/tree/ReformulationLambdaExpressions.py +185 -0
  939. nuitka/tree/ReformulationMatchStatements.py +797 -0
  940. nuitka/tree/ReformulationMultidist.py +80 -0
  941. nuitka/tree/ReformulationNamespacePackages.py +239 -0
  942. nuitka/tree/ReformulationPrintStatements.py +127 -0
  943. nuitka/tree/ReformulationSequenceCreation.py +438 -0
  944. nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
  945. nuitka/tree/ReformulationTryExceptStatements.py +418 -0
  946. nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
  947. nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
  948. nuitka/tree/ReformulationWithStatements.py +382 -0
  949. nuitka/tree/ReformulationYieldExpressions.py +133 -0
  950. nuitka/tree/SourceHandling.py +476 -0
  951. nuitka/tree/SyntaxErrors.py +143 -0
  952. nuitka/tree/TreeHelpers.py +720 -0
  953. nuitka/tree/VariableClosure.py +483 -0
  954. nuitka/tree/__init__.py +19 -0
  955. nuitka/utils/AppDirs.py +104 -0
  956. nuitka/utils/CStrings.py +208 -0
  957. nuitka/utils/CommandLineOptions.py +207 -0
  958. nuitka/utils/Distributions.py +728 -0
  959. nuitka/utils/Download.py +217 -0
  960. nuitka/utils/Execution.py +517 -0
  961. nuitka/utils/FileOperations.py +1587 -0
  962. nuitka/utils/Hashing.py +137 -0
  963. nuitka/utils/Images.py +79 -0
  964. nuitka/utils/Importing.py +335 -0
  965. nuitka/utils/InlineCopies.py +52 -0
  966. nuitka/utils/InstalledPythons.py +254 -0
  967. nuitka/utils/InstanceCounters.py +86 -0
  968. nuitka/utils/Jinja2.py +158 -0
  969. nuitka/utils/Json.py +40 -0
  970. nuitka/utils/MacOSApp.py +134 -0
  971. nuitka/utils/MemoryUsage.py +165 -0
  972. nuitka/utils/ModuleNames.py +317 -0
  973. nuitka/utils/PackageResources.py +44 -0
  974. nuitka/utils/ReExecute.py +152 -0
  975. nuitka/utils/Rest.py +60 -0
  976. nuitka/utils/SharedLibraries.py +1014 -0
  977. nuitka/utils/Shebang.py +113 -0
  978. nuitka/utils/Signing.py +144 -0
  979. nuitka/utils/SlotMetaClasses.py +57 -0
  980. nuitka/utils/StaticLibraries.py +260 -0
  981. nuitka/utils/ThreadedExecutor.py +87 -0
  982. nuitka/utils/Timing.py +102 -0
  983. nuitka/utils/Utils.py +483 -0
  984. nuitka/utils/WindowsFileUsage.py +337 -0
  985. nuitka/utils/WindowsResources.py +652 -0
  986. nuitka/utils/Yaml.py +247 -0
  987. nuitka/utils/__init__.py +19 -0
  988. nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
  989. nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
  990. nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
  991. nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
  992. nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
  993. nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
  994. nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
  995. nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1459 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Build the internal node tree from source code.
5
+
6
+ Does all the Python parsing and puts it into a tree structure for use in later
7
+ stages of the compilation process.
8
+
9
+ In the "nuitka.tree.TreeHelpers" module, the dispatching is happening. One function
10
+ deals with every node kind as found in the AST. The parsing is centered around
11
+ the module "ast" output.
12
+
13
+ Many higher level language features and translated into lower level ones.
14
+
15
+ In-place assignments, for loops, while loops, classes, complex calls, with
16
+ statements, and even or/and etc. are all translated to simpler constructs.
17
+
18
+ The output of this module is a node tree, which contains only relatively low
19
+ level operations. A property of the output is also an overlaid tree of provider
20
+ structure that indicates variable provision.
21
+
22
+ Classes are handled in a separate module. They are re-formulated into functions
23
+ producing dictionaries used to call the metaclass with.
24
+
25
+ Try/except/else statements are handled in a separate module. They are
26
+ re-formulated into using a temporary variable to track if the else branch
27
+ should execute.
28
+
29
+ Try/finally statements are handled in a separate module. They are re-formulated
30
+ to use a nested try/finally for (un)publishing the exception for Python3.
31
+
32
+ With statements are handled in a separate module. They are re-formulated into
33
+ special attribute lookups for "__enter__" and "__exit__", calls of them,
34
+ catching and passing in exceptions raised.
35
+
36
+ """
37
+
38
+ import marshal
39
+ import os
40
+
41
+ from nuitka import ModuleRegistry, OutputDirectories, SourceCodeReferences
42
+ from nuitka.__past__ import long, unicode
43
+ from nuitka.BytecodeCaching import (
44
+ getCachedImportedModuleUsageAttempts,
45
+ hasCachedImportedModuleUsageAttempts,
46
+ )
47
+ from nuitka.Bytecodes import loadCodeObjectData
48
+ from nuitka.containers.OrderedSets import OrderedSet
49
+ from nuitka.Errors import CodeTooComplexCode
50
+ from nuitka.freezer.ImportDetection import (
51
+ detectEarlyImports,
52
+ detectStdlibAutoInclusionModules,
53
+ )
54
+ from nuitka.importing import Importing
55
+ from nuitka.importing.ImportCache import addImportedModule
56
+ from nuitka.importing.PreloadedPackages import getPthImportedPackages
57
+ from nuitka.importing.StandardLibrary import isStandardLibraryPath
58
+ from nuitka.nodes.AttributeNodes import (
59
+ StatementAssignmentAttribute,
60
+ makeExpressionAttributeLookup,
61
+ )
62
+ from nuitka.nodes.BuiltinFormatNodes import (
63
+ ExpressionBuiltinAscii,
64
+ ExpressionBuiltinFormat,
65
+ )
66
+ from nuitka.nodes.BuiltinRefNodes import quick_names
67
+ from nuitka.nodes.BuiltinTypeNodes import ExpressionBuiltinStrP3
68
+ from nuitka.nodes.ConditionalNodes import (
69
+ ExpressionConditional,
70
+ makeStatementConditional,
71
+ )
72
+ from nuitka.nodes.ConstantRefNodes import (
73
+ ExpressionConstantEllipsisRef,
74
+ ExpressionConstantNoneRef,
75
+ makeConstantRefNode,
76
+ )
77
+ from nuitka.nodes.ExceptionNodes import StatementRaiseException
78
+ from nuitka.nodes.FutureSpecs import FutureSpec
79
+ from nuitka.nodes.GeneratorNodes import (
80
+ StatementGeneratorReturn,
81
+ StatementGeneratorReturnNone,
82
+ )
83
+ from nuitka.nodes.ImportNodes import (
84
+ isHardModuleWithoutSideEffect,
85
+ makeExpressionImportModuleFixed,
86
+ )
87
+ from nuitka.nodes.LoopNodes import StatementLoopBreak, StatementLoopContinue
88
+ from nuitka.nodes.ModuleAttributeNodes import (
89
+ ExpressionModuleAttributeFileRef,
90
+ ExpressionModuleAttributeSpecRef,
91
+ )
92
+ from nuitka.nodes.ModuleNodes import (
93
+ CompiledPythonModule,
94
+ CompiledPythonPackage,
95
+ PythonExtensionModule,
96
+ PythonMainModule,
97
+ makeUncompiledPythonModule,
98
+ )
99
+ from nuitka.nodes.NodeMakingHelpers import (
100
+ makeRaiseExceptionStatementFromInstance,
101
+ )
102
+ from nuitka.nodes.OperatorNodes import makeBinaryOperationNode
103
+ from nuitka.nodes.OperatorNodesUnary import makeExpressionOperationUnary
104
+ from nuitka.nodes.ReturnNodes import makeStatementReturn
105
+ from nuitka.nodes.SliceNodes import makeExpressionBuiltinSlice
106
+ from nuitka.nodes.StatementNodes import StatementExpressionOnly
107
+ from nuitka.nodes.StringConcatenationNodes import ExpressionStringConcatenation
108
+ from nuitka.nodes.VariableNameNodes import (
109
+ ExpressionVariableNameRef,
110
+ StatementAssignmentVariableName,
111
+ )
112
+ from nuitka.optimizations.BytecodeDemotion import demoteSourceCodeToBytecode
113
+ from nuitka.Options import (
114
+ getMainEntryPointFilenames,
115
+ hasPythonFlagNoSite,
116
+ hasPythonFlagPackageMode,
117
+ isShowMemory,
118
+ isStandaloneMode,
119
+ shallDisableBytecodeCacheUsage,
120
+ shallMakeModule,
121
+ shallWarnUnusualCode,
122
+ )
123
+ from nuitka.pgo.PGO import decideCompilationFromPGO
124
+ from nuitka.plugins.Plugins import Plugins
125
+ from nuitka.PythonVersions import python_version
126
+ from nuitka.Tracing import (
127
+ general,
128
+ optimization_logger,
129
+ plugins_logger,
130
+ recursion_logger,
131
+ unusual_logger,
132
+ )
133
+ from nuitka.utils import MemoryUsage
134
+ from nuitka.utils.ModuleNames import ModuleName
135
+ from nuitka.utils.Utils import withNoSyntaxWarning
136
+
137
+ from . import SyntaxErrors
138
+ from .FutureSpecState import getFutureSpec, popFutureSpec, pushFutureSpec
139
+ from .ReformulationAssertStatements import buildAssertNode
140
+ from .ReformulationAssignmentStatements import (
141
+ buildAnnAssignNode,
142
+ buildAssignNode,
143
+ buildDeleteNode,
144
+ buildInplaceAssignNode,
145
+ buildNamedExprNode,
146
+ buildTypeAliasNode,
147
+ buildTypeVarNode,
148
+ )
149
+ from .ReformulationBooleanExpressions import buildBoolOpNode
150
+ from .ReformulationCallExpressions import buildCallNode
151
+ from .ReformulationClasses import buildClassNode
152
+ from .ReformulationComparisonExpressions import buildComparisonNode
153
+ from .ReformulationContractionExpressions import (
154
+ buildDictContractionNode,
155
+ buildGeneratorExpressionNode,
156
+ buildListContractionNode,
157
+ buildSetContractionNode,
158
+ )
159
+ from .ReformulationDictionaryCreation import buildDictionaryNode
160
+ from .ReformulationExecStatements import buildExecNode
161
+ from .ReformulationForLoopStatements import (
162
+ buildAsyncForLoopNode,
163
+ buildForLoopNode,
164
+ )
165
+ from .ReformulationFunctionStatements import (
166
+ buildAsyncFunctionNode,
167
+ buildFunctionNode,
168
+ )
169
+ from .ReformulationImportStatements import (
170
+ buildImportFromNode,
171
+ buildImportModulesNode,
172
+ checkFutureImportsOnlyAtStart,
173
+ )
174
+ from .ReformulationLambdaExpressions import buildLambdaNode
175
+ from .ReformulationMatchStatements import buildMatchNode
176
+ from .ReformulationNamespacePackages import (
177
+ createNamespacePackage,
178
+ createPathAssignment,
179
+ )
180
+ from .ReformulationPrintStatements import buildPrintNode
181
+ from .ReformulationSequenceCreation import (
182
+ buildListCreationNode,
183
+ buildSetCreationNode,
184
+ buildTupleCreationNode,
185
+ )
186
+ from .ReformulationSubscriptExpressions import buildSubscriptNode
187
+ from .ReformulationTryExceptStatements import (
188
+ buildTryExceptionNode,
189
+ buildTryStarExceptionNode,
190
+ )
191
+ from .ReformulationTryFinallyStatements import buildTryFinallyNode
192
+ from .ReformulationWhileLoopStatements import buildWhileLoopNode
193
+ from .ReformulationWithStatements import buildAsyncWithNode, buildWithNode
194
+ from .ReformulationYieldExpressions import (
195
+ buildAwaitNode,
196
+ buildYieldFromNode,
197
+ buildYieldNode,
198
+ )
199
+ from .SourceHandling import (
200
+ checkPythonVersionFromCode,
201
+ getSourceCodeDiff,
202
+ readSourceCodeFromFilenameWithInformation,
203
+ )
204
+ from .TreeHelpers import (
205
+ buildNode,
206
+ buildNodeTuple,
207
+ buildStatementsNode,
208
+ extractDocFromBody,
209
+ getBuildContext,
210
+ getKind,
211
+ makeModuleFrame,
212
+ makeReraiseExceptionStatement,
213
+ makeStatementsSequence,
214
+ makeStatementsSequenceFromStatement,
215
+ mangleName,
216
+ mergeStatements,
217
+ parseSourceCodeToAst,
218
+ setBuildingDispatchers,
219
+ )
220
+ from .VariableClosure import completeVariableClosures
221
+
222
+ if str is not bytes:
223
+
224
+ def buildVariableReferenceNode(provider, node, source_ref):
225
+ # Shortcut for Python3, which gives syntax errors for assigning these.
226
+ if node.id in quick_names:
227
+ return makeConstantRefNode(
228
+ constant=quick_names[node.id], source_ref=source_ref
229
+ )
230
+
231
+ return ExpressionVariableNameRef(
232
+ provider=provider,
233
+ variable_name=mangleName(node.id, provider),
234
+ source_ref=source_ref,
235
+ )
236
+
237
+ else:
238
+
239
+ def buildVariableReferenceNode(provider, node, source_ref):
240
+ return ExpressionVariableNameRef(
241
+ provider=provider,
242
+ variable_name=mangleName(node.id, provider),
243
+ source_ref=source_ref,
244
+ )
245
+
246
+
247
+ # Python3.4 or higher, True and False, are not given as variables anymore.
248
+ # Python3.8, all kinds of constants are like this.
249
+ def buildNamedConstantNode(node, source_ref):
250
+ return makeConstantRefNode(
251
+ constant=node.value, source_ref=source_ref, user_provided=True
252
+ )
253
+
254
+
255
+ def buildConditionNode(provider, node, source_ref):
256
+ # Conditional statements may have one or two branches. We will never see an
257
+ # "elif", because that's already dealt with by module "ast", which turns it
258
+ # into nested conditional statements. spell-checker: ignore orelse
259
+
260
+ return makeStatementConditional(
261
+ condition=buildNode(provider, node.test, source_ref),
262
+ yes_branch=buildStatementsNode(
263
+ provider=provider, nodes=node.body, source_ref=source_ref
264
+ ),
265
+ no_branch=buildStatementsNode(
266
+ provider=provider,
267
+ nodes=node.orelse if node.orelse else None,
268
+ source_ref=source_ref,
269
+ ),
270
+ source_ref=source_ref,
271
+ )
272
+
273
+
274
+ def buildTryFinallyNode2(provider, node, source_ref):
275
+ # Try/finally node statements of old style.
276
+
277
+ return buildTryFinallyNode(
278
+ provider=provider,
279
+ build_tried=lambda: buildStatementsNode(
280
+ provider=provider, nodes=node.body, source_ref=source_ref
281
+ ),
282
+ node=node,
283
+ source_ref=source_ref,
284
+ )
285
+
286
+
287
+ def buildTryNode(provider, node, source_ref):
288
+ # Note: This variant is used for Python3 only, older stuff uses the above
289
+ # ones, this one merges try/except with try/finally in the "ast". We split
290
+ # it up again, as it's logically separated of course.
291
+
292
+ # Shortcut missing try/finally.
293
+ if not node.handlers:
294
+ return buildTryFinallyNode2(provider, node, source_ref)
295
+
296
+ if not node.finalbody: # spell-checker: ignore finalbody
297
+ return buildTryExceptionNode(
298
+ provider=provider, node=node, source_ref=source_ref
299
+ )
300
+
301
+ return buildTryFinallyNode(
302
+ provider=provider,
303
+ build_tried=lambda: makeStatementsSequence(
304
+ statements=mergeStatements(
305
+ (
306
+ buildTryExceptionNode(
307
+ provider=provider, node=node, source_ref=source_ref
308
+ ),
309
+ ),
310
+ allow_none=True,
311
+ ),
312
+ allow_none=True,
313
+ source_ref=source_ref,
314
+ ),
315
+ node=node,
316
+ source_ref=source_ref,
317
+ )
318
+
319
+
320
+ def buildTryStarNode(provider, node, source_ref):
321
+ # Note: This variant is used for Python3.11 or higher only, where an exception
322
+ # group is caught. Mixing groups and non-group catches is not allowed.
323
+
324
+ # Without handlers, this would not be used, but instead "Try" would be used,
325
+ # but assert against it.
326
+ assert node.handlers
327
+
328
+ if not node.finalbody: # spell-checker: ignore finalbody
329
+ return buildTryStarExceptionNode(
330
+ provider=provider, node=node, source_ref=source_ref
331
+ )
332
+
333
+ return buildTryFinallyNode(
334
+ provider=provider,
335
+ build_tried=lambda: makeStatementsSequence(
336
+ statements=mergeStatements(
337
+ (
338
+ buildTryStarExceptionNode(
339
+ provider=provider, node=node, source_ref=source_ref
340
+ ),
341
+ ),
342
+ allow_none=True,
343
+ ),
344
+ allow_none=True,
345
+ source_ref=source_ref,
346
+ ),
347
+ node=node,
348
+ source_ref=source_ref,
349
+ )
350
+
351
+
352
+ def buildRaiseNode(provider, node, source_ref):
353
+ # Raise statements. Under Python2 they may have type, value and traceback
354
+ # attached, for Python3, you can only give type (actually value) and cause.
355
+ # spell-checker: ignore tback
356
+ if python_version < 0x300:
357
+ exception_type = buildNode(provider, node.type, source_ref, allow_none=True)
358
+ exception_value = buildNode(provider, node.inst, source_ref, allow_none=True)
359
+ exception_trace = buildNode(provider, node.tback, source_ref, allow_none=True)
360
+ exception_cause = None
361
+ else:
362
+ exception_type = buildNode(provider, node.exc, source_ref, allow_none=True)
363
+ exception_value = None
364
+ exception_trace = None
365
+ exception_cause = buildNode(provider, node.cause, source_ref, allow_none=True)
366
+
367
+ if exception_type is None:
368
+ assert exception_value is None
369
+ assert exception_trace is None
370
+ assert exception_cause is None
371
+
372
+ result = makeReraiseExceptionStatement(source_ref=source_ref)
373
+ else:
374
+ result = StatementRaiseException(
375
+ exception_type=exception_type,
376
+ exception_value=exception_value,
377
+ exception_trace=exception_trace,
378
+ exception_cause=exception_cause,
379
+ source_ref=source_ref,
380
+ )
381
+
382
+ if exception_cause is not None:
383
+ result.setCompatibleSourceReference(
384
+ source_ref=exception_cause.getCompatibleSourceReference()
385
+ )
386
+ elif exception_trace is not None:
387
+ result.setCompatibleSourceReference(
388
+ source_ref=exception_trace.getCompatibleSourceReference()
389
+ )
390
+ elif exception_value is not None:
391
+ result.setCompatibleSourceReference(
392
+ source_ref=exception_value.getCompatibleSourceReference()
393
+ )
394
+ elif exception_type is not None:
395
+ result.setCompatibleSourceReference(
396
+ source_ref=exception_type.getCompatibleSourceReference()
397
+ )
398
+
399
+ return result
400
+
401
+
402
+ def handleGlobalDeclarationNode(provider, node, source_ref):
403
+ # On the module level, there is nothing to do.
404
+ if provider.isCompiledPythonModule():
405
+ if shallWarnUnusualCode():
406
+ unusual_logger.warning(
407
+ "%s: Using 'global' statement on module level has no effect."
408
+ % source_ref.getAsString(),
409
+ )
410
+
411
+ return None
412
+
413
+ # Need to catch the error of declaring a parameter variable as global
414
+ # ourselves here. The AST parsing doesn't catch it, so we check here.
415
+ if provider.isExpressionFunctionBody():
416
+ parameters = provider.getParameters()
417
+
418
+ for variable_name in node.names:
419
+ if variable_name in parameters.getParameterNames():
420
+ SyntaxErrors.raiseSyntaxError(
421
+ "name '%s' is %s and global"
422
+ % (
423
+ variable_name,
424
+ "local" if python_version < 0x300 else "parameter",
425
+ ),
426
+ source_ref.atColumnNumber(node.col_offset),
427
+ )
428
+
429
+ # The module the "global" statement refers to.
430
+ module = provider.getParentModule()
431
+
432
+ # Can give multiple names.
433
+ for variable_name in node.names:
434
+ closure_variable = None
435
+
436
+ # Reuse already taken global variables, in order to avoid creating yet
437
+ # another instance, esp. as the indications could then potentially not
438
+ # be shared.
439
+ if provider.hasTakenVariable(variable_name):
440
+ closure_variable = provider.getTakenVariable(variable_name)
441
+
442
+ # Only global variables count. Could have a closure reference to
443
+ # a location of a parent function here.
444
+ if not closure_variable.isModuleVariable():
445
+ closure_variable = None
446
+
447
+ if closure_variable is None:
448
+ module_variable = module.getVariableForAssignment(
449
+ variable_name=variable_name
450
+ )
451
+
452
+ closure_variable = provider.addClosureVariable(variable=module_variable)
453
+
454
+ assert closure_variable.isModuleVariable()
455
+
456
+ # Special case, since Python 3.5 it is allowed to use global on the "__class__"
457
+ # variable as well, but it's not changing visibility of implicit "__class__" of
458
+ # functions, and as such it will just not be registered.
459
+ if (
460
+ provider.isExpressionClassBodyBase()
461
+ and closure_variable.getName() == "__class__"
462
+ ):
463
+ if python_version < 0x300:
464
+ SyntaxErrors.raiseSyntaxError(
465
+ "cannot make __class__ global", source_ref
466
+ )
467
+ else:
468
+ provider.getLocalsScope().registerClosureVariable(
469
+ variable=closure_variable,
470
+ )
471
+
472
+ # Drop this, not really part of our tree.
473
+ return None
474
+
475
+
476
+ def handleNonlocalDeclarationNode(provider, node, source_ref):
477
+ # Need to catch the error of declaring a parameter variable as global
478
+ # ourselves here. The AST parsing doesn't catch it, but we can do it here.
479
+ parameter_provider = provider
480
+
481
+ while (
482
+ parameter_provider.isExpressionGeneratorObjectBody()
483
+ or parameter_provider.isExpressionCoroutineObjectBody()
484
+ or parameter_provider.isExpressionAsyncgenObjectBody()
485
+ ):
486
+ parameter_provider = parameter_provider.getParentVariableProvider()
487
+
488
+ if parameter_provider.isExpressionClassBodyBase():
489
+ parameter_names = ()
490
+ else:
491
+ parameter_names = parameter_provider.getParameters().getParameterNames()
492
+
493
+ for variable_name in node.names:
494
+ if variable_name in parameter_names:
495
+ SyntaxErrors.raiseSyntaxError(
496
+ "name '%s' is parameter and nonlocal" % (variable_name),
497
+ source_ref.atColumnNumber(node.col_offset),
498
+ )
499
+
500
+ provider.addNonlocalsDeclaration(
501
+ names=tuple(node.names),
502
+ user_provided=True,
503
+ source_ref=source_ref.atColumnNumber(node.col_offset),
504
+ )
505
+
506
+ # Drop this, not really part of our tree.
507
+ return None
508
+
509
+
510
+ def buildStringNode(node, source_ref):
511
+ assert type(node.s) in (str, unicode)
512
+
513
+ return makeConstantRefNode(
514
+ constant=node.s, source_ref=source_ref, user_provided=True
515
+ )
516
+
517
+
518
+ def buildNumberNode(node, source_ref):
519
+ assert type(node.n) in (int, long, float, complex), type(node.n)
520
+
521
+ return makeConstantRefNode(
522
+ constant=node.n, source_ref=source_ref, user_provided=True
523
+ )
524
+
525
+
526
+ def buildBytesNode(node, source_ref):
527
+ return makeConstantRefNode(
528
+ constant=node.s, source_ref=source_ref, user_provided=True
529
+ )
530
+
531
+
532
+ def buildEllipsisNode(source_ref):
533
+ return ExpressionConstantEllipsisRef(source_ref=source_ref)
534
+
535
+
536
+ def buildStatementLoopContinue(node, source_ref):
537
+ source_ref = source_ref.atColumnNumber(node.col_offset)
538
+
539
+ # Python forbids this, although technically it's probably not much of
540
+ # an issue.
541
+ if getBuildContext() == "finally" and python_version < 0x380:
542
+ SyntaxErrors.raiseSyntaxError(
543
+ "'continue' not supported inside 'finally' clause", source_ref
544
+ )
545
+
546
+ return StatementLoopContinue(source_ref=source_ref)
547
+
548
+
549
+ def buildStatementLoopBreak(provider, node, source_ref):
550
+ # A bit unusual, we need the provider, but not the node,
551
+ # pylint: disable=unused-argument
552
+
553
+ return StatementLoopBreak(source_ref=source_ref.atColumnNumber(node.col_offset))
554
+
555
+
556
+ def buildAttributeNode(provider, node, source_ref):
557
+ return makeExpressionAttributeLookup(
558
+ expression=buildNode(provider, node.value, source_ref),
559
+ attribute_name=mangleName(node.attr, provider),
560
+ source_ref=source_ref,
561
+ )
562
+
563
+
564
+ def buildReturnNode(provider, node, source_ref):
565
+ if provider.isExpressionClassBodyBase() or provider.isCompiledPythonModule():
566
+ SyntaxErrors.raiseSyntaxError(
567
+ "'return' outside function", source_ref.atColumnNumber(node.col_offset)
568
+ )
569
+
570
+ expression = buildNode(provider, node.value, source_ref, allow_none=True)
571
+
572
+ if provider.isExpressionGeneratorObjectBody():
573
+ if expression is not None and python_version < 0x300:
574
+ SyntaxErrors.raiseSyntaxError(
575
+ "'return' with argument inside generator",
576
+ source_ref.atColumnNumber(node.col_offset),
577
+ )
578
+
579
+ if provider.isExpressionAsyncgenObjectBody():
580
+ if expression is not None:
581
+ SyntaxErrors.raiseSyntaxError(
582
+ "'return' with value in async generator",
583
+ source_ref.atColumnNumber(node.col_offset),
584
+ )
585
+
586
+ if (
587
+ provider.isExpressionGeneratorObjectBody()
588
+ or provider.isExpressionAsyncgenObjectBody()
589
+ ):
590
+ if expression is None or expression.isExpressionConstantNoneRef():
591
+ return StatementGeneratorReturnNone(source_ref=source_ref)
592
+ else:
593
+ return StatementGeneratorReturn(
594
+ expression=expression, source_ref=source_ref
595
+ )
596
+ else:
597
+ return makeStatementReturn(expression=expression, source_ref=source_ref)
598
+
599
+
600
+ def buildExprOnlyNode(provider, node, source_ref):
601
+ result = StatementExpressionOnly(
602
+ expression=buildNode(provider, node.value, source_ref), source_ref=source_ref
603
+ )
604
+
605
+ result.setCompatibleSourceReference(
606
+ result.subnode_expression.getCompatibleSourceReference()
607
+ )
608
+
609
+ return result
610
+
611
+
612
+ def buildUnaryOpNode(provider, node, source_ref):
613
+ operator = getKind(node.op)
614
+
615
+ # Delegate this one to boolean operation code.
616
+ if operator == "Not":
617
+ return buildBoolOpNode(provider=provider, node=node, source_ref=source_ref)
618
+
619
+ operand = buildNode(provider, node.operand, source_ref)
620
+
621
+ return makeExpressionOperationUnary(
622
+ operator=operator, operand=operand, source_ref=source_ref
623
+ )
624
+
625
+
626
+ def buildBinaryOpNode(provider, node, source_ref):
627
+ operator = getKind(node.op)
628
+
629
+ if operator == "Div":
630
+ operator = "TrueDiv" if getFutureSpec().isFutureDivision() else "OldDiv"
631
+
632
+ left = buildNode(provider, node.left, source_ref)
633
+ right = buildNode(provider, node.right, source_ref)
634
+
635
+ result = makeBinaryOperationNode(
636
+ operator=operator, left=left, right=right, source_ref=source_ref
637
+ )
638
+
639
+ result.setCompatibleSourceReference(source_ref=right.getCompatibleSourceReference())
640
+
641
+ return result
642
+
643
+
644
+ def buildReprNode(provider, node, source_ref):
645
+ return makeExpressionOperationUnary(
646
+ operator="Repr",
647
+ operand=buildNode(provider, node.value, source_ref),
648
+ source_ref=source_ref,
649
+ )
650
+
651
+
652
+ def buildConditionalExpressionNode(provider, node, source_ref):
653
+ return ExpressionConditional(
654
+ condition=buildNode(provider, node.test, source_ref),
655
+ expression_yes=buildNode(provider, node.body, source_ref),
656
+ expression_no=buildNode(provider, node.orelse, source_ref),
657
+ source_ref=source_ref,
658
+ )
659
+
660
+
661
+ def buildFormattedValueNode(provider, node, source_ref):
662
+ value = buildNode(provider, node.value, source_ref)
663
+
664
+ conversion = node.conversion % 4 if node.conversion > 0 else 0
665
+
666
+ if conversion == 0:
667
+ pass
668
+ elif conversion == 3:
669
+ # TODO: We might start using this for Python2 too.
670
+ assert str is not bytes
671
+
672
+ value = ExpressionBuiltinStrP3(
673
+ value=value, encoding=None, errors=None, source_ref=source_ref
674
+ )
675
+ elif conversion == 2:
676
+ value = makeExpressionOperationUnary(
677
+ operator="Repr", operand=value, source_ref=source_ref
678
+ )
679
+ elif conversion == 1:
680
+ value = ExpressionBuiltinAscii(value=value, source_ref=source_ref)
681
+ else:
682
+ assert False, conversion
683
+
684
+ return ExpressionBuiltinFormat(
685
+ value=value,
686
+ format_spec=buildNode(provider, node.format_spec, source_ref, allow_none=True),
687
+ source_ref=source_ref,
688
+ )
689
+
690
+
691
+ def buildJoinedStrNode(provider, node, source_ref):
692
+ if node.values:
693
+ return ExpressionStringConcatenation(
694
+ values=buildNodeTuple(provider, node.values, source_ref),
695
+ source_ref=source_ref,
696
+ )
697
+ else:
698
+ return makeConstantRefNode(constant="", source_ref=source_ref)
699
+
700
+
701
+ def buildSliceNode(provider, node, source_ref):
702
+ """Python3.9 or higher, slice notations."""
703
+ return makeExpressionBuiltinSlice(
704
+ start=buildNode(provider, node.lower, source_ref, allow_none=True),
705
+ stop=buildNode(provider, node.upper, source_ref, allow_none=True),
706
+ step=buildNode(provider, node.step, source_ref, allow_none=True),
707
+ source_ref=source_ref,
708
+ )
709
+
710
+
711
+ setBuildingDispatchers(
712
+ path_args3={
713
+ "Name": buildVariableReferenceNode,
714
+ "Assign": buildAssignNode,
715
+ "AnnAssign": buildAnnAssignNode,
716
+ "Delete": buildDeleteNode,
717
+ "Lambda": buildLambdaNode,
718
+ "GeneratorExp": buildGeneratorExpressionNode,
719
+ "If": buildConditionNode,
720
+ "While": buildWhileLoopNode,
721
+ "For": buildForLoopNode,
722
+ "AsyncFor": buildAsyncForLoopNode,
723
+ "Compare": buildComparisonNode,
724
+ "ListComp": buildListContractionNode,
725
+ "DictComp": buildDictContractionNode,
726
+ "SetComp": buildSetContractionNode,
727
+ "Dict": buildDictionaryNode,
728
+ "Set": buildSetCreationNode,
729
+ "Tuple": buildTupleCreationNode,
730
+ "List": buildListCreationNode,
731
+ "Global": handleGlobalDeclarationNode,
732
+ "Nonlocal": handleNonlocalDeclarationNode,
733
+ "TryExcept": buildTryExceptionNode,
734
+ "TryFinally": buildTryFinallyNode2,
735
+ "Try": buildTryNode,
736
+ "Raise": buildRaiseNode,
737
+ # Python3.11 exception group catching
738
+ "TryStar": buildTryStarNode,
739
+ "Import": buildImportModulesNode,
740
+ "ImportFrom": buildImportFromNode,
741
+ "Assert": buildAssertNode,
742
+ "Exec": buildExecNode,
743
+ "With": buildWithNode,
744
+ "AsyncWith": buildAsyncWithNode,
745
+ "FunctionDef": buildFunctionNode,
746
+ "AsyncFunctionDef": buildAsyncFunctionNode,
747
+ "Await": buildAwaitNode,
748
+ "ClassDef": buildClassNode,
749
+ "Print": buildPrintNode,
750
+ "Call": buildCallNode,
751
+ "Subscript": buildSubscriptNode,
752
+ "BoolOp": buildBoolOpNode,
753
+ "Attribute": buildAttributeNode,
754
+ "Return": buildReturnNode,
755
+ "Yield": buildYieldNode,
756
+ "YieldFrom": buildYieldFromNode,
757
+ "Expr": buildExprOnlyNode,
758
+ "UnaryOp": buildUnaryOpNode,
759
+ "BinOp": buildBinaryOpNode,
760
+ "Repr": buildReprNode,
761
+ "AugAssign": buildInplaceAssignNode,
762
+ "IfExp": buildConditionalExpressionNode,
763
+ "Break": buildStatementLoopBreak,
764
+ "JoinedStr": buildJoinedStrNode,
765
+ "FormattedValue": buildFormattedValueNode,
766
+ "NamedExpr": buildNamedExprNode,
767
+ "Slice": buildSliceNode,
768
+ "Match": buildMatchNode,
769
+ "TypeAlias": buildTypeAliasNode,
770
+ },
771
+ path_args2={
772
+ "Constant": buildNamedConstantNode, # Python3.8
773
+ "NameConstant": buildNamedConstantNode, # Python3.8 or below
774
+ "Str": buildStringNode,
775
+ "Num": buildNumberNode,
776
+ "Bytes": buildBytesNode,
777
+ "Continue": buildStatementLoopContinue,
778
+ "TypeVar": buildTypeVarNode,
779
+ },
780
+ path_args1={"Ellipsis": buildEllipsisNode},
781
+ )
782
+
783
+
784
+ def buildParseTree(provider, ast_tree, source_ref, is_main):
785
+ # There are a bunch of branches here, mostly to deal with version
786
+ # differences for module default variables.
787
+
788
+ # Maybe one day, we do exec inlining again, that is what this is for,
789
+ # then is_module won't be True, for now it always is.
790
+ pushFutureSpec(provider.getFullName())
791
+ provider.setFutureSpec(getFutureSpec())
792
+
793
+ body, doc = extractDocFromBody(ast_tree)
794
+
795
+ if is_main and python_version >= 0x360:
796
+ provider.markAsNeedsAnnotationsDictionary()
797
+
798
+ try:
799
+ result = buildStatementsNode(
800
+ provider=provider, nodes=body, source_ref=source_ref
801
+ )
802
+ except RuntimeError as e:
803
+ if "maximum recursion depth" in e.args[0]:
804
+ raise CodeTooComplexCode(
805
+ provider.getFullName(), provider.getCompileTimeFilename()
806
+ )
807
+
808
+ # After building, we can verify that all future statements were where they
809
+ # belong, namely at the start of the module.
810
+ checkFutureImportsOnlyAtStart(body)
811
+
812
+ internal_source_ref = source_ref.atInternal()
813
+
814
+ statements = []
815
+
816
+ # Add import of "site" module of main programs visibly in the node tree,
817
+ # so recursion and optimization can pick it up, checking its effects.
818
+ if is_main and not hasPythonFlagNoSite():
819
+ statements.append(
820
+ StatementExpressionOnly(
821
+ expression=makeExpressionImportModuleFixed(
822
+ using_module_name=provider.getParentModule().getFullName(),
823
+ module_name="site",
824
+ value_name="site",
825
+ source_ref=source_ref,
826
+ ),
827
+ source_ref=source_ref,
828
+ )
829
+ )
830
+
831
+ for path_imported_name in getPthImportedPackages():
832
+ if isHardModuleWithoutSideEffect(path_imported_name):
833
+ continue
834
+
835
+ statements.append(
836
+ StatementExpressionOnly(
837
+ expression=makeExpressionImportModuleFixed(
838
+ using_module_name=provider.getParentModule().getFullName(),
839
+ module_name=path_imported_name,
840
+ value_name=path_imported_name.getTopLevelPackageName(),
841
+ source_ref=source_ref,
842
+ ),
843
+ source_ref=source_ref,
844
+ )
845
+ )
846
+
847
+ statements.append(
848
+ StatementAssignmentVariableName(
849
+ provider=provider,
850
+ variable_name="__doc__",
851
+ source=makeConstantRefNode(
852
+ constant=doc, source_ref=internal_source_ref, user_provided=True
853
+ ),
854
+ source_ref=internal_source_ref,
855
+ )
856
+ )
857
+
858
+ statements.append(
859
+ StatementAssignmentVariableName(
860
+ provider=provider,
861
+ variable_name="__file__",
862
+ source=ExpressionModuleAttributeFileRef(
863
+ variable=provider.getVariableForReference("__file__"),
864
+ source_ref=internal_source_ref,
865
+ ),
866
+ source_ref=internal_source_ref,
867
+ )
868
+ )
869
+
870
+ if provider.isCompiledPythonPackage():
871
+ # This assigns "__path__" value.
872
+ statements.append(createPathAssignment(provider, internal_source_ref))
873
+
874
+ if python_version >= 0x300 and not is_main:
875
+ statements += (
876
+ StatementAssignmentAttribute(
877
+ expression=ExpressionModuleAttributeSpecRef(
878
+ variable=provider.getVariableForReference("__spec__"),
879
+ source_ref=internal_source_ref,
880
+ ),
881
+ attribute_name="origin",
882
+ source=ExpressionModuleAttributeFileRef(
883
+ variable=provider.getVariableForReference("__file__"),
884
+ source_ref=internal_source_ref,
885
+ ),
886
+ source_ref=internal_source_ref,
887
+ ),
888
+ StatementAssignmentAttribute(
889
+ expression=ExpressionModuleAttributeSpecRef(
890
+ variable=provider.getVariableForReference("__spec__"),
891
+ source_ref=internal_source_ref,
892
+ ),
893
+ attribute_name="has_location",
894
+ source=makeConstantRefNode(True, internal_source_ref),
895
+ source_ref=internal_source_ref,
896
+ ),
897
+ )
898
+
899
+ if provider.isCompiledPythonPackage():
900
+ statements.append(
901
+ StatementAssignmentAttribute(
902
+ expression=ExpressionModuleAttributeSpecRef(
903
+ variable=provider.getVariableForReference("__spec__"),
904
+ source_ref=internal_source_ref,
905
+ ),
906
+ attribute_name="submodule_search_locations",
907
+ source=ExpressionVariableNameRef(
908
+ provider=provider,
909
+ variable_name="__path__",
910
+ source_ref=internal_source_ref,
911
+ ),
912
+ source_ref=internal_source_ref,
913
+ )
914
+ )
915
+
916
+ if python_version >= 0x300:
917
+ statements.append(
918
+ StatementAssignmentVariableName(
919
+ provider=provider,
920
+ variable_name="__cached__",
921
+ source=ExpressionConstantNoneRef(source_ref=internal_source_ref),
922
+ source_ref=internal_source_ref,
923
+ )
924
+ )
925
+
926
+ if provider.needsAnnotationsDictionary():
927
+ # Set "__annotations__" on module level to {}
928
+ statements.append(
929
+ StatementAssignmentVariableName(
930
+ provider=provider,
931
+ variable_name="__annotations__",
932
+ source=makeConstantRefNode(
933
+ constant={}, source_ref=internal_source_ref, user_provided=True
934
+ ),
935
+ source_ref=internal_source_ref,
936
+ )
937
+ )
938
+
939
+ # Now the module body if there is any at all.
940
+ if result is not None:
941
+ statements.extend(result.subnode_statements)
942
+
943
+ result = makeModuleFrame(
944
+ module=provider, statements=statements, source_ref=source_ref
945
+ )
946
+
947
+ popFutureSpec()
948
+
949
+ return result
950
+
951
+
952
+ def decideCompilationMode(is_top, module_name, module_filename, for_pgo):
953
+ """Decide the compilation mode for a module.
954
+
955
+ module_name - The module to decide compilation mode for.
956
+ for_pgo - consider PGO information or not
957
+ """
958
+
959
+ is_stdlib = module_filename is not None and isStandardLibraryPath(module_filename)
960
+
961
+ # Technically required modules must be bytecode, do not even ask plugins
962
+ # about it.
963
+ if is_stdlib and module_name in detectEarlyImports():
964
+ return "bytecode"
965
+
966
+ result = Plugins.decideCompilation(module_name)
967
+
968
+ # Cannot change mode of "__main__" to bytecode, that is not going to work
969
+ # currently, maybe in the future we could allow it.
970
+ if result == "bytecode" and is_top:
971
+ plugins_logger.warning(
972
+ """\
973
+ Ignoring plugin decision to compile top level package '%s' \
974
+ as bytecode, the extension module entry point is technically \
975
+ required to compiled."""
976
+ % module_name
977
+ )
978
+ result = "compiled"
979
+
980
+ # Include all of standard library as bytecode, for now. We need to identify
981
+ # which ones really need that.
982
+ if not is_top and is_stdlib and result is None:
983
+ result = "bytecode"
984
+
985
+ # Plugins need to win over PGO, as they might know it better
986
+ if result is None and not for_pgo:
987
+ result = decideCompilationFromPGO(module_name=module_name)
988
+
989
+ # Default if neither plugins nor PGO have expressed an opinion
990
+ if result is None:
991
+ if is_stdlib and module_name in detectStdlibAutoInclusionModules():
992
+ result = "bytecode"
993
+ else:
994
+ result = "compiled"
995
+
996
+ return result
997
+
998
+
999
+ def _loadUncompiledModuleFromCache(
1000
+ module_name, reason, is_package, source_code, source_ref
1001
+ ):
1002
+ result = makeUncompiledPythonModule(
1003
+ module_name=module_name,
1004
+ reason=reason,
1005
+ filename=source_ref.getFilename(),
1006
+ bytecode=demoteSourceCodeToBytecode(
1007
+ module_name=module_name,
1008
+ source_code=source_code,
1009
+ filename=source_ref.getFilename(),
1010
+ ),
1011
+ technical=module_name in detectEarlyImports(),
1012
+ is_package=is_package,
1013
+ )
1014
+
1015
+ used_modules = OrderedSet()
1016
+
1017
+ used_modules, timing_info = getCachedImportedModuleUsageAttempts(
1018
+ module_name=module_name, source_code=source_code, source_ref=source_ref
1019
+ )
1020
+
1021
+ result.setUsedModules(used_modules)
1022
+
1023
+ ModuleRegistry.setModuleOptimizationTimingInfos(module_name, timing_info)
1024
+
1025
+ return result
1026
+
1027
+
1028
+ def _createModule(
1029
+ module_name,
1030
+ module_filename,
1031
+ module_kind,
1032
+ reason,
1033
+ source_code,
1034
+ source_ref,
1035
+ is_namespace,
1036
+ is_package,
1037
+ is_top,
1038
+ is_main,
1039
+ main_added,
1040
+ ):
1041
+ is_stdlib = module_filename is not None and isStandardLibraryPath(module_filename)
1042
+
1043
+ if module_kind == "extension":
1044
+ result = PythonExtensionModule(
1045
+ module_name=module_name,
1046
+ module_filename=module_filename,
1047
+ reason=reason,
1048
+ technical=is_stdlib and module_name in detectEarlyImports(),
1049
+ source_ref=source_ref,
1050
+ )
1051
+ elif is_main:
1052
+ assert reason == "main", reason
1053
+
1054
+ result = PythonMainModule(
1055
+ main_added=main_added,
1056
+ module_name=module_name,
1057
+ mode=decideCompilationMode(
1058
+ is_top=is_top,
1059
+ module_name=module_name,
1060
+ module_filename=module_filename,
1061
+ for_pgo=False,
1062
+ ),
1063
+ future_spec=None,
1064
+ source_ref=source_ref,
1065
+ )
1066
+
1067
+ checkPythonVersionFromCode(source_code)
1068
+ elif is_namespace:
1069
+ result = createNamespacePackage(
1070
+ module_name=module_name,
1071
+ reason=reason,
1072
+ is_top=is_top,
1073
+ source_ref=source_ref,
1074
+ )
1075
+ else:
1076
+ mode = decideCompilationMode(
1077
+ is_top=is_top,
1078
+ module_name=module_name,
1079
+ module_filename=module_filename,
1080
+ for_pgo=False,
1081
+ )
1082
+
1083
+ if (
1084
+ mode == "bytecode"
1085
+ and not is_top
1086
+ and not shallDisableBytecodeCacheUsage()
1087
+ and hasCachedImportedModuleUsageAttempts(
1088
+ module_name=module_name, source_code=source_code, source_ref=source_ref
1089
+ )
1090
+ ):
1091
+ result = _loadUncompiledModuleFromCache(
1092
+ module_name=module_name,
1093
+ reason=reason,
1094
+ is_package=is_package,
1095
+ source_code=source_code,
1096
+ source_ref=source_ref,
1097
+ )
1098
+
1099
+ # Not used anymore
1100
+ source_code = None
1101
+ else:
1102
+ if is_package:
1103
+ result = CompiledPythonPackage(
1104
+ module_name=module_name,
1105
+ reason=reason,
1106
+ is_top=is_top,
1107
+ mode=mode,
1108
+ future_spec=None,
1109
+ source_ref=source_ref,
1110
+ )
1111
+ else:
1112
+ result = CompiledPythonModule(
1113
+ module_name=module_name,
1114
+ reason=reason,
1115
+ is_top=is_top,
1116
+ mode=mode,
1117
+ future_spec=None,
1118
+ source_ref=source_ref,
1119
+ )
1120
+
1121
+ return result
1122
+
1123
+
1124
+ def createModuleTree(module, source_ref, ast_tree, is_main):
1125
+ if isShowMemory():
1126
+ memory_watch = MemoryUsage.MemoryWatch()
1127
+
1128
+ module_body = buildParseTree(
1129
+ provider=module,
1130
+ ast_tree=ast_tree,
1131
+ source_ref=source_ref,
1132
+ is_main=is_main,
1133
+ )
1134
+
1135
+ if module_body.isStatementsFrame():
1136
+ module_body = makeStatementsSequenceFromStatement(statement=module_body)
1137
+
1138
+ module.setChildBody(module_body)
1139
+
1140
+ completeVariableClosures(module)
1141
+
1142
+ if isShowMemory():
1143
+ memory_watch.finish(
1144
+ "Memory usage changed loading module '%s'" % module.getFullName()
1145
+ )
1146
+
1147
+
1148
+ def buildMainModuleTree(source_code):
1149
+ # Detect to be frozen modules if any, so we can consider to not follow
1150
+ # to them.
1151
+
1152
+ filename = getMainEntryPointFilenames()[0]
1153
+
1154
+ if shallMakeModule():
1155
+ module_name = Importing.getModuleNameAndKindFromFilename(filename)[0]
1156
+
1157
+ if module_name is None:
1158
+ general.sysexit(
1159
+ "Error, filename '%s' suffix does not appear to be Python module code."
1160
+ % filename
1161
+ )
1162
+ else:
1163
+ # TODO: Doesn't work for deeply nested packages at all.
1164
+ if hasPythonFlagPackageMode():
1165
+ module_name = ModuleName(os.path.basename(filename) + ".__main__")
1166
+ else:
1167
+ module_name = ModuleName("__main__")
1168
+
1169
+ module = buildModule(
1170
+ module_name=module_name,
1171
+ reason="main",
1172
+ module_filename=filename,
1173
+ source_code=source_code,
1174
+ is_top=True,
1175
+ is_main=not shallMakeModule(),
1176
+ module_kind="py",
1177
+ is_fake=source_code is not None,
1178
+ hide_syntax_error=False,
1179
+ )
1180
+
1181
+ if isStandaloneMode():
1182
+ module.setStandardLibraryModules(
1183
+ early_module_names=detectEarlyImports(),
1184
+ stdlib_modules_names=detectStdlibAutoInclusionModules(),
1185
+ )
1186
+
1187
+ # Main modules do not get added to the import cache, but plugins get to see it.
1188
+ if module.isMainModule():
1189
+ Plugins.onModuleDiscovered(module)
1190
+ else:
1191
+ addImportedModule(imported_module=module)
1192
+
1193
+ return module
1194
+
1195
+
1196
+ def _makeModuleBodyFromSyntaxError(exc, module_name, reason, module_filename):
1197
+ if module_filename not in Importing.warned_about:
1198
+ Importing.warned_about.add(module_filename)
1199
+
1200
+ recursion_logger.warning(
1201
+ """\
1202
+ Cannot follow import to module '%s' because of '%s'."""
1203
+ % (module_name, exc.__class__.__name__)
1204
+ )
1205
+
1206
+ source_ref = SourceCodeReferences.fromFilename(filename=module_filename)
1207
+
1208
+ module = CompiledPythonModule(
1209
+ module_name=module_name,
1210
+ reason=reason,
1211
+ is_top=False,
1212
+ mode="compiled",
1213
+ future_spec=FutureSpec(use_annotations=False),
1214
+ source_ref=source_ref,
1215
+ )
1216
+
1217
+ module_body = makeModuleFrame(
1218
+ module=module,
1219
+ statements=(
1220
+ makeRaiseExceptionStatementFromInstance(
1221
+ source_ref=source_ref, exception=exc
1222
+ ),
1223
+ ),
1224
+ source_ref=source_ref,
1225
+ )
1226
+
1227
+ module_body = makeStatementsSequenceFromStatement(statement=module_body)
1228
+ module.setChildBody(module_body)
1229
+
1230
+ return module
1231
+
1232
+
1233
+ def _makeModuleBodyTooComplex(
1234
+ module_name, reason, module_filename, source_code, is_package
1235
+ ):
1236
+ if module_filename not in Importing.warned_about:
1237
+ Importing.warned_about.add(module_filename)
1238
+
1239
+ # Known harmless case, not causing issues, lets not warn about it.
1240
+ # spell-checker: ignore sympy,numberfields
1241
+ if module_name != "sympy.polys.numberfields.resolvent_lookup":
1242
+ recursion_logger.info(
1243
+ """\
1244
+ Cannot compile module '%s' because its code is too complex, included as bytecode."""
1245
+ % module_name
1246
+ )
1247
+
1248
+ return makeUncompiledPythonModule(
1249
+ module_name=module_name,
1250
+ reason=reason,
1251
+ filename=module_filename,
1252
+ bytecode=marshal.dumps(
1253
+ compile(source_code, module_filename, "exec", dont_inherit=True)
1254
+ ),
1255
+ is_package=is_package,
1256
+ technical=module_name in detectEarlyImports(),
1257
+ )
1258
+
1259
+
1260
+ def buildModule(
1261
+ module_name,
1262
+ module_kind,
1263
+ module_filename,
1264
+ reason,
1265
+ source_code,
1266
+ is_top,
1267
+ is_main,
1268
+ is_fake,
1269
+ hide_syntax_error,
1270
+ ):
1271
+ # Many details to deal with,
1272
+ # pylint: disable=too-many-branches,too-many-locals,too-many-statements
1273
+ (
1274
+ main_added,
1275
+ is_package,
1276
+ is_namespace,
1277
+ source_ref,
1278
+ source_filename,
1279
+ ) = Importing.decideModuleSourceRef(
1280
+ filename=module_filename,
1281
+ module_name=module_name,
1282
+ is_main=is_main,
1283
+ is_fake=is_fake,
1284
+ logger=general,
1285
+ )
1286
+
1287
+ if hasPythonFlagPackageMode():
1288
+ if is_top and shallMakeModule():
1289
+ optimization_logger.warning(
1290
+ "Python flag -m (package_mode) has no effect in module mode, it's only for executables."
1291
+ )
1292
+ elif is_main and not main_added:
1293
+ optimization_logger.warning(
1294
+ "Python flag -m (package_mode) only works on packages with '__main__.py'."
1295
+ )
1296
+
1297
+ # Handle bytecode module case immediately.
1298
+ if module_kind == "pyc":
1299
+ return makeUncompiledPythonModule(
1300
+ module_name=module_name,
1301
+ reason=reason,
1302
+ filename=module_filename,
1303
+ bytecode=loadCodeObjectData(module_filename),
1304
+ is_package=is_package,
1305
+ technical=module_name in detectEarlyImports(),
1306
+ )
1307
+
1308
+ # Read source code if necessary. Might give a SyntaxError due to not being proper
1309
+ # encoded source.
1310
+ if source_filename is not None and not is_namespace and module_kind == "py":
1311
+ # For fake modules, source is provided directly.
1312
+ original_source_code = None
1313
+ contributing_plugins = ()
1314
+
1315
+ if source_code is None:
1316
+ try:
1317
+ (
1318
+ source_code,
1319
+ original_source_code,
1320
+ contributing_plugins,
1321
+ ) = readSourceCodeFromFilenameWithInformation(
1322
+ module_name=module_name, source_filename=source_filename
1323
+ )
1324
+ except SyntaxError as e:
1325
+ # Avoid hiding our own syntax errors.
1326
+ if not hasattr(e, "generated_by_nuitka"):
1327
+ raise
1328
+
1329
+ # Do not hide SyntaxError in main module.
1330
+ if not hide_syntax_error:
1331
+ raise
1332
+
1333
+ return _makeModuleBodyFromSyntaxError(
1334
+ exc=e,
1335
+ module_name=module_name,
1336
+ reason=reason,
1337
+ module_filename=module_filename,
1338
+ )
1339
+
1340
+ try:
1341
+ with withNoSyntaxWarning():
1342
+ ast_tree = parseSourceCodeToAst(
1343
+ source_code=source_code,
1344
+ module_name=module_name,
1345
+ filename=source_filename,
1346
+ line_offset=0,
1347
+ )
1348
+ except (SyntaxError, IndentationError) as e:
1349
+ # Do not hide SyntaxError if asked not to.
1350
+ if not hide_syntax_error:
1351
+ raise
1352
+
1353
+ if original_source_code is not None:
1354
+ try:
1355
+ parseSourceCodeToAst(
1356
+ source_code=original_source_code,
1357
+ module_name=module_name,
1358
+ filename=source_filename,
1359
+ line_offset=0,
1360
+ )
1361
+ except (SyntaxError, IndentationError):
1362
+ # Also an exception without the plugins, that is OK
1363
+ pass
1364
+ else:
1365
+ source_diff = getSourceCodeDiff(original_source_code, source_code)
1366
+
1367
+ for line in source_diff:
1368
+ plugins_logger.warning(line, keep_format=True)
1369
+
1370
+ if len(contributing_plugins) == 1:
1371
+ next(iter(contributing_plugins)).sysexit(
1372
+ "Making changes to '%s' that cause SyntaxError '%s'"
1373
+ % (module_name, e)
1374
+ )
1375
+ else:
1376
+ plugins_logger.sysexit(
1377
+ "One of the plugins '%s' is making changes to '%s' that cause SyntaxError '%s'"
1378
+ % (",".join(contributing_plugins), module_name, e)
1379
+ )
1380
+
1381
+ return _makeModuleBodyFromSyntaxError(
1382
+ exc=e,
1383
+ module_name=module_name,
1384
+ reason=reason,
1385
+ module_filename=module_filename,
1386
+ )
1387
+ except CodeTooComplexCode:
1388
+ # Do not hide CodeTooComplexCode in main module.
1389
+ if is_main:
1390
+ raise
1391
+
1392
+ return _makeModuleBodyTooComplex(
1393
+ module_name=module_name,
1394
+ reason=reason,
1395
+ module_filename=module_filename,
1396
+ source_code=source_code,
1397
+ is_package=is_package,
1398
+ )
1399
+ else:
1400
+ ast_tree = None
1401
+ source_code = None
1402
+
1403
+ module = _createModule(
1404
+ module_name=module_name,
1405
+ module_filename=None if is_fake else module_filename,
1406
+ module_kind=module_kind,
1407
+ reason=reason,
1408
+ source_code=source_code,
1409
+ source_ref=source_ref,
1410
+ is_top=is_top,
1411
+ is_main=is_main,
1412
+ is_namespace=is_namespace,
1413
+ is_package=is_package,
1414
+ main_added=main_added,
1415
+ )
1416
+
1417
+ if is_top:
1418
+ ModuleRegistry.addRootModule(module)
1419
+
1420
+ OutputDirectories.setMainModule(module)
1421
+
1422
+ if module.isCompiledPythonModule() and source_code is not None:
1423
+ try:
1424
+ createModuleTree(
1425
+ module=module,
1426
+ source_ref=source_ref,
1427
+ ast_tree=ast_tree,
1428
+ is_main=is_main,
1429
+ )
1430
+ except CodeTooComplexCode:
1431
+ # Do not hide CodeTooComplexCode in main module.
1432
+ if is_main or is_top:
1433
+ raise
1434
+
1435
+ return _makeModuleBodyTooComplex(
1436
+ module_name=module_name,
1437
+ reason=reason,
1438
+ module_filename=module_filename,
1439
+ source_code=source_code,
1440
+ is_package=is_package,
1441
+ )
1442
+
1443
+ return module
1444
+
1445
+
1446
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1447
+ # integrates with CPython, but also works on its own.
1448
+ #
1449
+ # Licensed under the Apache License, Version 2.0 (the "License");
1450
+ # you may not use this file except in compliance with the License.
1451
+ # You may obtain a copy of the License at
1452
+ #
1453
+ # http://www.apache.org/licenses/LICENSE-2.0
1454
+ #
1455
+ # Unless required by applicable law or agreed to in writing, software
1456
+ # distributed under the License is distributed on an "AS IS" BASIS,
1457
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1458
+ # See the License for the specific language governing permissions and
1459
+ # limitations under the License.