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,1303 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Nodes for functions and their creations.
5
+
6
+ Lambdas are functions too. The functions are at the core of the language and
7
+ have their complexities.
8
+
9
+ Creating a CPython function object is an optional thing. Some things might
10
+ only be used to be called directly, while knowing exactly what it is. So
11
+ the "ExpressionFunctionCreation" might be used to provide that kind of
12
+ CPython reference, and may escape.
13
+
14
+ Coroutines and generators live in their dedicated module and share base
15
+ classes.
16
+ """
17
+
18
+ import inspect
19
+ import re
20
+
21
+ from nuitka import Options, Variables
22
+ from nuitka.Constants import isMutable
23
+ from nuitka.optimizations.TraceCollections import (
24
+ TraceCollectionPureFunction,
25
+ withChangeIndicationsTo,
26
+ )
27
+ from nuitka.PythonVersions import python_version
28
+ from nuitka.specs.ParameterSpecs import (
29
+ ParameterSpec,
30
+ TooManyArguments,
31
+ matchCall,
32
+ )
33
+ from nuitka.Tracing import optimization_logger, printError
34
+ from nuitka.tree.Extractions import updateVariableUsage
35
+ from nuitka.tree.SourceHandling import readSourceLines
36
+ from nuitka.tree.TreeHelpers import makeDictCreationOrConstant2
37
+
38
+ from .ChildrenHavingMixins import (
39
+ ChildHavingBodyOptionalMixin,
40
+ ChildrenHavingDefaultsTupleKwDefaultsOptionalAnnotationsOptionalFunctionRefMixin,
41
+ ChildrenHavingFunctionValuesTupleMixin,
42
+ ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRefMixin,
43
+ )
44
+ from .CodeObjectSpecs import CodeObjectSpec
45
+ from .ContainerMakingNodes import makeExpressionMakeTupleOrConstant
46
+ from .ExpressionBases import ExpressionBase, ExpressionNoSideEffectsMixin
47
+ from .FutureSpecs import fromFlags
48
+ from .IndicatorMixins import (
49
+ EntryPointMixin,
50
+ MarkUnoptimizedFunctionIndicatorMixin,
51
+ )
52
+ from .LocalsScopes import getLocalsDictHandle
53
+ from .NodeBases import (
54
+ ClosureGiverNodeMixin,
55
+ ClosureTakerMixin,
56
+ SideEffectsFromChildrenMixin,
57
+ )
58
+ from .NodeMakingHelpers import (
59
+ makeRaiseExceptionReplacementExpressionFromInstance,
60
+ wrapExpressionWithSideEffects,
61
+ )
62
+ from .shapes.BuiltinTypeShapes import tshape_function
63
+
64
+
65
+ class MaybeLocalVariableUsage(Exception):
66
+ pass
67
+
68
+
69
+ class ExpressionFunctionBodyBase(
70
+ ClosureTakerMixin,
71
+ ClosureGiverNodeMixin,
72
+ ChildHavingBodyOptionalMixin,
73
+ ExpressionBase,
74
+ ):
75
+ # TODO: The code_prefix should be a class attribute instead.
76
+ __slots__ = (
77
+ "provider",
78
+ "taken",
79
+ "name",
80
+ "code_prefix",
81
+ "code_name",
82
+ "uids",
83
+ "temp_variables",
84
+ "temp_scopes",
85
+ "preserver_id",
86
+ "flags",
87
+ )
88
+
89
+ if python_version >= 0x300:
90
+ __slots__ += ("qualname_provider", "non_local_declarations")
91
+
92
+ # Might be None initially in some cases.
93
+ named_children = ("body|optional+setter",)
94
+
95
+ def __init__(self, provider, name, body, code_prefix, flags, source_ref):
96
+ while provider.isExpressionOutlineBody():
97
+ provider = provider.getParentVariableProvider()
98
+
99
+ ChildHavingBodyOptionalMixin.__init__(
100
+ self,
101
+ body=body,
102
+ )
103
+
104
+ ClosureTakerMixin.__init__(self, provider=provider)
105
+
106
+ ClosureGiverNodeMixin.__init__(self, name=name, code_prefix=code_prefix)
107
+
108
+ ExpressionBase.__init__(self, source_ref)
109
+
110
+ # Special things, "has_super" indicates presence of "super" in variable
111
+ # usage, which modifies some behaviors.
112
+ self.flags = flags or None
113
+
114
+ # Hack: This allows some APIs to work although this is not yet
115
+ # officially a child yet. Important during building.
116
+ self.parent = provider
117
+
118
+ if python_version >= 0x300:
119
+ # Python3: Might be overridden by global statement on the class name.
120
+ # TODO: Make this class only code.
121
+ self.qualname_provider = provider
122
+
123
+ # Non-local declarations if any.
124
+ self.non_local_declarations = None
125
+
126
+ @staticmethod
127
+ def isExpressionFunctionBodyBase():
128
+ return True
129
+
130
+ def getEntryPoint(self):
131
+ """Entry point for code.
132
+
133
+ Normally ourselves. Only outlines will refer to their parent which
134
+ technically owns them.
135
+
136
+ """
137
+
138
+ return self
139
+
140
+ def getContainingClassDictCreation(self):
141
+ current = self
142
+
143
+ while not current.isCompiledPythonModule():
144
+ if current.isExpressionClassBodyBase():
145
+ return current
146
+
147
+ current = current.getParentVariableProvider()
148
+
149
+ return None
150
+
151
+ def hasFlag(self, flag):
152
+ return self.flags is not None and flag in self.flags
153
+
154
+ def discardFlag(self, flag):
155
+ if self.flags is not None:
156
+ self.flags.discard(flag)
157
+
158
+ @staticmethod
159
+ def isEarlyClosure():
160
+ """Early closure taking means immediate binding of references.
161
+
162
+ Normally it's good to lookup name references immediately, but not for
163
+ functions. In case of a function body it is not allowed to do that,
164
+ because a later assignment needs to be queried first. Nodes need to
165
+ indicate via this if they would like to resolve references at the same
166
+ time as assignments.
167
+ """
168
+
169
+ return False
170
+
171
+ def getLocalsScope(self):
172
+ return self.locals_scope
173
+
174
+ # TODO: Dubious function doing to distinct things, should be moved to users.
175
+ def hasVariableName(self, variable_name):
176
+ return (
177
+ self.locals_scope.hasProvidedVariable(variable_name)
178
+ or variable_name in self.temp_variables
179
+ )
180
+
181
+ def getProvidedVariables(self):
182
+ if self.locals_scope is not None:
183
+ return self.locals_scope.getProvidedVariables()
184
+ else:
185
+ return ()
186
+
187
+ def getLocalVariables(self):
188
+ return [
189
+ variable
190
+ for variable in self.getProvidedVariables()
191
+ if variable.isLocalVariable()
192
+ ]
193
+
194
+ def getUserLocalVariables(self):
195
+ return [
196
+ variable
197
+ for variable in self.getProvidedVariables()
198
+ if variable.isLocalVariable() and not variable.isParameterVariable()
199
+ if variable.getOwner() is self
200
+ ]
201
+
202
+ def getOutlineLocalVariables(self):
203
+ result = []
204
+
205
+ outlines = self.getTraceCollection().getOutlineFunctions()
206
+
207
+ if outlines is None:
208
+ return result
209
+
210
+ for outline in outlines:
211
+ result.extend(outline.getUserLocalVariables())
212
+
213
+ return result
214
+
215
+ def removeClosureVariable(self, variable):
216
+ # Do not remove parameter variables of ours.
217
+ assert not variable.isParameterVariable() or variable.getOwner() is not self
218
+
219
+ self.locals_scope.unregisterClosureVariable(variable)
220
+
221
+ self.taken.remove(variable)
222
+
223
+ self.code_object.removeFreeVarname(variable.getName())
224
+
225
+ def demoteClosureVariable(self, variable):
226
+ assert variable.isLocalVariable()
227
+
228
+ self.taken.remove(variable)
229
+
230
+ assert variable.getOwner() is not self
231
+
232
+ new_variable = Variables.LocalVariable(
233
+ owner=self, variable_name=variable.getName()
234
+ )
235
+ for variable_trace in variable.traces:
236
+ if variable_trace.getOwner() is self:
237
+ new_variable.addTrace(variable_trace)
238
+ new_variable.updateUsageState()
239
+
240
+ self.locals_scope.unregisterClosureVariable(variable)
241
+ self.locals_scope.registerProvidedVariable(new_variable)
242
+
243
+ updateVariableUsage(
244
+ provider=self, old_variable=variable, new_variable=new_variable
245
+ )
246
+
247
+ def hasClosureVariable(self, variable):
248
+ return variable in self.taken
249
+
250
+ def getVariableForAssignment(self, variable_name):
251
+ # print("ASS func", self, variable_name)
252
+
253
+ if self.hasTakenVariable(variable_name):
254
+ result = self.getTakenVariable(variable_name)
255
+ else:
256
+ result = self.getProvidedVariable(variable_name)
257
+
258
+ return result
259
+
260
+ def getVariableForReference(self, variable_name):
261
+ # print( "REF func", self, variable_name )
262
+
263
+ if self.hasProvidedVariable(variable_name):
264
+ result = self.getProvidedVariable(variable_name)
265
+ else:
266
+ result = self.getClosureVariable(variable_name=variable_name)
267
+
268
+ # Remember that we need that closure variable for something, so
269
+ # we don't create it again all the time.
270
+ if not result.isModuleVariable():
271
+ self.locals_scope.registerClosureVariable(result)
272
+
273
+ entry_point = self.getEntryPoint()
274
+
275
+ # For "exec" containing/star import containing, we raise this exception to indicate
276
+ # that instead of merely a variable, to be assigned, we need to replace with locals
277
+ # dict access.
278
+ if (
279
+ python_version < 0x300
280
+ and not entry_point.isExpressionClassBodyBase()
281
+ and not entry_point.isPythonMainModule()
282
+ and result.isModuleVariable()
283
+ and entry_point.isUnoptimized()
284
+ ):
285
+ raise MaybeLocalVariableUsage
286
+
287
+ return result
288
+
289
+ def getVariableForClosure(self, variable_name):
290
+ # print( "getVariableForClosure", self.getCodeName(), variable_name, self.isUnoptimized() )
291
+
292
+ if self.hasProvidedVariable(variable_name):
293
+ return self.getProvidedVariable(variable_name)
294
+
295
+ return self.takeVariableForClosure(variable_name)
296
+
297
+ def takeVariableForClosure(self, variable_name):
298
+ result = self.provider.getVariableForClosure(variable_name)
299
+ self.taken.add(result)
300
+ return result
301
+
302
+ def createProvidedVariable(self, variable_name):
303
+ # print("createProvidedVariable", self, variable_name)
304
+
305
+ assert self.locals_scope, self
306
+
307
+ return self.locals_scope.getLocalVariable(
308
+ variable_name=variable_name, owner=self
309
+ )
310
+
311
+ def addNonlocalsDeclaration(self, names, user_provided, source_ref):
312
+ """Add a nonlocal declared name.
313
+
314
+ This happens during tree building, and is a Python3 only
315
+ feature. We remember the names for later use through the
316
+ function @consumeNonlocalDeclarations
317
+ """
318
+ if self.non_local_declarations is None:
319
+ self.non_local_declarations = []
320
+
321
+ self.non_local_declarations.append((names, user_provided, source_ref))
322
+
323
+ def consumeNonlocalDeclarations(self):
324
+ """Return the nonlocal declared names for this function.
325
+
326
+ There may not be any, which is why we assigned it to
327
+ None originally and now check and return empty tuple
328
+ in that case.
329
+ """
330
+
331
+ result = self.non_local_declarations or ()
332
+ self.non_local_declarations = None
333
+ return result
334
+
335
+ def getFunctionName(self):
336
+ return self.name
337
+
338
+ def getFunctionQualname(self):
339
+ """Function __qualname__ new in CPython3.3
340
+
341
+ Should contain some kind of full name descriptions for the closure to
342
+ recognize and will be used for outputs.
343
+ """
344
+
345
+ function_name = self.getFunctionName()
346
+
347
+ if python_version < 0x300:
348
+ qualname_provider = self.getParentVariableProvider()
349
+ else:
350
+ qualname_provider = self.qualname_provider
351
+
352
+ return qualname_provider.getChildQualname(function_name)
353
+
354
+ def computeExpression(self, trace_collection):
355
+ assert False
356
+
357
+ # Function body is quite irreplaceable.
358
+ return self, None, None
359
+
360
+ def mayRaiseException(self, exception_type):
361
+ body = self.subnode_body
362
+
363
+ if body is None:
364
+ return False
365
+ else:
366
+ return self.subnode_body.mayRaiseException(exception_type)
367
+
368
+ def getFunctionInlineCost(self, values):
369
+ """Cost of inlining this function with given arguments
370
+
371
+ Returns: None or integer values, None means don't do it.
372
+ """
373
+
374
+ # For overload, pylint: disable=no-self-use,unused-argument
375
+ return None
376
+
377
+ def optimizeUnusedClosureVariables(self):
378
+ """Gets called once module is complete, to consider giving up on closure variables."""
379
+
380
+ changed = False
381
+
382
+ for closure_variable in self.getClosureVariables():
383
+ # Need to take closure of those either way
384
+ if (
385
+ closure_variable.isParameterVariable()
386
+ and self.isExpressionGeneratorObjectBody()
387
+ ):
388
+ continue
389
+
390
+ empty = self.trace_collection.hasEmptyTraces(closure_variable)
391
+
392
+ if empty:
393
+ changed = True
394
+
395
+ self.trace_collection.signalChange(
396
+ "var_usage",
397
+ self.source_ref,
398
+ message="Remove unused closure variable '%s'."
399
+ % closure_variable.getName(),
400
+ )
401
+
402
+ self.removeClosureVariable(closure_variable)
403
+
404
+ return changed
405
+
406
+ def optimizeVariableReleases(self):
407
+ for parameter_variable in self.getParameterVariablesWithManualRelease():
408
+ read_only = self.trace_collection.hasReadOnlyTraces(parameter_variable)
409
+
410
+ if read_only:
411
+ self.trace_collection.signalChange(
412
+ "var_usage",
413
+ self.source_ref,
414
+ message="Schedule removal releases of unassigned parameter variable '%s'."
415
+ % parameter_variable.getName(),
416
+ )
417
+
418
+ self.removeVariableReleases(parameter_variable)
419
+
420
+
421
+ class ExpressionFunctionEntryPointBase(EntryPointMixin, ExpressionFunctionBodyBase):
422
+ __slots__ = ("trace_collection", "code_object", "locals_scope", "auto_release")
423
+
424
+ def __init__(
425
+ self, provider, name, code_object, code_prefix, flags, auto_release, source_ref
426
+ ):
427
+ ExpressionFunctionBodyBase.__init__(
428
+ self,
429
+ provider=provider,
430
+ name=name,
431
+ code_prefix=code_prefix,
432
+ flags=flags,
433
+ body=None,
434
+ source_ref=source_ref,
435
+ )
436
+
437
+ EntryPointMixin.__init__(self)
438
+
439
+ self.code_object = code_object
440
+
441
+ provider.getParentModule().addFunction(self)
442
+
443
+ if flags is not None and "has_exec" in flags:
444
+ locals_kind = "python2_function_exec"
445
+ else:
446
+ locals_kind = "python_function"
447
+
448
+ self.locals_scope = getLocalsDictHandle(
449
+ "locals_%s" % self.getCodeName(), locals_kind, self
450
+ )
451
+
452
+ # Automatic parameter variable releases.
453
+ self.auto_release = auto_release or None
454
+
455
+ def getDetails(self):
456
+ result = ExpressionFunctionBodyBase.getDetails(self)
457
+
458
+ result["auto_release"] = tuple(sorted(self.auto_release or ()))
459
+
460
+ return result
461
+
462
+ def getCodeObject(self):
463
+ return self.code_object
464
+
465
+ def getChildQualname(self, function_name):
466
+ return self.getFunctionQualname() + ".<locals>." + function_name
467
+
468
+ def computeFunctionRaw(self, trace_collection):
469
+ from nuitka.optimizations.TraceCollections import (
470
+ TraceCollectionFunction,
471
+ )
472
+
473
+ trace_collection = TraceCollectionFunction(
474
+ parent=trace_collection, function_body=self
475
+ )
476
+ old_collection = self.setTraceCollection(trace_collection)
477
+
478
+ self.computeFunction(trace_collection)
479
+
480
+ trace_collection.updateVariablesFromCollection(old_collection, self.source_ref)
481
+
482
+ def computeFunction(self, trace_collection):
483
+ statements_sequence = self.subnode_body
484
+
485
+ # TODO: Lift this restriction to only functions here and it code generation.
486
+ if statements_sequence is not None and self.isExpressionFunctionBody():
487
+ if statements_sequence.subnode_statements[0].isStatementReturnNone():
488
+ statements_sequence.finalize()
489
+ self.setChildBody(None)
490
+
491
+ statements_sequence = None
492
+
493
+ if statements_sequence is not None:
494
+ result = statements_sequence.computeStatementsSequence(
495
+ trace_collection=trace_collection
496
+ )
497
+
498
+ if result is not statements_sequence:
499
+ self.setChildBody(result)
500
+
501
+ def removeVariableReleases(self, variable):
502
+ assert variable in self.locals_scope.providing.values(), (self, variable)
503
+
504
+ if self.auto_release is None:
505
+ self.auto_release = set()
506
+
507
+ self.auto_release.add(variable)
508
+
509
+ def getParameterVariablesWithManualRelease(self):
510
+ """Return the list of parameter variables that have release statements.
511
+
512
+ These are for consideration if these can be dropped, and if so, they
513
+ are releases automatically by function code.
514
+ """
515
+ return tuple(
516
+ variable
517
+ for variable in self.locals_scope.getProvidedVariables()
518
+ if not self.auto_release or variable not in self.auto_release
519
+ if variable.isParameterVariable()
520
+ if variable.getOwner() is self
521
+ )
522
+
523
+ def isAutoReleaseVariable(self, variable):
524
+ """Is this variable to be automatically released."""
525
+ return self.auto_release is not None and variable in self.auto_release
526
+
527
+ def getFunctionVariablesWithAutoReleases(self):
528
+ """Return the list of function variables that should be released at exit."""
529
+ if self.auto_release is None:
530
+ return ()
531
+
532
+ return tuple(
533
+ variable
534
+ for variable in self.locals_scope.getProvidedVariables()
535
+ if variable in self.auto_release
536
+ )
537
+
538
+ @staticmethod
539
+ def getConstantReturnValue():
540
+ """Special function that checks if code generation allows to use common C code.
541
+
542
+ Notes:
543
+ This is only done for standard functions.
544
+
545
+ """
546
+ return False, False
547
+
548
+
549
+ class ExpressionFunctionBody(
550
+ ExpressionNoSideEffectsMixin,
551
+ MarkUnoptimizedFunctionIndicatorMixin,
552
+ ExpressionFunctionEntryPointBase,
553
+ ):
554
+ # TODO: There should be more special ones than this general type in order to
555
+ # not cover exec ones in the same object.
556
+
557
+ kind = "EXPRESSION_FUNCTION_BODY"
558
+
559
+ __slots__ = (
560
+ "unoptimized_locals",
561
+ "unqualified_exec",
562
+ "doc",
563
+ "return_exception",
564
+ "needs_creation",
565
+ "needs_direct",
566
+ "cross_module_use",
567
+ "parameters",
568
+ )
569
+
570
+ if python_version >= 0x300:
571
+ __slots__ += ("qualname_setup",)
572
+
573
+ def __init__(
574
+ self,
575
+ provider,
576
+ name,
577
+ code_object,
578
+ doc,
579
+ parameters,
580
+ flags,
581
+ auto_release,
582
+ code_prefix,
583
+ source_ref,
584
+ ):
585
+ ExpressionFunctionEntryPointBase.__init__(
586
+ self,
587
+ provider=provider,
588
+ name=name,
589
+ code_object=code_object,
590
+ code_prefix=code_prefix,
591
+ flags=flags,
592
+ auto_release=auto_release,
593
+ source_ref=source_ref,
594
+ )
595
+
596
+ MarkUnoptimizedFunctionIndicatorMixin.__init__(self, flags)
597
+
598
+ self.doc = doc
599
+
600
+ # Indicator if the return value exception might be required.
601
+ self.return_exception = False
602
+
603
+ # Indicator if the function needs to be created as a function object.
604
+ self.needs_creation = False
605
+
606
+ # Indicator if the function is called directly.
607
+ self.needs_direct = False
608
+
609
+ # Indicator if the function is used outside of where it's defined.
610
+ self.cross_module_use = False
611
+
612
+ if python_version >= 0x300:
613
+ self.qualname_setup = None
614
+
615
+ self.parameters = parameters
616
+ self.parameters.setOwner(self)
617
+
618
+ for variable in self.parameters.getAllVariables():
619
+ self.locals_scope.registerProvidedVariable(variable)
620
+
621
+ def getDetails(self):
622
+ return {
623
+ "name": self.getFunctionName(),
624
+ "ref_name": self.getCodeName(),
625
+ "parameters": self.getParameters(),
626
+ "code_object": self.code_object,
627
+ "provider": self.provider.getCodeName(),
628
+ "doc": self.doc,
629
+ "flags": self.flags,
630
+ }
631
+
632
+ def getDetailsForDisplay(self):
633
+ result = {
634
+ "name": self.getFunctionName(),
635
+ "provider": self.provider.getCodeName(),
636
+ "flags": self.flags,
637
+ }
638
+
639
+ result.update(self.parameters.getDetails())
640
+
641
+ if self.code_object:
642
+ result.update(self.code_object.getDetails())
643
+
644
+ if self.doc is not None:
645
+ result["doc"] = self.doc
646
+
647
+ return result
648
+
649
+ @classmethod
650
+ def fromXML(cls, provider, source_ref, **args):
651
+ assert provider is not None
652
+
653
+ parameter_spec_args = {}
654
+ code_object_args = {}
655
+ other_args = {}
656
+
657
+ for key, value in args.items():
658
+ if key.startswith("ps_"):
659
+ parameter_spec_args[key] = value
660
+ elif key.startswith("co_"):
661
+ code_object_args[key] = value
662
+ elif key == "code_flags":
663
+ code_object_args["future_spec"] = fromFlags(args["code_flags"])
664
+ else:
665
+ other_args[key] = value
666
+
667
+ parameters = ParameterSpec(**parameter_spec_args)
668
+ code_object = CodeObjectSpec(**code_object_args)
669
+
670
+ # The empty doc string and no doc string are distinguished by presence. The
671
+ # most common case is going to be not present.
672
+ if "doc" not in other_args:
673
+ other_args["doc"] = None
674
+
675
+ return cls(
676
+ provider=provider,
677
+ parameters=parameters,
678
+ code_object=code_object,
679
+ source_ref=source_ref,
680
+ **other_args
681
+ )
682
+
683
+ @staticmethod
684
+ def isExpressionFunctionBody():
685
+ return True
686
+
687
+ def getParent(self):
688
+ assert False
689
+
690
+ def getDoc(self):
691
+ return self.doc
692
+
693
+ def getParameters(self):
694
+ return self.parameters
695
+
696
+ def needsCreation(self):
697
+ return self.needs_creation
698
+
699
+ def markAsNeedsCreation(self):
700
+ self.needs_creation = True
701
+
702
+ def needsDirectCall(self):
703
+ return self.needs_direct
704
+
705
+ def markAsDirectlyCalled(self):
706
+ self.needs_direct = True
707
+
708
+ def isCrossModuleUsed(self):
709
+ return self.cross_module_use
710
+
711
+ def markAsCrossModuleUsed(self):
712
+ self.cross_module_use = True
713
+
714
+ def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
715
+ # TODO: Until we have something to re-order the arguments, we need to
716
+ # skip this. For the immediate need, we avoid this complexity, as a
717
+ # re-ordering will be needed.
718
+
719
+ assert False, self
720
+
721
+ @staticmethod
722
+ def isCompileTimeConstant():
723
+ # TODO: It's actually pretty much compile time accessible maybe, but that
724
+ # would require extra effort.
725
+ return False
726
+
727
+ # TODO: This is an overload that contradicts no side effects, this might be
728
+ # used by outside code, not removed, but we should investigate this.
729
+ def mayRaiseException(self, exception_type):
730
+ body = self.subnode_body
731
+
732
+ return body is not None and body.mayRaiseException(exception_type)
733
+
734
+ def markAsExceptionReturnValue(self):
735
+ self.return_exception = True
736
+
737
+ def needsExceptionReturnValue(self):
738
+ return self.return_exception
739
+
740
+ def getConstantReturnValue(self):
741
+ """Special function that checks if code generation allows to use common C code."""
742
+ body = self.subnode_body
743
+
744
+ if body is None:
745
+ return True, None
746
+
747
+ first_statement = body.subnode_statements[0]
748
+
749
+ if first_statement.isStatementReturnConstant():
750
+ constant_value = first_statement.getConstant()
751
+
752
+ # TODO: For mutable constants, we could also have something, but it would require an indicator
753
+ # flag to make a deep copy.
754
+ if not isMutable(constant_value):
755
+ return True, constant_value
756
+ else:
757
+ return False, False
758
+ else:
759
+ return False, False
760
+
761
+
762
+ class ExpressionFunctionPureBody(ExpressionFunctionBody):
763
+ kind = "EXPRESSION_FUNCTION_PURE_BODY"
764
+
765
+ __slots__ = (
766
+ # These need only one optimization ever.
767
+ "optimization_done",
768
+ )
769
+
770
+ def __init__(
771
+ self,
772
+ provider,
773
+ name,
774
+ code_object,
775
+ doc,
776
+ parameters,
777
+ flags,
778
+ auto_release,
779
+ code_prefix,
780
+ source_ref,
781
+ ):
782
+ ExpressionFunctionBody.__init__(
783
+ self,
784
+ provider=provider,
785
+ name=name,
786
+ code_object=code_object,
787
+ doc=doc,
788
+ parameters=parameters,
789
+ flags=flags,
790
+ auto_release=auto_release,
791
+ code_prefix=code_prefix,
792
+ source_ref=source_ref,
793
+ )
794
+
795
+ self.optimization_done = False
796
+
797
+ def computeFunctionRaw(self, trace_collection):
798
+ if self.optimization_done:
799
+ for function_body in self.trace_collection.getUsedFunctions():
800
+ trace_collection.onUsedFunction(function_body)
801
+
802
+ return
803
+
804
+ def mySignal(tag, source_ref, change_desc):
805
+ if Options.is_verbose:
806
+ optimization_logger.info(
807
+ "{source_ref} : {tags} : {message}".format(
808
+ source_ref=source_ref.getAsString(),
809
+ tags=tag,
810
+ message=(
811
+ change_desc()
812
+ if inspect.isfunction(change_desc)
813
+ else change_desc
814
+ ),
815
+ )
816
+ )
817
+
818
+ tags.add(tag)
819
+
820
+ tags = set()
821
+
822
+ while 1:
823
+ trace_collection = TraceCollectionPureFunction(function_body=self)
824
+ old_collection = self.setTraceCollection(trace_collection)
825
+
826
+ with withChangeIndicationsTo(mySignal):
827
+ self.computeFunction(trace_collection)
828
+
829
+ trace_collection.updateVariablesFromCollection(
830
+ old_collection, self.source_ref
831
+ )
832
+
833
+ if tags:
834
+ tags.clear()
835
+ else:
836
+ break
837
+
838
+ self.optimization_done = True
839
+
840
+
841
+ class ExpressionFunctionPureInlineConstBody(ExpressionFunctionBody):
842
+ kind = "EXPRESSION_FUNCTION_PURE_INLINE_CONST_BODY"
843
+
844
+ def getFunctionInlineCost(self, values):
845
+ return 0
846
+
847
+
848
+ # TODO: Function direct call node ought to be here too.
849
+
850
+
851
+ def makeExpressionFunctionCreation(
852
+ function_ref, defaults, kw_defaults, annotations, source_ref
853
+ ):
854
+ if kw_defaults is not None and kw_defaults.isExpressionConstantDictEmptyRef():
855
+ kw_defaults = None
856
+
857
+ assert function_ref.isExpressionFunctionRef()
858
+
859
+ return ExpressionFunctionCreation(
860
+ function_ref=function_ref,
861
+ defaults=defaults,
862
+ kw_defaults=kw_defaults,
863
+ annotations=annotations,
864
+ source_ref=source_ref,
865
+ )
866
+
867
+
868
+ class ExpressionFunctionCreationMixin(SideEffectsFromChildrenMixin):
869
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
870
+ __slots__ = ()
871
+
872
+ @staticmethod
873
+ def isExpressionFunctionCreation():
874
+ return True
875
+
876
+ def getName(self):
877
+ return self.subnode_function_ref.getName()
878
+
879
+ @staticmethod
880
+ def getTypeShape():
881
+ return tshape_function
882
+
883
+ def computeExpression(self, trace_collection):
884
+ self.variable_closure_traces = []
885
+
886
+ for (
887
+ closure_variable
888
+ ) in self.subnode_function_ref.getFunctionBody().getClosureVariables():
889
+ trace = trace_collection.getVariableCurrentTrace(closure_variable)
890
+ trace.addNameUsage()
891
+
892
+ self.variable_closure_traces.append((closure_variable, trace))
893
+
894
+ kw_defaults = self.subnode_kw_defaults
895
+ if kw_defaults is not None:
896
+ kw_defaults.onContentEscapes(trace_collection)
897
+
898
+ for default in self.subnode_defaults:
899
+ default.onContentEscapes(trace_collection)
900
+
901
+ # TODO: Function body may know something too.
902
+ return self, None, None
903
+
904
+ def mayRaiseException(self, exception_type):
905
+ for default in self.subnode_defaults:
906
+ if default.mayRaiseException(exception_type):
907
+ return True
908
+
909
+ kw_defaults = self.subnode_kw_defaults
910
+
911
+ if kw_defaults is not None and kw_defaults.mayRaiseException(exception_type):
912
+ return True
913
+
914
+ annotations = self.subnode_annotations
915
+
916
+ if annotations is not None and annotations.mayRaiseException(exception_type):
917
+ return True
918
+
919
+ return False
920
+
921
+ def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
922
+ trace_collection.onExceptionRaiseExit(BaseException)
923
+
924
+ # TODO: Until we have something to re-order the keyword arguments, we
925
+ # need to skip this. For the immediate need, we avoid this complexity,
926
+ # as a re-ordering will be needed.
927
+ if call_kw is not None and not call_kw.isExpressionConstantDictEmptyRef():
928
+ return call_node, None, None
929
+
930
+ if call_args is None:
931
+ args_tuple = ()
932
+ else:
933
+ assert (
934
+ call_args.isExpressionConstantTupleRef()
935
+ or call_args.isExpressionMakeTuple()
936
+ )
937
+
938
+ args_tuple = call_args.getIterationValues()
939
+
940
+ function_body = self.subnode_function_ref.getFunctionBody()
941
+
942
+ # TODO: Actually the above disables it entirely, as it is at least
943
+ # the empty dictionary node in any case. We will need some enhanced
944
+ # interfaces for "matchCall" to work on.
945
+
946
+ call_spec = function_body.getParameters()
947
+
948
+ try:
949
+ args_dict = matchCall(
950
+ func_name=self.getName(),
951
+ args=call_spec.getArgumentNames(),
952
+ kw_only_args=call_spec.getKwOnlyParameterNames(),
953
+ star_list_arg=call_spec.getStarListArgumentName(),
954
+ star_dict_arg=call_spec.getStarDictArgumentName(),
955
+ star_list_single_arg=False,
956
+ num_defaults=call_spec.getDefaultCount(),
957
+ num_pos_only=call_spec.getPosOnlyParameterCount(),
958
+ positional=args_tuple,
959
+ pairs=(),
960
+ )
961
+
962
+ values = [args_dict[name] for name in call_spec.getParameterNames()]
963
+
964
+ # TODO: Not handling default values either yet.
965
+ if None in values:
966
+ return call_node, None, None
967
+
968
+ # TODO: This is probably something that the matchCall ought to do
969
+ # for us, but that will need cleanups. Also these functions and
970
+ # nodes ought to work with ordered dictionaries maybe.
971
+ if call_spec.getStarDictArgumentName():
972
+ values[-1] = makeDictCreationOrConstant2(
973
+ keys=[value[0] for value in values[-1]],
974
+ values=[value[1] for value in values[-1]],
975
+ source_ref=call_node.source_ref,
976
+ )
977
+
978
+ star_list_offset = -2
979
+ else:
980
+ star_list_offset = -1
981
+
982
+ if call_spec.getStarListArgumentName():
983
+ values[star_list_offset] = makeExpressionMakeTupleOrConstant(
984
+ elements=values[star_list_offset],
985
+ user_provided=False,
986
+ source_ref=call_node.source_ref,
987
+ )
988
+
989
+ result = makeExpressionFunctionCall(
990
+ function=self.makeClone(),
991
+ values=values,
992
+ source_ref=call_node.source_ref,
993
+ )
994
+
995
+ return (
996
+ result,
997
+ "new_statements", # TODO: More appropriate tag maybe.
998
+ """\
999
+ Replaced call to created function body '%s' with direct function call."""
1000
+ % self.getName(),
1001
+ )
1002
+
1003
+ except TooManyArguments as e:
1004
+ result = wrapExpressionWithSideEffects(
1005
+ new_node=makeRaiseExceptionReplacementExpressionFromInstance(
1006
+ expression=call_node, exception=e.getRealException()
1007
+ ),
1008
+ old_node=call_node,
1009
+ side_effects=call_node.extractSideEffectsPreCall(),
1010
+ )
1011
+
1012
+ return (
1013
+ result,
1014
+ "new_raise", # TODO: More appropriate tag maybe.
1015
+ """Replaced call to created function body '%s' to argument \
1016
+ error"""
1017
+ % self.getName(),
1018
+ )
1019
+
1020
+ def getClosureVariableVersions(self):
1021
+ return self.variable_closure_traces
1022
+
1023
+
1024
+ class ExpressionFunctionCreationOld(
1025
+ ExpressionFunctionCreationMixin,
1026
+ ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRefMixin,
1027
+ ExpressionBase,
1028
+ ):
1029
+ kind = "EXPRESSION_FUNCTION_CREATION_OLD"
1030
+
1031
+ python_version_spec = "< 0x300"
1032
+ # Note: The order of evaluation for these is a bit unexpected, but
1033
+ # true. Keyword defaults go first, then normal defaults, and annotations of
1034
+ # all kinds go last.
1035
+
1036
+ # A bug of CPython3.x was not fixed before version 3.4, this is to allow
1037
+ # code generation to detect which one is used. bugs.python.org/issue16967
1038
+ kw_defaults_before_defaults = True
1039
+
1040
+ named_children = (
1041
+ "kw_defaults|optional",
1042
+ "defaults|tuple",
1043
+ "annotations|optional",
1044
+ "function_ref",
1045
+ )
1046
+
1047
+ __slots__ = ("variable_closure_traces",)
1048
+
1049
+ def __init__(self, kw_defaults, defaults, annotations, function_ref, source_ref):
1050
+ ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRefMixin.__init__(
1051
+ self,
1052
+ kw_defaults=kw_defaults,
1053
+ defaults=defaults,
1054
+ annotations=annotations,
1055
+ function_ref=function_ref,
1056
+ )
1057
+
1058
+ ExpressionBase.__init__(self, source_ref)
1059
+
1060
+ self.variable_closure_traces = None
1061
+
1062
+
1063
+ class ExpressionFunctionCreation(
1064
+ ExpressionFunctionCreationMixin,
1065
+ ChildrenHavingDefaultsTupleKwDefaultsOptionalAnnotationsOptionalFunctionRefMixin,
1066
+ ExpressionBase,
1067
+ ):
1068
+ kind = "EXPRESSION_FUNCTION_CREATION"
1069
+
1070
+ python_version_spec = ">= 0x340"
1071
+
1072
+ # A bug of CPython3.x was not fixed before version 3.4, this is to allow
1073
+ # code generation to detect which one is used. bugs.python.org/issue16967
1074
+ kw_defaults_before_defaults = False
1075
+
1076
+ named_children = (
1077
+ "defaults|tuple",
1078
+ "kw_defaults|optional",
1079
+ "annotations|optional",
1080
+ "function_ref",
1081
+ )
1082
+
1083
+ __slots__ = ("variable_closure_traces",)
1084
+
1085
+ def __init__(self, defaults, kw_defaults, annotations, function_ref, source_ref):
1086
+ ChildrenHavingDefaultsTupleKwDefaultsOptionalAnnotationsOptionalFunctionRefMixin.__init__(
1087
+ self,
1088
+ kw_defaults=kw_defaults,
1089
+ defaults=defaults,
1090
+ annotations=annotations,
1091
+ function_ref=function_ref,
1092
+ )
1093
+
1094
+ ExpressionBase.__init__(self, source_ref)
1095
+
1096
+ self.variable_closure_traces = None
1097
+
1098
+
1099
+ if python_version < 0x300:
1100
+ ExpressionFunctionCreation = ExpressionFunctionCreationOld
1101
+
1102
+
1103
+ class ExpressionFunctionRef(ExpressionNoSideEffectsMixin, ExpressionBase):
1104
+ kind = "EXPRESSION_FUNCTION_REF"
1105
+
1106
+ __slots__ = "function_body", "code_name", "function_source"
1107
+
1108
+ def __init__(self, source_ref, function_body=None, code_name=None):
1109
+ assert function_body is not None or code_name is not None
1110
+ assert code_name != "None"
1111
+
1112
+ ExpressionBase.__init__(self, source_ref)
1113
+
1114
+ self.function_body = function_body
1115
+ self.code_name = code_name
1116
+ self.function_source = None
1117
+
1118
+ def finalize(self):
1119
+ del self.parent
1120
+ del self.function_body
1121
+ del self.function_source
1122
+
1123
+ def getName(self):
1124
+ return self.function_body.getName()
1125
+
1126
+ def getDetails(self):
1127
+ return {"function_body": self.function_body}
1128
+
1129
+ def getDetailsForDisplay(self):
1130
+ return {"code_name": self.getFunctionBody().getCodeName()}
1131
+
1132
+ def getFunctionBody(self):
1133
+ if self.function_body is None:
1134
+ module_code_name, _ = self.code_name.split("$$$", 1)
1135
+
1136
+ from nuitka.ModuleRegistry import getModuleFromCodeName
1137
+
1138
+ module = getModuleFromCodeName(module_code_name)
1139
+
1140
+ self.function_body = module.getFunctionFromCodeName(self.code_name)
1141
+
1142
+ return self.function_body
1143
+
1144
+ def computeExpressionRaw(self, trace_collection):
1145
+ trace_collection.onUsedFunction(self.getFunctionBody())
1146
+
1147
+ # TODO: Function after collection may now know something.
1148
+ return self, None, None
1149
+
1150
+ def getFunctionSourceCode(self):
1151
+ if self.function_source is None:
1152
+ try:
1153
+ lines = readSourceLines(self.getFunctionBody().source_ref)
1154
+
1155
+ # This needs to match "inspect.findsource".
1156
+ pat = re.compile(
1157
+ r"^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)"
1158
+ )
1159
+
1160
+ line_number = self.source_ref.line - 1
1161
+
1162
+ while line_number > 0:
1163
+ line = lines[line_number]
1164
+
1165
+ if pat.match(line):
1166
+ break
1167
+
1168
+ line_number = line_number - 1
1169
+
1170
+ self.function_source = (
1171
+ "".join(inspect.getblock(lines[line_number:])),
1172
+ line_number,
1173
+ )
1174
+ except Exception:
1175
+ printError(
1176
+ "Problem with retrieving source code of '%s' at %s"
1177
+ % (self.getFunctionSuperQualifiedName(), self.source_ref)
1178
+ )
1179
+ raise
1180
+
1181
+ return self.function_source
1182
+
1183
+ def getFunctionSuperQualifiedName(self):
1184
+ return "%s.%s" % (
1185
+ self.getParentModule().getFullName(),
1186
+ self.getFunctionBody().getFunctionQualname(),
1187
+ )
1188
+
1189
+
1190
+ def makeExpressionFunctionCall(function, values, source_ref):
1191
+ assert function.isExpressionFunctionCreation()
1192
+
1193
+ return ExpressionFunctionCall(
1194
+ function=function, values=tuple(values), source_ref=source_ref
1195
+ )
1196
+
1197
+
1198
+ class ExpressionFunctionCall(ChildrenHavingFunctionValuesTupleMixin, ExpressionBase):
1199
+ """Shared function call.
1200
+
1201
+ This is for calling created function bodies with multiple users. Not
1202
+ clear if such a thing should exist. But what this will do is to have
1203
+ respect for the fact that there are multiple such calls.
1204
+ """
1205
+
1206
+ kind = "EXPRESSION_FUNCTION_CALL"
1207
+
1208
+ __slots__ = ("variable_closure_traces",)
1209
+
1210
+ named_children = ("function", "values|tuple")
1211
+
1212
+ def __init__(self, function, values, source_ref):
1213
+ ChildrenHavingFunctionValuesTupleMixin.__init__(
1214
+ self,
1215
+ function=function,
1216
+ values=values,
1217
+ )
1218
+
1219
+ ExpressionBase.__init__(self, source_ref)
1220
+
1221
+ self.variable_closure_traces = None
1222
+
1223
+ def computeExpression(self, trace_collection):
1224
+ function = self.subnode_function
1225
+ function_body = function.subnode_function_ref.getFunctionBody()
1226
+
1227
+ if function_body.mayRaiseException(BaseException):
1228
+ trace_collection.onExceptionRaiseExit(BaseException)
1229
+
1230
+ values = self.subnode_values
1231
+
1232
+ for value in values:
1233
+ value.onContentEscapes(trace_collection)
1234
+
1235
+ # Ask for function for its cost.
1236
+ cost = function_body.getFunctionInlineCost(values)
1237
+
1238
+ if cost is not None and cost < 50:
1239
+ from nuitka.optimizations.FunctionInlining import (
1240
+ convertFunctionCallToOutline,
1241
+ )
1242
+
1243
+ result = convertFunctionCallToOutline(
1244
+ provider=self.getParentVariableProvider(),
1245
+ function_body=function_body,
1246
+ values=values,
1247
+ call_source_ref=self.source_ref,
1248
+ )
1249
+
1250
+ return (
1251
+ result,
1252
+ "new_statements",
1253
+ lambda: "Function call to '%s' in-lined." % function_body.getCodeName(),
1254
+ )
1255
+
1256
+ self.variable_closure_traces = []
1257
+
1258
+ for closure_variable in function_body.getClosureVariables():
1259
+ trace = trace_collection.getVariableCurrentTrace(closure_variable)
1260
+ trace.addNameUsage()
1261
+
1262
+ self.variable_closure_traces.append((closure_variable, trace))
1263
+
1264
+ return self, None, None
1265
+
1266
+ def mayRaiseException(self, exception_type):
1267
+ function = self.subnode_function
1268
+
1269
+ if function.subnode_function_ref.getFunctionBody().mayRaiseException(
1270
+ exception_type
1271
+ ):
1272
+ return True
1273
+
1274
+ values = self.subnode_values
1275
+
1276
+ for value in values:
1277
+ if value.mayRaiseException(exception_type):
1278
+ return True
1279
+
1280
+ return False
1281
+
1282
+ def getClosureVariableVersions(self):
1283
+ return self.variable_closure_traces
1284
+
1285
+ def onContentEscapes(self, trace_collection):
1286
+ for value in self.subnode_values:
1287
+ value.onContentEscapes(trace_collection)
1288
+
1289
+
1290
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1291
+ # integrates with CPython, but also works on its own.
1292
+ #
1293
+ # Licensed under the Apache License, Version 2.0 (the "License");
1294
+ # you may not use this file except in compliance with the License.
1295
+ # You may obtain a copy of the License at
1296
+ #
1297
+ # http://www.apache.org/licenses/LICENSE-2.0
1298
+ #
1299
+ # Unless required by applicable law or agreed to in writing, software
1300
+ # distributed under the License is distributed on an "AS IS" BASIS,
1301
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302
+ # See the License for the specific language governing permissions and
1303
+ # limitations under the License.