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,1177 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Assignment related nodes.
5
+
6
+ The most simple assignment statement ``a = b`` is what we have here. All others
7
+ are either re-formulated using temporary variables, e.g. ``a, b = c`` or are
8
+ attribute, slice, subscript assignments.
9
+
10
+ The deletion is a separate node unlike in CPython where assigning to ``NULL`` is
11
+ internally what deletion is. But deleting is something entirely different to us
12
+ during code generation, which is why we keep them separate.
13
+
14
+ Tracing assignments in SSA form is the core of optimization for which we use
15
+ the traces.
16
+
17
+ """
18
+
19
+ from abc import abstractmethod
20
+
21
+ from nuitka.ModuleRegistry import getOwnerFromCodeName
22
+ from nuitka.Options import isExperimental
23
+
24
+ from .ConstantRefNodes import makeConstantRefNode
25
+ from .NodeMakingHelpers import (
26
+ makeStatementExpressionOnlyReplacementNode,
27
+ makeStatementsSequenceReplacementNode,
28
+ )
29
+ from .shapes.ControlFlowDescriptions import (
30
+ ControlFlowDescriptionElementBasedEscape,
31
+ ControlFlowDescriptionFullEscape,
32
+ ControlFlowDescriptionNoEscape,
33
+ )
34
+ from .shapes.IteratorShapes import tshape_iterator
35
+ from .shapes.StandardShapes import tshape_unknown
36
+ from .StatementBasesGenerated import (
37
+ StatementAssignmentVariableConstantImmutableBase,
38
+ StatementAssignmentVariableConstantMutableBase,
39
+ StatementAssignmentVariableFromTempVariableBase,
40
+ StatementAssignmentVariableFromVariableBase,
41
+ StatementAssignmentVariableGenericBase,
42
+ StatementAssignmentVariableHardValueBase,
43
+ StatementAssignmentVariableIteratorBase,
44
+ )
45
+ from .VariableDelNodes import makeStatementDelVariable
46
+ from .VariableRefNodes import ExpressionTempVariableRef
47
+
48
+
49
+ class StatementAssignmentVariableMixin(object):
50
+ """Assignment to a variable from an expression.
51
+
52
+ All assignment forms that are not to attributes, slices, subscripts
53
+ use this.
54
+
55
+ The source might be a complex expression. The target can be any kind
56
+ of variable, temporary, local, global, etc.
57
+
58
+ Assigning a variable is something we trace in a new version, this is
59
+ hidden behind target variable reference, which has this version once
60
+ it can be determined.
61
+ """
62
+
63
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
64
+ __slots__ = ()
65
+
66
+ @staticmethod
67
+ def isStatementAssignmentVariable():
68
+ return True
69
+
70
+ def finalize(self):
71
+ del self.variable
72
+ del self.variable_trace
73
+ self.subnode_source.finalize()
74
+ del self.subnode_source
75
+
76
+ def getDetailsForDisplay(self):
77
+ return {
78
+ "variable_name": self.getVariableName(),
79
+ "is_temp": self.variable.isTempVariable(),
80
+ "var_type": self.variable.getVariableType(),
81
+ "owner": self.variable.getOwner().getCodeName(),
82
+ }
83
+
84
+ @classmethod
85
+ def fromXML(cls, provider, source_ref, **args):
86
+ # Virtual method overload, pylint: disable=unused-argument
87
+ owner = getOwnerFromCodeName(args["owner"])
88
+
89
+ if args["is_temp"] == "True":
90
+ variable = owner.createTempVariable(
91
+ args["variable_name"], temp_type=["var_type"]
92
+ )
93
+ else:
94
+ variable = owner.getProvidedVariable(args["variable_name"])
95
+
96
+ del args["is_temp"]
97
+ del args["var_type"]
98
+ del args["owner"]
99
+
100
+ version = variable.allocateTargetNumber()
101
+
102
+ return cls(variable=variable, version=version, source_ref=source_ref, **args)
103
+
104
+ def makeClone(self):
105
+ version = self.variable.allocateTargetNumber()
106
+
107
+ return self.__class__(
108
+ source=self.subnode_source.makeClone(),
109
+ variable=self.variable,
110
+ variable_version=version,
111
+ source_ref=self.source_ref,
112
+ )
113
+
114
+ def getVariableName(self):
115
+ return self.variable.getName()
116
+
117
+ def getVariable(self):
118
+ return self.variable
119
+
120
+ def setVariable(self, variable):
121
+ self.variable = variable
122
+ self.variable_version = variable.allocateTargetNumber()
123
+
124
+ def getVariableTrace(self):
125
+ return self.variable_trace
126
+
127
+ def markAsInplaceSuspect(self):
128
+ self.inplace_suspect = True
129
+
130
+ def isInplaceSuspect(self):
131
+ return self.inplace_suspect
132
+
133
+ def removeMarkAsInplaceSuspect(self):
134
+ self.inplace_suspect = False
135
+
136
+ def mayRaiseException(self, exception_type):
137
+ return self.subnode_source.mayRaiseException(exception_type)
138
+
139
+ def needsReleasePreviousValue(self):
140
+ previous = self.variable_trace.getPrevious()
141
+
142
+ if previous.mustNotHaveValue():
143
+ return False
144
+ elif previous.mustHaveValue():
145
+ return True
146
+ else:
147
+ return None
148
+
149
+ @staticmethod
150
+ def getStatementNiceName():
151
+ return "variable assignment statement"
152
+
153
+ def getTypeShape(self):
154
+ # Might be finalized, e.g. due to being dead code.
155
+ try:
156
+ source = self.subnode_source
157
+ except AttributeError:
158
+ return tshape_unknown
159
+
160
+ return source.getTypeShape()
161
+
162
+ @staticmethod
163
+ def mayHaveSideEffects():
164
+ # TODO: May execute "__del__" code, it would be sweet to be able to predict
165
+ # if another reference will still be active for a value though, or if there
166
+ # is such a code for the type shape.
167
+ return True
168
+
169
+ def _considerSpecialization(self, old_source, source):
170
+ if source.isCompileTimeConstant():
171
+ result = makeStatementAssignmentVariableConstant(
172
+ source=source,
173
+ variable=self.variable,
174
+ variable_version=self.variable_version,
175
+ very_trusted=old_source.isExpressionImportName(),
176
+ source_ref=self.source_ref,
177
+ )
178
+
179
+ return (
180
+ result,
181
+ "new_statements",
182
+ "Assignment source of '%s' is now compile time constant."
183
+ % self.getVariableName(),
184
+ )
185
+
186
+ if source.isExpressionVariableRef():
187
+ result = StatementAssignmentVariableFromVariable(
188
+ source=source,
189
+ variable=self.variable,
190
+ variable_version=self.variable_version,
191
+ source_ref=self.source_ref,
192
+ )
193
+
194
+ return (
195
+ result,
196
+ "new_statements",
197
+ "Assignment source is now variable reference.",
198
+ )
199
+
200
+ if source.isExpressionTempVariableRef():
201
+ result = StatementAssignmentVariableFromTempVariable(
202
+ source=source,
203
+ variable=self.variable,
204
+ variable_version=self.variable_version,
205
+ source_ref=self.source_ref,
206
+ )
207
+
208
+ return (
209
+ result,
210
+ "new_statements",
211
+ "Assignment source is now temp variable reference.",
212
+ )
213
+
214
+ if source.getTypeShape().isShapeIterator():
215
+ result = StatementAssignmentVariableIterator(
216
+ source=source,
217
+ variable=self.variable,
218
+ variable_version=self.variable_version,
219
+ source_ref=self.source_ref,
220
+ )
221
+
222
+ return (
223
+ result,
224
+ "new_statements",
225
+ "Assignment source is now known to be iterator.",
226
+ )
227
+
228
+ if source.hasVeryTrustedValue():
229
+ result = StatementAssignmentVariableHardValue(
230
+ source=source,
231
+ variable=self.variable,
232
+ variable_version=self.variable_version,
233
+ source_ref=self.source_ref,
234
+ )
235
+
236
+ return (
237
+ result,
238
+ "new_statements",
239
+ "Assignment source is now known to be hard import.",
240
+ )
241
+
242
+ return self, None, None
243
+
244
+ def collectVariableAccesses(self, emit_read, emit_write):
245
+ emit_write(self.variable)
246
+ self.subnode_source.collectVariableAccesses(emit_read, emit_write)
247
+
248
+ @abstractmethod
249
+ def hasVeryTrustedValue(self):
250
+ """Does this assignment node have a very trusted value."""
251
+
252
+ @abstractmethod
253
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
254
+ """Set the value trace for the assignment form."""
255
+
256
+
257
+ class StatementAssignmentVariableGeneric(
258
+ StatementAssignmentVariableMixin, StatementAssignmentVariableGenericBase
259
+ ):
260
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_GENERIC"
261
+
262
+ named_children = ("source|setter",)
263
+ nice_children = ("assignment source",)
264
+ node_attributes = ("variable", "variable_version")
265
+ auto_compute_handling = "post_init"
266
+
267
+ __slots__ = (
268
+ "variable_trace",
269
+ # TODO: Does every variant have to care here
270
+ "inplace_suspect",
271
+ )
272
+
273
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
274
+
275
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
276
+ def postInitNode(self):
277
+ self.variable_trace = None
278
+ self.inplace_suspect = None
279
+
280
+ @staticmethod
281
+ def getReleaseEscape():
282
+ return ControlFlowDescriptionFullEscape
283
+
284
+ def computeStatement(self, trace_collection):
285
+ # TODO: Way too ugly to have global trace kinds just here, and needs to
286
+ # be abstracted somehow. But for now we let it live here.
287
+ old_source = self.subnode_source
288
+ variable = self.variable
289
+
290
+ if old_source.isExpressionSideEffects():
291
+ # If the assignment source has side effects, we can put them into a
292
+ # sequence and compute that instead.
293
+ statements = [
294
+ makeStatementExpressionOnlyReplacementNode(side_effect, self)
295
+ for side_effect in old_source.subnode_side_effects
296
+ ]
297
+
298
+ statements.append(self)
299
+
300
+ # Remember out parent, we will assign it for the sequence to use.
301
+ parent = self.parent
302
+
303
+ # Need to update ourselves to no longer reference the side effects,
304
+ # but go to the wrapped thing.
305
+ self.setChildSource(old_source.subnode_expression)
306
+
307
+ result = makeStatementsSequenceReplacementNode(
308
+ statements=statements, node=self
309
+ )
310
+ result.parent = parent
311
+
312
+ return (
313
+ result.computeStatementsSequence(trace_collection),
314
+ "new_statements",
315
+ """\
316
+ Side effects of assignments promoted to statements.""",
317
+ )
318
+
319
+ # Let assignment source may re-compute first.
320
+ source = trace_collection.onExpression(self.subnode_source)
321
+
322
+ # No assignment will occur, if the assignment source raises, so give up
323
+ # on this, and return it as the only side effect.
324
+ if source.willRaiseAnyException():
325
+ result = makeStatementExpressionOnlyReplacementNode(
326
+ expression=source, node=self
327
+ )
328
+
329
+ del self.parent
330
+
331
+ return (
332
+ result,
333
+ "new_raise",
334
+ """\
335
+ Assignment raises exception in assigned value, removed assignment.""",
336
+ )
337
+
338
+ # Assigning from and to the same variable, can be optimized away
339
+ # immediately, there is no point in doing it. Exceptions are of course
340
+ # module variables that collide with built-in names.
341
+
342
+ # TODO: The variable type checks ought to become unnecessary, as they
343
+ # are to be a feature of the trace. Assigning from known assigned is
344
+ # supposed to be possible to eliminate. If we get that wrong, we are
345
+ # doing it wrong.
346
+ if (
347
+ not variable.isModuleVariable()
348
+ and source.isExpressionVariableRef()
349
+ and source.getVariable() is variable
350
+ ):
351
+ # A variable access that has a side effect, must be preserved,
352
+ # so it can e.g. raise an exception, otherwise we can be fully
353
+ # removed.
354
+ if source.mayHaveSideEffects():
355
+ result = makeStatementExpressionOnlyReplacementNode(
356
+ expression=source, node=self
357
+ )
358
+
359
+ return (
360
+ result,
361
+ "new_statements",
362
+ """\
363
+ Lowered assignment of %s from itself to mere access of it."""
364
+ % variable.getDescription(),
365
+ )
366
+ else:
367
+ return (
368
+ None,
369
+ "new_statements",
370
+ """\
371
+ Removed assignment of %s from itself which is known to be defined."""
372
+ % variable.getDescription(),
373
+ )
374
+
375
+ if source is old_source:
376
+ result = self, None, None
377
+ else:
378
+ result = self._considerSpecialization(old_source, source)
379
+ result[0].parent = self.parent
380
+
381
+ result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
382
+
383
+ return result
384
+
385
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
386
+ # Set-up the trace to the trace collection, so future references will
387
+ # find this assignment.
388
+ self.variable_trace = trace_collection.onVariableSet(
389
+ variable=self.variable, version=self.variable_version, assign_node=self
390
+ )
391
+
392
+ # TODO: Determine from future use of assigned variable, if this is needed at all.
393
+ trace_collection.removeKnowledge(source)
394
+
395
+ def hasVeryTrustedValue(self):
396
+ """Does this assignment node have a very trusted value."""
397
+ return self.subnode_source.hasVeryTrustedValue()
398
+
399
+
400
+ class StatementAssignmentVariableIterator(
401
+ StatementAssignmentVariableMixin, StatementAssignmentVariableIteratorBase
402
+ ):
403
+ # Carries state for propagating iterators potentially.
404
+
405
+ # TODO: Maybe have a namedtuple with these intended for index replacement,
406
+ # they form once set of things pylint: disable=too-many-instance-attributes
407
+
408
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_ITERATOR"
409
+
410
+ named_children = ("source",)
411
+ nice_children = ("assignment source",)
412
+ node_attributes = ("variable", "variable_version")
413
+ auto_compute_handling = "post_init"
414
+
415
+ __slots__ = (
416
+ "variable_trace",
417
+ # TODO: Does every variant have to care here
418
+ "inplace_suspect",
419
+ "type_shape",
420
+ "temp_scope",
421
+ "tmp_iterated_variable",
422
+ "tmp_iteration_count_variable",
423
+ "tmp_iteration_next_variable",
424
+ "is_indexable",
425
+ )
426
+
427
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
428
+
429
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
430
+ def postInitNode(self):
431
+ self.variable_trace = None
432
+ self.inplace_suspect = None
433
+
434
+ # Have a valid start value, later this will become more specific.
435
+ self.type_shape = tshape_iterator
436
+
437
+ # For replacing with indexing potentially.
438
+ self.temp_scope = None
439
+ self.tmp_iterated_variable = None
440
+ self.tmp_iteration_count_variable = None
441
+ self.tmp_iteration_next_variable = None
442
+
443
+ # When found non-indexable, we do not try again.
444
+ self.is_indexable = None
445
+
446
+ def getTypeShape(self):
447
+ return self.type_shape
448
+
449
+ @staticmethod
450
+ def getReleaseEscape():
451
+ # TODO: For iteration over constants that wouldn't be necessary,
452
+ # but if we know the iteration well enough, it's supposed to be
453
+ # converted to something else anyway.
454
+ return ControlFlowDescriptionElementBasedEscape
455
+
456
+ def getIterationIndexDesc(self):
457
+ """For use in optimization outputs only, here and using nodes."""
458
+ return "'%s[%s]'" % (
459
+ self.tmp_iterated_variable.getName(),
460
+ self.tmp_iteration_count_variable.getName(),
461
+ )
462
+
463
+ def _replaceWithDirectAccess(self, trace_collection, provider):
464
+ self.temp_scope = provider.allocateTempScope("iterator_access")
465
+
466
+ self.tmp_iterated_variable = provider.allocateTempVariable(
467
+ temp_scope=self.temp_scope, name="iterated_value", temp_type="object"
468
+ )
469
+
470
+ reference_iterated = ExpressionTempVariableRef(
471
+ variable=self.tmp_iterated_variable,
472
+ source_ref=self.subnode_source.source_ref,
473
+ )
474
+
475
+ iterated_value = self.subnode_source.subnode_value
476
+
477
+ assign_iterated = makeStatementAssignmentVariable(
478
+ source=iterated_value,
479
+ variable=self.tmp_iterated_variable,
480
+ source_ref=iterated_value.source_ref,
481
+ )
482
+
483
+ self.tmp_iteration_count_variable = provider.allocateTempVariable(
484
+ temp_scope=self.temp_scope, name="iteration_count", temp_type="object"
485
+ )
486
+
487
+ assign_iteration_count = makeStatementAssignmentVariable(
488
+ source=makeConstantRefNode(constant=0, source_ref=self.source_ref),
489
+ variable=self.tmp_iteration_count_variable,
490
+ source_ref=iterated_value.source_ref,
491
+ )
492
+
493
+ # TODO: Unclear what node this really is right now, need to try out.
494
+ self.subnode_source.setChildValue(reference_iterated)
495
+
496
+ # Make sure variable trace is computed.
497
+ assign_iterated.computeStatement(trace_collection)
498
+ assign_iteration_count.computeStatement(trace_collection)
499
+ reference_iterated.computeExpressionRaw(trace_collection)
500
+
501
+ self.variable_trace = trace_collection.onVariableSet(
502
+ variable=self.variable,
503
+ version=self.variable_version,
504
+ assign_node=self,
505
+ )
506
+
507
+ # For use when the "next" is replaced.
508
+ self.tmp_iteration_next_variable = provider.allocateTempVariable(
509
+ temp_scope=self.temp_scope, name="next_value", temp_type="object"
510
+ )
511
+
512
+ result = makeStatementsSequenceReplacementNode(
513
+ (assign_iteration_count, assign_iterated, self), self
514
+ )
515
+
516
+ return (
517
+ result,
518
+ "new_statements",
519
+ lambda: "Enabling indexing of iterated value through %s."
520
+ % self.getIterationIndexDesc(),
521
+ )
522
+
523
+ def computeStatement(self, trace_collection):
524
+ # TODO: Way too ugly to have global trace kinds just here, and needs to
525
+ # be abstracted somehow. But for now we let it live here.
526
+ source = self.subnode_source
527
+ variable = self.variable
528
+
529
+ provider = trace_collection.getOwner()
530
+
531
+ # Let assignment source may re-compute first.
532
+ source = trace_collection.onExpression(self.subnode_source)
533
+
534
+ if (
535
+ self.tmp_iterated_variable is None
536
+ and self.is_indexable is None
537
+ and source.isExpressionBuiltinIterForUnpack()
538
+ and isExperimental("iterator-optimization")
539
+ ):
540
+ if variable.hasAccessesOutsideOf(provider) is False:
541
+ last_trace = variable.getMatchingUnescapedAssignTrace(self)
542
+
543
+ if last_trace is not None:
544
+ # Might not be allowed, remember if it's not allowed, otherwise retry.
545
+ self.is_indexable = (
546
+ source.subnode_value.getTypeShape().hasShapeIndexLookup()
547
+ )
548
+
549
+ if self.is_indexable:
550
+ return self._replaceWithDirectAccess(
551
+ trace_collection=trace_collection, provider=provider
552
+ )
553
+
554
+ # No assignment will occur, if the assignment source raises, so give up
555
+ # on this, and return it as the only side effect.
556
+ if source.willRaiseAnyException():
557
+ result = makeStatementExpressionOnlyReplacementNode(
558
+ expression=source, node=self
559
+ )
560
+
561
+ del self.parent
562
+
563
+ return (
564
+ result,
565
+ "new_raise",
566
+ """\
567
+ Assignment raises exception in assigned value, removed assignment.""",
568
+ )
569
+
570
+ self.type_shape = source.getTypeShape()
571
+
572
+ # Set-up the trace to the trace collection, so future references will
573
+ # find this assignment.
574
+ # Note: Keep this aligned with computeStatementAssignmentTraceUpdate
575
+ self.variable_trace = trace_collection.onVariableSet(
576
+ variable=variable, version=self.variable_version, assign_node=self
577
+ )
578
+
579
+ return self, None, None
580
+
581
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
582
+ self.variable_trace = trace_collection.onVariableSet(
583
+ variable=self.variable, version=self.variable_version, assign_node=self
584
+ )
585
+
586
+ @staticmethod
587
+ def hasVeryTrustedValue():
588
+ """Does this assignment node have a very trusted value."""
589
+ return False
590
+
591
+
592
+ class StatementAssignmentVariableConstantMutable(
593
+ StatementAssignmentVariableMixin, StatementAssignmentVariableConstantMutableBase
594
+ ):
595
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_MUTABLE"
596
+
597
+ named_children = ("source",)
598
+ nice_children = ("assignment source",)
599
+ node_attributes = ("variable", "variable_version")
600
+ auto_compute_handling = "post_init"
601
+
602
+ __slots__ = (
603
+ "variable_trace",
604
+ # TODO: Does every variant have to care here
605
+ "inplace_suspect",
606
+ )
607
+
608
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
609
+
610
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
611
+ def postInitNode(self):
612
+ self.variable_trace = None
613
+ self.inplace_suspect = None
614
+
615
+ @staticmethod
616
+ def mayRaiseException(exception_type):
617
+ return False
618
+
619
+ @staticmethod
620
+ def getReleaseEscape():
621
+ return ControlFlowDescriptionNoEscape
622
+
623
+ def computeStatement(self, trace_collection):
624
+ variable = self.variable
625
+
626
+ # Set-up the trace to the trace collection, so future references will
627
+ # find this assignment.
628
+ # Note: Keep this aligned with computeStatementAssignmentTraceUpdate
629
+ self.variable_trace = trace_collection.onVariableSet(
630
+ variable=variable, version=self.variable_version, assign_node=self
631
+ )
632
+
633
+ provider = trace_collection.getOwner()
634
+
635
+ if variable.hasAccessesOutsideOf(provider) is False:
636
+ last_trace = variable.getMatchingAssignTrace(self)
637
+
638
+ if last_trace is not None and not last_trace.getMergeOrNameUsageCount():
639
+ if (
640
+ variable.isModuleVariable()
641
+ or variable.owner.locals_scope.isUnoptimizedFunctionScope()
642
+ ):
643
+ # TODO: We do not trust these yet a lot, but more might be
644
+ pass
645
+ else:
646
+ # Unused constants can be eliminated in any case.
647
+ if not last_trace.getUsageCount():
648
+ if not last_trace.getPrevious().isUnassignedTrace():
649
+ result = makeStatementDelVariable(
650
+ variable=self.variable,
651
+ version=self.variable_version,
652
+ tolerant=True,
653
+ source_ref=self.source_ref,
654
+ )
655
+ else:
656
+ result = None
657
+
658
+ return (
659
+ result,
660
+ "new_statements",
661
+ "Dropped dead assignment statement to '%s'."
662
+ % (self.getVariableName()),
663
+ )
664
+
665
+ # Can safely forward propagate only non-mutable constants.
666
+
667
+ return self, None, None
668
+
669
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
670
+ self.variable_trace = trace_collection.onVariableSet(
671
+ variable=self.variable, version=self.variable_version, assign_node=self
672
+ )
673
+
674
+ @staticmethod
675
+ def hasVeryTrustedValue():
676
+ """Does this assignment node have a very trusted value."""
677
+ return False
678
+
679
+
680
+ class StatementAssignmentVariableConstantImmutable(
681
+ StatementAssignmentVariableMixin, StatementAssignmentVariableConstantImmutableBase
682
+ ):
683
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_IMMUTABLE"
684
+
685
+ named_children = ("source",)
686
+ nice_children = ("assignment source",)
687
+ node_attributes = ("variable", "variable_version")
688
+ auto_compute_handling = "post_init"
689
+
690
+ __slots__ = (
691
+ "variable_trace",
692
+ # TODO: Does every variant have to care here
693
+ "inplace_suspect",
694
+ )
695
+
696
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
697
+
698
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
699
+ def postInitNode(self):
700
+ self.variable_trace = None
701
+ self.inplace_suspect = None
702
+
703
+ @staticmethod
704
+ def mayRaiseException(exception_type):
705
+ return False
706
+
707
+ @staticmethod
708
+ def getReleaseEscape():
709
+ return ControlFlowDescriptionNoEscape
710
+
711
+ def computeStatement(self, trace_collection):
712
+ variable = self.variable
713
+
714
+ # Set-up the trace to the trace collection, so future references will
715
+ # find this assignment.
716
+ provider = trace_collection.getOwner()
717
+
718
+ if variable.hasAccessesOutsideOf(provider) is False:
719
+ last_trace = variable.getMatchingAssignTrace(self)
720
+
721
+ if last_trace is not None and not last_trace.getMergeOrNameUsageCount():
722
+ if (
723
+ variable.isModuleVariable()
724
+ or variable.owner.locals_scope.isUnoptimizedFunctionScope()
725
+ ):
726
+ # TODO: We do not trust these yet a lot, but more might be
727
+ pass
728
+ else:
729
+ # Unused constants can be eliminated in any case.
730
+ if not last_trace.getUsageCount():
731
+ if not last_trace.getPrevious().isUnassignedTrace():
732
+ return trace_collection.computedStatementResult(
733
+ statement=makeStatementDelVariable(
734
+ variable=self.variable,
735
+ version=self.variable_version,
736
+ tolerant=True,
737
+ source_ref=self.source_ref,
738
+ ),
739
+ change_tags="new_statements",
740
+ change_desc="Lowered dead assignment statement to '%s' to previous value 'del'."
741
+ % self.getVariableName(),
742
+ )
743
+ else:
744
+ return (
745
+ None,
746
+ "new_statements",
747
+ "Dropped dead assignment statement to '%s'."
748
+ % (self.getVariableName()),
749
+ )
750
+
751
+ # Still trace or assignment, for the last time. TODO: Maybe this can be
752
+ # used for the keeping of the "replacement node" as well.
753
+ self.variable_trace = trace_collection.onVariableSetToUnescapablePropagatedValue(
754
+ variable=variable,
755
+ version=self.variable_version,
756
+ assign_node=self,
757
+ replacement=lambda _replaced_node: self.subnode_source.makeClone(),
758
+ )
759
+
760
+ if not last_trace.getPrevious().isUnassignedTrace():
761
+ result = makeStatementDelVariable(
762
+ variable=self.variable,
763
+ version=self.variable_version,
764
+ tolerant=True,
765
+ source_ref=self.source_ref,
766
+ )
767
+ else:
768
+ result = None
769
+
770
+ return (
771
+ result,
772
+ "new_statements",
773
+ "Dropped propagated assignment statement to '%s'."
774
+ % self.getVariableName(),
775
+ )
776
+
777
+ # Note: Keep this aligned with computeStatementAssignmentTraceUpdate
778
+ self.variable_trace = trace_collection.onVariableSetToUnescapableValue(
779
+ variable=variable, version=self.variable_version, assign_node=self
780
+ )
781
+
782
+ return self, None, None
783
+
784
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
785
+ self.variable_trace = trace_collection.onVariableSetToUnescapableValue(
786
+ variable=self.variable, version=self.variable_version, assign_node=self
787
+ )
788
+
789
+ @staticmethod
790
+ def hasVeryTrustedValue():
791
+ """Does this assignment node have a very trusted value."""
792
+ return False
793
+
794
+
795
+ class StatementAssignmentVariableConstantMutableTrusted(
796
+ StatementAssignmentVariableConstantImmutable
797
+ ):
798
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_MUTABLE_TRUSTED"
799
+
800
+ @staticmethod
801
+ def hasVeryTrustedValue():
802
+ return False
803
+
804
+
805
+ class StatementAssignmentVariableConstantImmutableTrusted(
806
+ StatementAssignmentVariableConstantImmutable
807
+ ):
808
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_IMMUTABLE_TRUSTED"
809
+
810
+ @staticmethod
811
+ def hasVeryTrustedValue():
812
+ return True
813
+
814
+
815
+ class StatementAssignmentVariableHardValue(
816
+ StatementAssignmentVariableMixin, StatementAssignmentVariableHardValueBase
817
+ ):
818
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_HARD_VALUE"
819
+
820
+ named_children = ("source",)
821
+ nice_children = ("assignment source",)
822
+ node_attributes = ("variable", "variable_version")
823
+ auto_compute_handling = "post_init"
824
+
825
+ __slots__ = (
826
+ "variable_trace",
827
+ # TODO: Does every variant have to care here
828
+ "inplace_suspect",
829
+ )
830
+
831
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
832
+
833
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
834
+ def postInitNode(self):
835
+ self.variable_trace = None
836
+ self.inplace_suspect = None
837
+
838
+ @staticmethod
839
+ def getReleaseEscape():
840
+ return ControlFlowDescriptionNoEscape
841
+
842
+ def computeStatement(self, trace_collection):
843
+ # TODO: Way too ugly to have global trace kinds just here, and needs to
844
+ # be abstracted somehow. But for now we let it live here.
845
+ variable = self.variable
846
+
847
+ # Let assignment source may re-compute first.
848
+ source = trace_collection.onExpression(self.subnode_source)
849
+
850
+ # No assignment will occur, if the assignment source raises, so give up
851
+ # on this, and return it as the only side effect.
852
+ if source.willRaiseAnyException():
853
+ result = makeStatementExpressionOnlyReplacementNode(
854
+ expression=source, node=self
855
+ )
856
+
857
+ del self.parent
858
+
859
+ return (
860
+ result,
861
+ "new_raise",
862
+ """\
863
+ Assignment raises exception in assigned value, removed assignment.""",
864
+ )
865
+
866
+ # Note: Keep this aligned with computeStatementAssignmentTraceUpdate
867
+ self.variable_trace = trace_collection.onVariableSetToVeryTrustedValue(
868
+ variable=variable, version=self.variable_version, assign_node=self
869
+ )
870
+
871
+ return self, None, None
872
+
873
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
874
+ self.variable_trace = trace_collection.onVariableSetToVeryTrustedValue(
875
+ variable=self.variable, version=self.variable_version, assign_node=self
876
+ )
877
+
878
+ @staticmethod
879
+ def hasVeryTrustedValue():
880
+ """Does this assignment node have a very trusted value."""
881
+ return True
882
+
883
+
884
+ class StatementAssignmentVariableFromVariable(
885
+ StatementAssignmentVariableMixin, StatementAssignmentVariableFromVariableBase
886
+ ):
887
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_FROM_VARIABLE"
888
+
889
+ named_children = ("source",)
890
+ nice_children = ("assignment source",)
891
+ node_attributes = ("variable", "variable_version")
892
+ auto_compute_handling = "post_init"
893
+
894
+ __slots__ = (
895
+ "variable_trace",
896
+ # TODO: Does every variant have to care here
897
+ "inplace_suspect",
898
+ )
899
+
900
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
901
+
902
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
903
+ def postInitNode(self):
904
+ self.variable_trace = None
905
+ self.inplace_suspect = None
906
+
907
+ @staticmethod
908
+ def getReleaseEscape():
909
+ # TODO: Variable type may know better.
910
+ return ControlFlowDescriptionFullEscape
911
+
912
+ def computeStatement(self, trace_collection):
913
+ # TODO: Way too ugly to have global trace kinds just here, and needs to
914
+ # be abstracted somehow. But for now we let it live here.
915
+ old_source = self.subnode_source
916
+ variable = self.variable
917
+
918
+ # Assigning from and to the same variable, can be optimized away
919
+ # immediately, there is no point in doing it. Exceptions are of course
920
+ # module variables that collide with built-in names. TODO: In
921
+ # specialization this could be considered right away as its own node
922
+ # type, waiting for it to compute like this.
923
+ if not variable.isModuleVariable() and old_source.getVariable() is variable:
924
+ # A variable access that has a side effect, must be preserved,
925
+ # so it can e.g. raise an exception, otherwise we can be fully
926
+ # removed.
927
+ if old_source.mayHaveSideEffects():
928
+ result = makeStatementExpressionOnlyReplacementNode(
929
+ expression=old_source, node=self
930
+ )
931
+
932
+ result = trace_collection.onStatement(result)
933
+
934
+ return (
935
+ result,
936
+ "new_statements",
937
+ """\
938
+ Lowered assignment of %s from itself to mere access of it."""
939
+ % variable.getDescription(),
940
+ )
941
+ else:
942
+ return (
943
+ None,
944
+ "new_statements",
945
+ """\
946
+ Removed assignment of %s from itself which is known to be defined."""
947
+ % variable.getDescription(),
948
+ )
949
+
950
+ # Let assignment source may re-compute first.
951
+ source = trace_collection.onExpression(self.subnode_source)
952
+
953
+ if source is old_source:
954
+ result = self, None, None
955
+ else:
956
+ if source.willRaiseAnyException():
957
+ result = makeStatementExpressionOnlyReplacementNode(
958
+ expression=source, node=self
959
+ )
960
+
961
+ return (
962
+ result,
963
+ "new_raise",
964
+ """\
965
+ Assignment raises exception in assigned variable access, removed assignment.""",
966
+ )
967
+
968
+ result = self._considerSpecialization(old_source, source)
969
+ result[0].parent = self.parent
970
+
971
+ result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
972
+
973
+ return result
974
+
975
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
976
+ if source.isExpressionVariableRef():
977
+ self.variable_trace = trace_collection.onVariableSetAliasing(
978
+ variable=self.variable,
979
+ version=self.variable_version,
980
+ assign_node=self,
981
+ source=source,
982
+ )
983
+ else:
984
+ # Set-up the trace to the trace collection, so future references will
985
+ # find this assignment. TODO: We should for non-variables make sure we do
986
+ # always specialize, since this is no longer a variable once it was
987
+ # resolved.
988
+ self.variable_trace = trace_collection.onVariableSet(
989
+ variable=self.variable, version=self.variable_version, assign_node=self
990
+ )
991
+
992
+ # TODO: Determine from future use of assigned variable, if this is needed at all.
993
+ trace_collection.removeKnowledge(source)
994
+
995
+ @staticmethod
996
+ def hasVeryTrustedValue():
997
+ """Does this assignment node have a very trusted value."""
998
+ return False
999
+
1000
+
1001
+ class StatementAssignmentVariableFromTempVariable(
1002
+ StatementAssignmentVariableMixin, StatementAssignmentVariableFromTempVariableBase
1003
+ ):
1004
+ kind = "STATEMENT_ASSIGNMENT_VARIABLE_FROM_TEMP_VARIABLE"
1005
+
1006
+ named_children = ("source",)
1007
+ nice_children = ("assignment source",)
1008
+ node_attributes = ("variable", "variable_version")
1009
+ auto_compute_handling = "post_init"
1010
+
1011
+ __slots__ = (
1012
+ "variable_trace",
1013
+ # TODO: Does every variant have to care here
1014
+ "inplace_suspect",
1015
+ )
1016
+
1017
+ # False alarm due to post_init, pylint: disable=attribute-defined-outside-init
1018
+
1019
+ # TODO: Add parsing of node_attributes for init values, so we can avoid these too
1020
+ def postInitNode(self):
1021
+ self.variable_trace = None
1022
+ self.inplace_suspect = None
1023
+
1024
+ @staticmethod
1025
+ def getReleaseEscape():
1026
+ # TODO: Variable type may know better.
1027
+ return ControlFlowDescriptionFullEscape
1028
+
1029
+ def computeStatement(self, trace_collection):
1030
+ # TODO: Way too ugly to have global trace kinds just here, and needs to
1031
+ # be abstracted somehow. But for now we let it live here.
1032
+ old_source = self.subnode_source
1033
+ variable = self.variable
1034
+
1035
+ # Assigning from and to the same variable, can be optimized away
1036
+ # immediately, there is no point in doing it. Exceptions are of course
1037
+ # module variables that collide with built-in names.
1038
+ if old_source.getVariable() is variable:
1039
+ return (
1040
+ None,
1041
+ "new_statements",
1042
+ """\
1043
+ Removed assignment of %s from itself which is known to be defined."""
1044
+ % variable.getDescription(),
1045
+ )
1046
+
1047
+ # Let assignment source may re-compute first.
1048
+ source = trace_collection.onExpression(self.subnode_source)
1049
+
1050
+ if source is old_source:
1051
+ result = self, None, None
1052
+ else:
1053
+ result = self._considerSpecialization(old_source, source)
1054
+ result[0].parent = self.parent
1055
+
1056
+ result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
1057
+
1058
+ return result
1059
+
1060
+ def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
1061
+ # Set-up the trace to the trace collection, so future references will
1062
+ # find this assignment.
1063
+ self.variable_trace = trace_collection.onVariableSet(
1064
+ variable=self.variable, version=self.variable_version, assign_node=self
1065
+ )
1066
+
1067
+ # TODO: Determine from future use of assigned variable, if this is needed at all.
1068
+ trace_collection.removeKnowledge(source)
1069
+
1070
+ @staticmethod
1071
+ def hasVeryTrustedValue():
1072
+ """Does this assignment node have a very trusted value."""
1073
+ return False
1074
+
1075
+
1076
+ def makeStatementAssignmentVariableConstant(
1077
+ source, variable, variable_version, very_trusted, source_ref
1078
+ ):
1079
+ if source.isMutable():
1080
+ if very_trusted:
1081
+ return StatementAssignmentVariableConstantMutableTrusted(
1082
+ source=source,
1083
+ variable=variable,
1084
+ source_ref=source_ref,
1085
+ variable_version=variable_version,
1086
+ )
1087
+ else:
1088
+ return StatementAssignmentVariableConstantMutable(
1089
+ source=source,
1090
+ variable=variable,
1091
+ source_ref=source_ref,
1092
+ variable_version=variable_version,
1093
+ )
1094
+ else:
1095
+ if very_trusted:
1096
+ return StatementAssignmentVariableConstantImmutableTrusted(
1097
+ source=source,
1098
+ variable=variable,
1099
+ source_ref=source_ref,
1100
+ variable_version=variable_version,
1101
+ )
1102
+ else:
1103
+ return StatementAssignmentVariableConstantImmutable(
1104
+ source=source,
1105
+ variable=variable,
1106
+ source_ref=source_ref,
1107
+ variable_version=variable_version,
1108
+ )
1109
+
1110
+
1111
+ def makeStatementAssignmentVariable(
1112
+ source, variable, source_ref, variable_version=None
1113
+ ):
1114
+ assert source is not None, source_ref
1115
+
1116
+ if variable_version is None:
1117
+ variable_version = variable.allocateTargetNumber()
1118
+
1119
+ if source.isCompileTimeConstant():
1120
+ return makeStatementAssignmentVariableConstant(
1121
+ source=source,
1122
+ variable=variable,
1123
+ variable_version=variable_version,
1124
+ very_trusted=False,
1125
+ source_ref=source_ref,
1126
+ )
1127
+ elif source.isExpressionVariableRef():
1128
+ return StatementAssignmentVariableFromVariable(
1129
+ source=source,
1130
+ variable=variable,
1131
+ variable_version=variable_version,
1132
+ source_ref=source_ref,
1133
+ )
1134
+ elif source.isExpressionTempVariableRef():
1135
+ return StatementAssignmentVariableFromTempVariable(
1136
+ source=source,
1137
+ variable=variable,
1138
+ variable_version=variable_version,
1139
+ source_ref=source_ref,
1140
+ )
1141
+ elif source.getTypeShape().isShapeIterator():
1142
+ return StatementAssignmentVariableIterator(
1143
+ source=source,
1144
+ variable=variable,
1145
+ variable_version=variable_version,
1146
+ source_ref=source_ref,
1147
+ )
1148
+ elif source.hasVeryTrustedValue():
1149
+ return StatementAssignmentVariableHardValue(
1150
+ source=source,
1151
+ variable=variable,
1152
+ variable_version=variable_version,
1153
+ source_ref=source_ref,
1154
+ )
1155
+ else:
1156
+ return StatementAssignmentVariableGeneric(
1157
+ source=source,
1158
+ variable=variable,
1159
+ variable_version=variable_version,
1160
+ source_ref=source_ref,
1161
+ )
1162
+
1163
+
1164
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1165
+ # integrates with CPython, but also works on its own.
1166
+ #
1167
+ # Licensed under the Apache License, Version 2.0 (the "License");
1168
+ # you may not use this file except in compliance with the License.
1169
+ # You may obtain a copy of the License at
1170
+ #
1171
+ # http://www.apache.org/licenses/LICENSE-2.0
1172
+ #
1173
+ # Unless required by applicable law or agreed to in writing, software
1174
+ # distributed under the License is distributed on an "AS IS" BASIS,
1175
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1176
+ # See the License for the specific language governing permissions and
1177
+ # limitations under the License.