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
nuitka/MainControl.py ADDED
@@ -0,0 +1,1201 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ This is the main actions of Nuitka.
5
+
6
+ This can do all the steps to translate one module to a target language using
7
+ the Python C/API, to compile it to either an executable or an extension
8
+ module, potentially with bytecode included and used library copied into
9
+ a distribution folder.
10
+
11
+ """
12
+
13
+ import os
14
+ import sys
15
+
16
+ from nuitka.build.DataComposerInterface import runDataComposer
17
+ from nuitka.build.SconsUtils import (
18
+ getSconsReportValue,
19
+ readSconsErrorReport,
20
+ readSconsReport,
21
+ )
22
+ from nuitka.code_generation.ConstantCodes import (
23
+ addDistributionMetadataValue,
24
+ getDistributionMetadataValues,
25
+ )
26
+ from nuitka.freezer.IncludedDataFiles import (
27
+ addIncludedDataFilesFromFileOptions,
28
+ addIncludedDataFilesFromPackageOptions,
29
+ addIncludedDataFilesFromPlugins,
30
+ copyDataFiles,
31
+ )
32
+ from nuitka.freezer.IncludedEntryPoints import (
33
+ addExtensionModuleEntryPoint,
34
+ addIncludedEntryPoints,
35
+ getStandaloneEntryPoints,
36
+ setMainEntryPoint,
37
+ )
38
+ from nuitka.importing.Importing import locateModule, setupImportingFromOptions
39
+ from nuitka.importing.Recursion import (
40
+ scanIncludedPackage,
41
+ scanPluginFilenamePattern,
42
+ scanPluginPath,
43
+ scanPluginSinglePath,
44
+ )
45
+ from nuitka.Options import (
46
+ getPythonPgoInput,
47
+ hasPythonFlagIsolated,
48
+ hasPythonFlagNoAnnotations,
49
+ hasPythonFlagNoAsserts,
50
+ hasPythonFlagNoBytecodeRuntimeCache,
51
+ hasPythonFlagNoCurrentDirectoryInPath,
52
+ hasPythonFlagNoDocStrings,
53
+ hasPythonFlagNoWarnings,
54
+ hasPythonFlagUnbuffered,
55
+ isExperimental,
56
+ )
57
+ from nuitka.plugins.Plugins import Plugins
58
+ from nuitka.PostProcessing import executePostProcessing
59
+ from nuitka.Progress import (
60
+ closeProgressBar,
61
+ reportProgressBar,
62
+ setupProgressBar,
63
+ )
64
+ from nuitka.PythonFlavors import (
65
+ getPythonFlavorName,
66
+ isApplePython,
67
+ isArchPackagePython,
68
+ isDebianPackagePython,
69
+ isFedoraPackagePython,
70
+ isNuitkaPython,
71
+ isPyenvPython,
72
+ )
73
+ from nuitka.PythonVersions import (
74
+ getModuleLinkerLibs,
75
+ getPythonABI,
76
+ getSupportedPythonVersions,
77
+ python_version,
78
+ python_version_str,
79
+ )
80
+ from nuitka.Serialization import ConstantAccessor
81
+ from nuitka.Tracing import (
82
+ doNotBreakSpaces,
83
+ general,
84
+ inclusion_logger,
85
+ pgo_logger,
86
+ )
87
+ from nuitka.tree import SyntaxErrors
88
+ from nuitka.tree.ReformulationMultidist import createMultidistMainSourceCode
89
+ from nuitka.utils import InstanceCounters
90
+ from nuitka.utils.Distributions import getDistribution
91
+ from nuitka.utils.Execution import (
92
+ callProcess,
93
+ withEnvironmentVarOverridden,
94
+ wrapCommandForDebuggerForExec,
95
+ )
96
+ from nuitka.utils.FileOperations import (
97
+ changeFilenameExtension,
98
+ deleteFile,
99
+ getExternalUsePath,
100
+ getReportPath,
101
+ openTextFile,
102
+ removeDirectory,
103
+ resetDirectory,
104
+ )
105
+ from nuitka.utils.Importing import getPackageDirFilename
106
+ from nuitka.utils.MemoryUsage import reportMemoryUsage, showMemoryTrace
107
+ from nuitka.utils.ModuleNames import ModuleName
108
+ from nuitka.utils.ReExecute import callExecProcess, reExecuteNuitka
109
+ from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
110
+ from nuitka.utils.Utils import getArchitecture, isMacOS, isWin32Windows
111
+ from nuitka.Version import getCommercialVersion, getNuitkaVersion
112
+
113
+ from . import ModuleRegistry, Options, OutputDirectories
114
+ from .build.SconsInterface import (
115
+ asBoolStr,
116
+ cleanSconsDirectory,
117
+ getCommonSconsOptions,
118
+ runScons,
119
+ setPythonTargetOptions,
120
+ )
121
+ from .code_generation import CodeGeneration, LoaderCodes, Reports
122
+ from .finalizations import Finalization
123
+ from .freezer.Onefile import getCompressorPython, packDistFolderToOnefile
124
+ from .freezer.Standalone import (
125
+ checkFreezingModuleSet,
126
+ copyDllsUsed,
127
+ detectUsedDLLs,
128
+ signDistributionMacOS,
129
+ )
130
+ from .optimizations.Optimization import optimizeModules
131
+ from .pgo.PGO import readPGOInputFile
132
+ from .reports.Reports import writeCompilationReports
133
+ from .tree.Building import buildMainModuleTree
134
+ from .tree.SourceHandling import writeSourceCode
135
+ from .TreeXML import dumpTreeXMLToFile
136
+
137
+
138
+ def _createMainModule():
139
+ """Create a node tree.
140
+
141
+ Turn that source code into a node tree structure. If following into
142
+ imported modules is allowed, more trees will be available during
143
+ optimization, or even immediately through forcefully included
144
+ directory paths.
145
+
146
+ """
147
+ # Many cases and details to deal with, pylint: disable=too-many-branches
148
+
149
+ Plugins.onBeforeCodeParsing()
150
+
151
+ # First, build the raw node tree from the source code.
152
+ if Options.isMultidistMode():
153
+ assert not Options.shallMakeModule()
154
+
155
+ main_module = buildMainModuleTree(
156
+ source_code=createMultidistMainSourceCode(),
157
+ )
158
+ else:
159
+ main_module = buildMainModuleTree(
160
+ source_code=None,
161
+ )
162
+
163
+ OutputDirectories.setMainModule(main_module)
164
+
165
+ for distribution_name in Options.getShallIncludeDistributionMetadata():
166
+ distribution = getDistribution(distribution_name)
167
+
168
+ if distribution is None:
169
+ general.sysexit(
170
+ "Error, could not find distribution '%s' for which metadata was asked to be included."
171
+ % distribution_name
172
+ )
173
+
174
+ addDistributionMetadataValue(
175
+ distribution_name=distribution_name,
176
+ distribution=distribution,
177
+ reason="user requested",
178
+ )
179
+
180
+ # First remove old object files and old generated files, old binary or
181
+ # module, and standalone mode program directory if any, they can only do
182
+ # harm.
183
+ source_dir = OutputDirectories.getSourceDirectoryPath()
184
+
185
+ if not Options.shallOnlyExecCCompilerCall():
186
+ cleanSconsDirectory(source_dir)
187
+
188
+ # Prepare the ".dist" directory, throwing away what was there before.
189
+ if Options.isStandaloneMode():
190
+ standalone_dir = OutputDirectories.getStandaloneDirectoryPath(bundle=False)
191
+ resetDirectory(
192
+ path=standalone_dir,
193
+ logger=general,
194
+ ignore_errors=True,
195
+ extra_recommendation="Stop previous binary.",
196
+ )
197
+
198
+ if Options.shallCreateAppBundle():
199
+ resetDirectory(
200
+ path=changeFilenameExtension(standalone_dir, ".app"),
201
+ logger=general,
202
+ ignore_errors=True,
203
+ extra_recommendation=None,
204
+ )
205
+
206
+ # Delete result file, to avoid confusion with previous build and to
207
+ # avoid locking issues after the build.
208
+ deleteFile(
209
+ path=OutputDirectories.getResultFullpath(onefile=False), must_exist=False
210
+ )
211
+ if Options.isOnefileMode():
212
+ deleteFile(
213
+ path=OutputDirectories.getResultFullpath(onefile=True), must_exist=False
214
+ )
215
+
216
+ # Also make sure we inform the user in case the compression is not possible.
217
+ getCompressorPython()
218
+
219
+ # Second, do it for the directories given.
220
+ for plugin_filename in Options.getShallFollowExtra():
221
+ scanPluginPath(plugin_filename=plugin_filename, module_package=None)
222
+
223
+ for pattern in Options.getShallFollowExtraFilePatterns():
224
+ scanPluginFilenamePattern(pattern=pattern)
225
+
226
+ # For packages, include the full suite.
227
+ if Options.shallMakePackage():
228
+ scanIncludedPackage(main_module.getFullName())
229
+
230
+ for package_name in Options.getMustIncludePackages():
231
+ scanIncludedPackage(package_name)
232
+
233
+ for module_name in Options.getMustIncludeModules():
234
+ module_name, module_filename, module_kind, finding = locateModule(
235
+ module_name=ModuleName(module_name),
236
+ parent_package=None,
237
+ level=0,
238
+ )
239
+
240
+ if finding != "absolute":
241
+ inclusion_logger.sysexit(
242
+ "Error, failed to locate module '%s' that you asked to include."
243
+ % module_name.asString()
244
+ )
245
+
246
+ if module_kind == "built-in":
247
+ # TODO:
248
+ inclusion_logger.warning(
249
+ "Note, module '%s' that you asked to include is built-in."
250
+ % module_name.asString()
251
+ )
252
+ else:
253
+ scanPluginSinglePath(
254
+ plugin_filename=module_filename,
255
+ module_package=module_name.getPackageName(),
256
+ package_only=True,
257
+ )
258
+
259
+ # Allow plugins to add more modules based on the initial set being complete.
260
+ Plugins.onModuleInitialSet()
261
+
262
+ # Then optimize the tree and potentially recursed modules.
263
+ # TODO: The passed filename is really something that should come from
264
+ # a command line option, it's a filename for the graph, which might not
265
+ # need a default at all.
266
+ optimizeModules(main_module.getOutputFilename())
267
+
268
+ # Freezer may have concerns for some modules.
269
+ if Options.isStandaloneMode():
270
+ checkFreezingModuleSet()
271
+
272
+ # Check if distribution meta data is included, that cannot be used.
273
+ for distribution_name, meta_data_value in getDistributionMetadataValues():
274
+ if not ModuleRegistry.hasDoneModule(meta_data_value.module_name):
275
+ inclusion_logger.sysexit(
276
+ "Error, including metadata for distribution '%s' without including related package '%s'."
277
+ % (distribution_name, meta_data_value.module_name)
278
+ )
279
+
280
+ # Allow plugins to comment on final module set.
281
+ Plugins.onModuleCompleteSet()
282
+
283
+ if Options.isExperimental("check_xml_persistence"):
284
+ for module in ModuleRegistry.getRootModules():
285
+ if module.isMainModule():
286
+ return module
287
+
288
+ assert False
289
+ else:
290
+ # Main module might change behind our back, look it up again.
291
+ return main_module
292
+
293
+
294
+ def dumpTreeXML():
295
+ filename = Options.getXMLDumpOutputFilename()
296
+
297
+ if filename is not None:
298
+ with openTextFile(filename, "wb") as output_file:
299
+ # XML output only.
300
+ for module in ModuleRegistry.getDoneModules():
301
+ dumpTreeXMLToFile(tree=module.asXml(), output_file=output_file)
302
+
303
+ general.info("XML dump of node state written to file '%s'." % filename)
304
+
305
+
306
+ def pickSourceFilenames(source_dir, modules):
307
+ """Pick the names for the C files of each module.
308
+
309
+ Args:
310
+ source_dir - the directory to put the module sources will be put into
311
+ modules - all the modules to build.
312
+
313
+ Returns:
314
+ Dictionary mapping modules to filenames in source_dir.
315
+
316
+ Notes:
317
+ These filenames can collide, due to e.g. mixed case usage, or there
318
+ being duplicate copies, e.g. a package named the same as the main
319
+ binary.
320
+
321
+ Conflicts are resolved by appending @<number> with a count in the
322
+ list of sorted modules. We try to be reproducible here, so we get
323
+ still good caching for external tools.
324
+ """
325
+
326
+ collision_filenames = set()
327
+
328
+ def _getModuleFilenames(module):
329
+ base_filename = os.path.join(source_dir, "module." + module.getFullName())
330
+
331
+ # Note: Could detect if the file system is cases sensitive in source_dir
332
+ # or not, but that's probably not worth the effort. False positives do
333
+ # no harm at all. We cannot use normcase, as macOS is not using one that
334
+ # will tell us the truth.
335
+ collision_filename = base_filename.lower()
336
+
337
+ return base_filename, collision_filename
338
+
339
+ seen_filenames = set()
340
+
341
+ # First pass, check for collisions.
342
+ for module in modules:
343
+ if module.isPythonExtensionModule():
344
+ continue
345
+
346
+ _base_filename, collision_filename = _getModuleFilenames(module)
347
+
348
+ if collision_filename in seen_filenames:
349
+ collision_filenames.add(collision_filename)
350
+
351
+ seen_filenames.add(collision_filename)
352
+
353
+ # Our output.
354
+ module_filenames = {}
355
+
356
+ # Count up for colliding filenames as we go.
357
+ collision_counts = {}
358
+
359
+ # Second pass, this time sorted, so we get deterministic results. We will
360
+ # apply an "@1"/"@2",... to disambiguate the filenames.
361
+ for module in sorted(modules, key=lambda x: x.getFullName()):
362
+ if module.isPythonExtensionModule():
363
+ continue
364
+
365
+ base_filename, collision_filename = _getModuleFilenames(module)
366
+
367
+ if collision_filename in collision_filenames:
368
+ collision_counts[collision_filename] = (
369
+ collision_counts.get(collision_filename, 0) + 1
370
+ )
371
+ base_filename += "@%d" % collision_counts[collision_filename]
372
+
373
+ module_filenames[module] = base_filename + ".c"
374
+
375
+ return module_filenames
376
+
377
+
378
+ def makeSourceDirectory():
379
+ """Get the full list of modules imported, create code for all of them."""
380
+ # We deal with a lot of details here, but rather one by one, and split makes
381
+ # no sense, pylint: disable=too-many-branches
382
+
383
+ # assert main_module in ModuleRegistry.getDoneModules()
384
+
385
+ # Lets check if the asked modules are actually present, and warn the
386
+ # user if one of those was not found.
387
+ for any_case_module in Options.getShallFollowModules():
388
+ if "*" in any_case_module or "{" in any_case_module:
389
+ continue
390
+
391
+ if not ModuleRegistry.hasDoneModule(
392
+ any_case_module
393
+ ) and not ModuleRegistry.hasRootModule(any_case_module):
394
+ general.warning(
395
+ "Did not follow import to unused '%s', consider include options."
396
+ % any_case_module
397
+ )
398
+
399
+ # Prepare code generation, i.e. execute finalization for it.
400
+ for module in ModuleRegistry.getDoneModules():
401
+ if module.isCompiledPythonModule():
402
+ Finalization.prepareCodeGeneration(module)
403
+
404
+ # Do some reporting and determine compiled module to work on
405
+ compiled_modules = []
406
+
407
+ for module in ModuleRegistry.getDoneModules():
408
+ if module.isCompiledPythonModule():
409
+ compiled_modules.append(module)
410
+
411
+ if Options.isShowInclusion():
412
+ inclusion_logger.info(
413
+ "Included compiled module '%s'." % module.getFullName()
414
+ )
415
+ elif module.isPythonExtensionModule():
416
+ addExtensionModuleEntryPoint(module)
417
+
418
+ if Options.isShowInclusion():
419
+ inclusion_logger.info(
420
+ "Included extension module '%s'." % module.getFullName()
421
+ )
422
+ elif module.isUncompiledPythonModule():
423
+ if Options.isShowInclusion():
424
+ inclusion_logger.info(
425
+ "Included uncompiled module '%s'." % module.getFullName()
426
+ )
427
+ else:
428
+ assert False, module
429
+
430
+ # Pick filenames.
431
+ source_dir = OutputDirectories.getSourceDirectoryPath()
432
+
433
+ module_filenames = pickSourceFilenames(
434
+ source_dir=source_dir, modules=compiled_modules
435
+ )
436
+
437
+ setupProgressBar(
438
+ stage="C Source Generation",
439
+ unit="module",
440
+ total=len(compiled_modules),
441
+ )
442
+
443
+ # Generate code for compiled modules, this can be slow, so do it separately
444
+ # with a progress bar.
445
+ for module in compiled_modules:
446
+ c_filename = module_filenames[module]
447
+
448
+ reportProgressBar(
449
+ item=module.getFullName(),
450
+ )
451
+
452
+ source_code = CodeGeneration.generateModuleCode(
453
+ module=module,
454
+ data_filename=os.path.basename(c_filename[:-2] + ".const"),
455
+ )
456
+
457
+ writeSourceCode(filename=c_filename, source_code=source_code)
458
+
459
+ closeProgressBar()
460
+
461
+ (
462
+ helper_decl_code,
463
+ helper_impl_code,
464
+ constants_header_code,
465
+ constants_body_code,
466
+ ) = CodeGeneration.generateHelpersCode()
467
+
468
+ writeSourceCode(
469
+ filename=os.path.join(source_dir, "__helpers.h"), source_code=helper_decl_code
470
+ )
471
+
472
+ writeSourceCode(
473
+ filename=os.path.join(source_dir, "__helpers.c"), source_code=helper_impl_code
474
+ )
475
+
476
+ writeSourceCode(
477
+ filename=os.path.join(source_dir, "__constants.h"),
478
+ source_code=constants_header_code,
479
+ )
480
+
481
+ writeSourceCode(
482
+ filename=os.path.join(source_dir, "__constants.c"),
483
+ source_code=constants_body_code,
484
+ )
485
+
486
+
487
+ def _runPgoBinary():
488
+ pgo_executable = OutputDirectories.getPgoRunExecutable()
489
+
490
+ if not os.path.isfile(pgo_executable):
491
+ general.sysexit("Error, failed to produce PGO binary '%s'" % pgo_executable)
492
+
493
+ return callProcess(
494
+ [getExternalUsePath(pgo_executable)] + Options.getPgoArgs(),
495
+ shell=False,
496
+ )
497
+
498
+
499
+ def _wasMsvcMode():
500
+ if not isWin32Windows():
501
+ return False
502
+
503
+ return (
504
+ getSconsReportValue(
505
+ source_dir=OutputDirectories.getSourceDirectoryPath(), key="msvc_mode"
506
+ )
507
+ == "True"
508
+ )
509
+
510
+
511
+ def _deleteMsvcPGOFiles(pgo_mode):
512
+ assert _wasMsvcMode()
513
+
514
+ msvc_pgc_filename = OutputDirectories.getResultBasePath(onefile=False) + "!1.pgc"
515
+ deleteFile(msvc_pgc_filename, must_exist=False)
516
+
517
+ if pgo_mode == "use":
518
+ msvc_pgd_filename = OutputDirectories.getResultBasePath(onefile=False) + ".pgd"
519
+ deleteFile(msvc_pgd_filename, must_exist=False)
520
+
521
+ return msvc_pgc_filename
522
+
523
+
524
+ def _runCPgoBinary():
525
+ # Note: For exit codes, we do not insist on anything yet, maybe we could point it out
526
+ # or ask people to make scripts that buffer these kinds of errors, and take an error
527
+ # instead as a serious failure.
528
+
529
+ general.info(
530
+ "Running created binary to produce C level PGO information:", style="blue"
531
+ )
532
+
533
+ if _wasMsvcMode():
534
+ msvc_pgc_filename = _deleteMsvcPGOFiles(pgo_mode="generate")
535
+
536
+ with withEnvironmentVarOverridden(
537
+ "PATH",
538
+ getSconsReportValue(
539
+ source_dir=OutputDirectories.getSourceDirectoryPath(), key="PATH"
540
+ ),
541
+ ):
542
+ exit_code_pgo = _runPgoBinary()
543
+
544
+ pgo_data_collected = os.path.exists(msvc_pgc_filename)
545
+ else:
546
+ exit_code_pgo = _runPgoBinary()
547
+
548
+ # gcc file suffix, spell-checker: ignore gcda
549
+ gcc_constants_pgo_filename = os.path.join(
550
+ OutputDirectories.getSourceDirectoryPath(), "__constants.gcda"
551
+ )
552
+
553
+ pgo_data_collected = os.path.exists(gcc_constants_pgo_filename)
554
+
555
+ if exit_code_pgo != 0:
556
+ pgo_logger.warning(
557
+ """\
558
+ Error, the C PGO compiled program error exited. Make sure it works \
559
+ fully before using '--pgo-c' option."""
560
+ )
561
+
562
+ if not pgo_data_collected:
563
+ pgo_logger.sysexit(
564
+ """\
565
+ Error, no C PGO compiled program did not produce expected information, \
566
+ did the created binary run at all?"""
567
+ )
568
+
569
+ pgo_logger.info("Successfully collected C level PGO information.", style="blue")
570
+
571
+
572
+ def _runPythonPgoBinary():
573
+ # Note: For exit codes, we do not insist on anything yet, maybe we could point it out
574
+ # or ask people to make scripts that buffer these kinds of errors, and take an error
575
+ # instead as a serious failure.
576
+
577
+ pgo_filename = OutputDirectories.getPgoRunInputFilename()
578
+
579
+ with withEnvironmentVarOverridden("NUITKA_PGO_OUTPUT", pgo_filename):
580
+ exit_code = _runPgoBinary()
581
+
582
+ if not os.path.exists(pgo_filename):
583
+ general.sysexit(
584
+ """\
585
+ Error, no Python PGO information produced, did the created binary
586
+ run (exit code %d) as expected?"""
587
+ % exit_code
588
+ )
589
+
590
+ return pgo_filename
591
+
592
+
593
+ def runSconsBackend():
594
+ # Scons gets transported many details, that we express as variables, and
595
+ # have checks for them, leading to many branches and statements,
596
+ # pylint: disable=too-many-branches,too-many-statements
597
+ scons_options, env_values = getCommonSconsOptions()
598
+
599
+ setPythonTargetOptions(scons_options)
600
+
601
+ scons_options["source_dir"] = OutputDirectories.getSourceDirectoryPath()
602
+ scons_options["nuitka_python"] = asBoolStr(isNuitkaPython())
603
+ scons_options["debug_mode"] = asBoolStr(Options.is_debug)
604
+ scons_options["debugger_mode"] = asBoolStr(Options.shallRunInDebugger())
605
+ scons_options["python_debug"] = asBoolStr(Options.shallUsePythonDebug())
606
+ scons_options["full_compat"] = asBoolStr(Options.is_full_compat)
607
+ scons_options["experimental"] = ",".join(Options.getExperimentalIndications())
608
+ scons_options["trace_mode"] = asBoolStr(Options.shallTraceExecution())
609
+ scons_options["file_reference_mode"] = Options.getFileReferenceMode()
610
+ scons_options["compiled_module_count"] = "%d" % len(
611
+ ModuleRegistry.getCompiledModules()
612
+ )
613
+
614
+ if Options.isLowMemory():
615
+ scons_options["low_memory"] = asBoolStr(True)
616
+
617
+ scons_options["result_exe"] = OutputDirectories.getResultFullpath(onefile=False)
618
+
619
+ if not Options.shallMakeModule():
620
+ main_module = ModuleRegistry.getRootTopModule()
621
+ assert main_module.isMainModule()
622
+
623
+ main_module_name = main_module.getFullName()
624
+ if main_module_name != "__main__":
625
+ scons_options["main_module_name"] = main_module_name
626
+
627
+ if Options.shallUseStaticLibPython():
628
+ scons_options["static_libpython"] = getSystemStaticLibPythonPath()
629
+
630
+ if isDebianPackagePython():
631
+ scons_options["debian_python"] = asBoolStr(True)
632
+ if isFedoraPackagePython():
633
+ scons_options["fedora_python"] = asBoolStr(True)
634
+ if isArchPackagePython():
635
+ scons_options["arch_python"] = asBoolStr(True)
636
+ if isApplePython():
637
+ scons_options["apple_python"] = asBoolStr(True)
638
+ if isPyenvPython():
639
+ scons_options["pyenv_python"] = asBoolStr(True)
640
+
641
+ if Options.getForcedStdoutPath():
642
+ scons_options["forced_stdout_path"] = Options.getForcedStdoutPath()
643
+
644
+ if Options.getForcedStderrPath():
645
+ scons_options["forced_stderr_path"] = Options.getForcedStderrPath()
646
+
647
+ if Options.isProfile():
648
+ scons_options["profile_mode"] = asBoolStr(True)
649
+
650
+ if Options.shallTreatUninstalledPython():
651
+ scons_options["uninstalled_python"] = asBoolStr(True)
652
+
653
+ if ModuleRegistry.getUncompiledTechnicalModules():
654
+ scons_options["frozen_modules"] = str(
655
+ len(ModuleRegistry.getUncompiledTechnicalModules())
656
+ )
657
+
658
+ if hasPythonFlagNoWarnings():
659
+ scons_options["no_python_warnings"] = asBoolStr(True)
660
+
661
+ if hasPythonFlagNoAsserts():
662
+ scons_options["python_sysflag_optimize"] = str(
663
+ 2 if hasPythonFlagNoDocStrings() else 1
664
+ )
665
+
666
+ scons_options["python_flag_no_asserts"] = asBoolStr(True)
667
+
668
+ if hasPythonFlagNoDocStrings():
669
+ scons_options["python_flag_no_docstrings"] = asBoolStr(True)
670
+
671
+ if hasPythonFlagNoAnnotations():
672
+ scons_options["python_flag_no_annotations"] = asBoolStr(True)
673
+
674
+ if python_version < 0x300 and sys.flags.py3k_warning:
675
+ scons_options["python_sysflag_py3k_warning"] = asBoolStr(True)
676
+
677
+ if python_version < 0x300 and (
678
+ sys.flags.division_warning or sys.flags.py3k_warning
679
+ ):
680
+ scons_options["python_sysflag_division_warning"] = asBoolStr(True)
681
+
682
+ if sys.flags.bytes_warning:
683
+ scons_options["python_sysflag_bytes_warning"] = asBoolStr(True)
684
+
685
+ if int(os.getenv("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
686
+ scons_options["python_sysflag_no_site"] = asBoolStr(True)
687
+
688
+ if Options.hasPythonFlagTraceImports():
689
+ scons_options["python_sysflag_verbose"] = asBoolStr(True)
690
+
691
+ if Options.hasPythonFlagNoRandomization():
692
+ scons_options["python_sysflag_no_randomization"] = asBoolStr(True)
693
+
694
+ if python_version < 0x300 and sys.flags.unicode:
695
+ scons_options["python_sysflag_unicode"] = asBoolStr(True)
696
+
697
+ if python_version >= 0x370 and sys.flags.utf8_mode:
698
+ scons_options["python_sysflag_utf8"] = asBoolStr(True)
699
+
700
+ if hasPythonFlagNoBytecodeRuntimeCache():
701
+ scons_options["python_sysflag_dontwritebytecode"] = asBoolStr(True)
702
+
703
+ if hasPythonFlagNoCurrentDirectoryInPath():
704
+ scons_options["python_sysflag_safe_path"] = asBoolStr(True)
705
+
706
+ if hasPythonFlagUnbuffered():
707
+ scons_options["python_sysflag_unbuffered"] = asBoolStr(True)
708
+
709
+ if hasPythonFlagIsolated():
710
+ scons_options["python_sysflag_isolated"] = asBoolStr(True)
711
+
712
+ abiflags = getPythonABI()
713
+ if abiflags:
714
+ scons_options["abiflags"] = abiflags
715
+
716
+ link_module_libs = getModuleLinkerLibs()
717
+ if link_module_libs:
718
+ scons_options["link_module_libs"] = ",".join(link_module_libs)
719
+
720
+ # Allow plugins to build definitions.
721
+ env_values.update(Plugins.getBuildDefinitions())
722
+
723
+ if Options.shallCreatePythonPgoInput():
724
+ scons_options["pgo_mode"] = "python"
725
+
726
+ result = runScons(
727
+ scons_options=scons_options,
728
+ env_values=env_values,
729
+ scons_filename="Backend.scons",
730
+ )
731
+
732
+ if not result:
733
+ return result, scons_options
734
+
735
+ # Need to make it usable before executing it.
736
+ executePostProcessing(scons_options["result_exe"])
737
+ _runPythonPgoBinary()
738
+
739
+ return True, scons_options
740
+
741
+ # Need to restart compilation from scratch here.
742
+ if Options.isCPgoMode():
743
+ # For C level PGO, we have a 2 pass system. TODO: Make it more global for onefile
744
+ # and standalone mode proper support, which might need data files to be
745
+ # there, which currently are not yet there, so it won't run.
746
+ if Options.isCPgoMode():
747
+ scons_options["pgo_mode"] = "generate"
748
+
749
+ result = runScons(
750
+ scons_options=scons_options,
751
+ env_values=env_values,
752
+ scons_filename="Backend.scons",
753
+ )
754
+
755
+ if not result:
756
+ return result, scons_options
757
+
758
+ # Need to make it usable before executing it.
759
+ executePostProcessing(scons_options["result_exe"])
760
+ _runCPgoBinary()
761
+ scons_options["pgo_mode"] = "use"
762
+
763
+ result = (
764
+ runScons(
765
+ scons_options=scons_options,
766
+ env_values=env_values,
767
+ scons_filename="Backend.scons",
768
+ ),
769
+ scons_options,
770
+ )
771
+
772
+ # Delete PGO files if asked to do that.
773
+ if scons_options.get("pgo_mode") == "use" and _wasMsvcMode():
774
+ _deleteMsvcPGOFiles(pgo_mode="use")
775
+
776
+ return result
777
+
778
+
779
+ def callExecPython(args, add_path, uac):
780
+ if add_path:
781
+ if "PYTHONPATH" in os.environ:
782
+ os.environ["PYTHONPATH"] += ":" + Options.getOutputDir()
783
+ else:
784
+ os.environ["PYTHONPATH"] = Options.getOutputDir()
785
+
786
+ # Add the main arguments, previous separated.
787
+ args += Options.getPositionalArgs()[1:] + Options.getMainArgs()
788
+
789
+ callExecProcess(args, uac=uac)
790
+
791
+
792
+ def _executeMain(binary_filename):
793
+ # Wrap in debugger, unless the CMD file contains that call already.
794
+ if Options.shallRunInDebugger() and not Options.shallCreateScriptFileForExecution():
795
+ args = wrapCommandForDebuggerForExec(command=(binary_filename,))
796
+ else:
797
+ args = (binary_filename, binary_filename)
798
+
799
+ callExecPython(
800
+ args=args,
801
+ add_path=False,
802
+ uac=isWin32Windows() and Options.shallAskForWindowsAdminRights(),
803
+ )
804
+
805
+
806
+ def _executeModule(tree):
807
+ """Execute the extension module just created."""
808
+
809
+ if python_version < 0x300:
810
+ python_command_template = """\
811
+ import os, imp;\
812
+ assert os.path.normcase(os.path.abspath(os.path.normpath(\
813
+ imp.find_module('%(module_name)s')[1]))) == %(expected_filename)r,\
814
+ 'Error, cannot launch extension module %(module_name)s, original package is in the way.'"""
815
+ else:
816
+ python_command_template = """\
817
+ import os, importlib.util;\
818
+ assert os.path.normcase(os.path.abspath(os.path.normpath(\
819
+ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
820
+ 'Error, cannot launch extension module %(module_name)s, original package is in the way.'"""
821
+
822
+ output_dir = os.path.normpath(Options.getOutputDir())
823
+ if output_dir != ".":
824
+ python_command_template = (
825
+ """\
826
+ import sys; sys.path.insert(0, %(output_dir)r)
827
+ """
828
+ + python_command_template
829
+ )
830
+
831
+ python_command_template += ";__import__('%(module_name)s')"
832
+
833
+ python_command = python_command_template % {
834
+ "module_name": tree.getName(),
835
+ "expected_filename": os.path.normcase(
836
+ os.path.abspath(
837
+ os.path.normpath(OutputDirectories.getResultFullpath(onefile=False))
838
+ )
839
+ ),
840
+ "output_dir": output_dir,
841
+ }
842
+
843
+ if Options.shallRunInDebugger():
844
+ args = wrapCommandForDebuggerForExec(
845
+ command=(sys.executable, "-c", python_command)
846
+ )
847
+ else:
848
+ args = (sys.executable, "python", "-c", python_command)
849
+
850
+ callExecPython(args=args, add_path=True, uac=False)
851
+
852
+
853
+ def compileTree():
854
+ source_dir = OutputDirectories.getSourceDirectoryPath()
855
+
856
+ general.info("Completed Python level compilation and optimization.")
857
+
858
+ if not Options.shallOnlyExecCCompilerCall():
859
+ general.info("Generating source code for C backend compiler.")
860
+
861
+ reportMemoryUsage(
862
+ "before_c_code_generation",
863
+ (
864
+ "Total memory usage before generating C code:"
865
+ if Options.isShowProgress() or Options.isShowMemory()
866
+ else None
867
+ ),
868
+ )
869
+
870
+ # Now build the target language code for the whole tree.
871
+ makeSourceDirectory()
872
+
873
+ bytecode_accessor = ConstantAccessor(
874
+ data_filename="__bytecode.const", top_level_name="bytecode_data"
875
+ )
876
+
877
+ # This should take all bytecode values, even ones needed for frozen or
878
+ # not produce anything.
879
+ loader_code = LoaderCodes.getMetaPathLoaderBodyCode(bytecode_accessor)
880
+
881
+ writeSourceCode(
882
+ filename=os.path.join(source_dir, "__loader.c"), source_code=loader_code
883
+ )
884
+
885
+ else:
886
+ source_dir = OutputDirectories.getSourceDirectoryPath()
887
+
888
+ if not os.path.isfile(os.path.join(source_dir, "__helpers.h")):
889
+ general.sysexit("Error, no previous build directory exists.")
890
+
891
+ reportMemoryUsage(
892
+ "before_running_scons",
893
+ (
894
+ "Total memory usage before running scons"
895
+ if Options.isShowProgress() or Options.isShowMemory()
896
+ else None
897
+ ),
898
+ )
899
+
900
+ if Options.isShowMemory():
901
+ InstanceCounters.printStats()
902
+
903
+ Reports.doMissingOptimizationReport()
904
+
905
+ if Options.shallNotDoExecCCompilerCall():
906
+ return True, {}
907
+
908
+ general.info("Running data composer tool for optimal constant value handling.")
909
+
910
+ runDataComposer(source_dir)
911
+
912
+ Plugins.writeExtraCodeFiles(onefile=False)
913
+
914
+ general.info("Running C compilation via Scons.")
915
+
916
+ # Run the Scons to build things.
917
+ result, scons_options = runSconsBackend()
918
+
919
+ return result, scons_options
920
+
921
+
922
+ def handleSyntaxError(e):
923
+ # Syntax or indentation errors, output them to the user and abort. If
924
+ # we are not in full compat, and user has not specified the Python
925
+ # versions he wants, tell him about the potential version problem.
926
+ error_message = SyntaxErrors.formatOutput(e)
927
+
928
+ if not Options.is_full_compat:
929
+ suggested_python_version_str = getSupportedPythonVersions()[-1]
930
+
931
+ error_message += """
932
+
933
+ Nuitka is very syntax compatible with standard Python. It is currently running
934
+ with Python version '%s', you might want to specify more clearly with the use
935
+ of the precise Python interpreter binary and '-m nuitka', e.g. use this
936
+ 'python%s -m nuitka' option, if that's not the one the program expects.
937
+ """ % (
938
+ python_version_str,
939
+ suggested_python_version_str,
940
+ )
941
+
942
+ # Important to have the same error
943
+ sys.exit(error_message)
944
+
945
+
946
+ def _main():
947
+ """Main program flow of Nuitka
948
+
949
+ At this point, options will be parsed already, Nuitka will be executing
950
+ in the desired version of Python with desired flags, and we just get
951
+ to execute the task assigned.
952
+
953
+ We might be asked to only re-compile generated C, dump only an XML
954
+ representation of the internal node tree after optimization, etc.
955
+ """
956
+
957
+ # Main has to fulfill many options, leading to many branches and statements
958
+ # to deal with them. pylint: disable=too-many-branches,too-many-statements
959
+
960
+ # In case we are in a PGO run, we read its information first, so it becomes
961
+ # available for later parts.
962
+ pgo_filename = getPythonPgoInput()
963
+ if pgo_filename is not None:
964
+ readPGOInputFile(pgo_filename)
965
+
966
+ general.info(
967
+ leader="Starting Python compilation with:",
968
+ message="%s %s %s."
969
+ % doNotBreakSpaces(
970
+ "Version '%s'" % getNuitkaVersion(),
971
+ "on Python %s (flavor '%s')" % (python_version_str, getPythonFlavorName()),
972
+ "commercial grade '%s'" % (getCommercialVersion() or "not installed"),
973
+ ),
974
+ )
975
+
976
+ reportMemoryUsage(
977
+ "after_launch",
978
+ (
979
+ "Total memory usage before processing:"
980
+ if Options.isShowProgress() or Options.isShowMemory()
981
+ else None
982
+ ),
983
+ )
984
+
985
+ # Initialize the importing layer from options, main filenames, debugging
986
+ # options, etc.
987
+ setupImportingFromOptions()
988
+
989
+ Plugins.onCompilationStartChecks()
990
+
991
+ addIncludedDataFilesFromFileOptions()
992
+ addIncludedDataFilesFromPackageOptions()
993
+
994
+ # Turn that source code into a node tree structure.
995
+ try:
996
+ main_module = _createMainModule()
997
+ except (SyntaxError, IndentationError) as e:
998
+ handleSyntaxError(e)
999
+
1000
+ addIncludedDataFilesFromPlugins()
1001
+
1002
+ dumpTreeXML()
1003
+
1004
+ # Make the actual compilation.
1005
+ result, scons_options = compileTree()
1006
+
1007
+ # Exit if compilation failed.
1008
+ if not result:
1009
+ general.sysexit(
1010
+ message="Failed unexpectedly in Scons C backend compilation.",
1011
+ mnemonic="scons-backend-failure",
1012
+ reporting=True,
1013
+ )
1014
+
1015
+ # Relaunch in case of Python PGO input to be produced.
1016
+ if Options.shallCreatePythonPgoInput():
1017
+ # Will not return.
1018
+ pgo_filename = OutputDirectories.getPgoRunInputFilename()
1019
+ general.info(
1020
+ "Restarting compilation using collected information from '%s'."
1021
+ % pgo_filename
1022
+ )
1023
+ reExecuteNuitka(pgo_filename=pgo_filename)
1024
+
1025
+ if Options.shallNotDoExecCCompilerCall():
1026
+ if Options.isShowMemory():
1027
+ showMemoryTrace()
1028
+
1029
+ sys.exit(0)
1030
+
1031
+ executePostProcessing(scons_options["result_exe"])
1032
+
1033
+ if Options.isStandaloneMode():
1034
+ binary_filename = scons_options["result_exe"]
1035
+
1036
+ setMainEntryPoint(binary_filename)
1037
+
1038
+ for module in ModuleRegistry.getDoneModules():
1039
+ addIncludedEntryPoints(Plugins.considerExtraDlls(module))
1040
+
1041
+ detectUsedDLLs(
1042
+ standalone_entry_points=getStandaloneEntryPoints(),
1043
+ source_dir=OutputDirectories.getSourceDirectoryPath(),
1044
+ )
1045
+
1046
+ dist_dir = OutputDirectories.getStandaloneDirectoryPath()
1047
+
1048
+ if not Options.shallOnlyExecCCompilerCall():
1049
+ main_standalone_entry_point, copy_standalone_entry_points = copyDllsUsed(
1050
+ dist_dir=dist_dir,
1051
+ standalone_entry_points=getStandaloneEntryPoints(),
1052
+ )
1053
+
1054
+ data_file_paths = copyDataFiles(
1055
+ standalone_entry_points=getStandaloneEntryPoints()
1056
+ )
1057
+
1058
+ if isMacOS():
1059
+ signDistributionMacOS(
1060
+ dist_dir=dist_dir,
1061
+ data_file_paths=data_file_paths,
1062
+ main_standalone_entry_point=main_standalone_entry_point,
1063
+ copy_standalone_entry_points=copy_standalone_entry_points,
1064
+ )
1065
+
1066
+ Plugins.onStandaloneDistributionFinished(dist_dir)
1067
+
1068
+ if Options.isOnefileMode():
1069
+ packDistFolderToOnefile(dist_dir)
1070
+
1071
+ if Options.isRemoveBuildDir():
1072
+ general.info("Removing dist folder '%s'." % dist_dir)
1073
+
1074
+ removeDirectory(
1075
+ path=dist_dir,
1076
+ logger=general,
1077
+ ignore_errors=False,
1078
+ extra_recommendation=None,
1079
+ )
1080
+ else:
1081
+ general.info(
1082
+ "Keeping dist folder '%s' for inspection, no need to use it."
1083
+ % dist_dir
1084
+ )
1085
+
1086
+ # Remove the source directory (now build directory too) if asked to.
1087
+ source_dir = OutputDirectories.getSourceDirectoryPath()
1088
+
1089
+ if Options.isRemoveBuildDir():
1090
+ general.info("Removing build directory '%s'." % source_dir)
1091
+
1092
+ # Make sure the scons report is cached before deleting it.
1093
+ readSconsReport(source_dir)
1094
+ readSconsErrorReport(source_dir)
1095
+
1096
+ removeDirectory(
1097
+ path=source_dir,
1098
+ logger=general,
1099
+ ignore_errors=False,
1100
+ extra_recommendation=None,
1101
+ )
1102
+ assert not os.path.exists(source_dir)
1103
+ else:
1104
+ general.info("Keeping build directory '%s'." % source_dir)
1105
+
1106
+ final_filename = OutputDirectories.getResultFullpath(
1107
+ onefile=Options.isOnefileMode()
1108
+ )
1109
+
1110
+ if Options.isStandaloneMode() and isMacOS():
1111
+ general.info(
1112
+ "Created binary that runs on macOS %s (%s) or higher."
1113
+ % (scons_options["macos_min_version"], scons_options["macos_target_arch"])
1114
+ )
1115
+
1116
+ if scons_options["macos_target_arch"] != getArchitecture():
1117
+ general.warning(
1118
+ "It will only work as well as 'arch -%s %s %s' does."
1119
+ % (
1120
+ scons_options["macos_target_arch"],
1121
+ sys.executable,
1122
+ Options.getMainEntryPointFilenames()[0],
1123
+ ),
1124
+ mnemonic="macos-cross-compile",
1125
+ )
1126
+
1127
+ Plugins.onFinalResult(final_filename)
1128
+
1129
+ if Options.shallMakeModule():
1130
+ base_path = OutputDirectories.getResultBasePath(onefile=False)
1131
+
1132
+ if os.path.isdir(base_path) and getPackageDirFilename(base_path):
1133
+ general.warning(
1134
+ """\
1135
+ The compilation result is hidden by package directory '%s'. Importing will \
1136
+ not use compiled code while it exists because it has precedence while both \
1137
+ exist, out e.g. '--output-dir=output' to sure is importable."""
1138
+ % base_path,
1139
+ mnemonic="compiled-package-hidden-by-package",
1140
+ )
1141
+
1142
+ general.info("Successfully created '%s'." % getReportPath(final_filename))
1143
+
1144
+ writeCompilationReports(aborted=False)
1145
+
1146
+ run_filename = OutputDirectories.getResultRunFilename(
1147
+ onefile=Options.isOnefileMode()
1148
+ )
1149
+
1150
+ # Execute the module immediately if option was given.
1151
+ if Options.shallExecuteImmediately():
1152
+ general.info("Launching '%s'." % run_filename)
1153
+
1154
+ if Options.shallMakeModule():
1155
+ _executeModule(tree=main_module)
1156
+ else:
1157
+ _executeMain(run_filename)
1158
+ else:
1159
+ if run_filename != final_filename:
1160
+ general.info(
1161
+ "Execute it by launching '%s', the batch file needs to set environment."
1162
+ % run_filename
1163
+ )
1164
+
1165
+
1166
+ def main():
1167
+ try:
1168
+ _main()
1169
+ except BaseException:
1170
+ try:
1171
+ writeCompilationReports(aborted=True)
1172
+ except KeyboardInterrupt:
1173
+ general.warning("""Report writing was prevented by user interrupt.""")
1174
+ except BaseException as e: # Catch all the things, pylint: disable=broad-except
1175
+ general.warning(
1176
+ """\
1177
+ Report writing was prevented by exception %r, use option \
1178
+ '--experimental=debug-report-traceback' for full traceback."""
1179
+ % e
1180
+ )
1181
+
1182
+ if isExperimental("debug-report-traceback"):
1183
+ raise
1184
+
1185
+ raise
1186
+
1187
+
1188
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1189
+ # integrates with CPython, but also works on its own.
1190
+ #
1191
+ # Licensed under the Apache License, Version 2.0 (the "License");
1192
+ # you may not use this file except in compliance with the License.
1193
+ # You may obtain a copy of the License at
1194
+ #
1195
+ # http://www.apache.org/licenses/LICENSE-2.0
1196
+ #
1197
+ # Unless required by applicable law or agreed to in writing, software
1198
+ # distributed under the License is distributed on an "AS IS" BASIS,
1199
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1200
+ # See the License for the specific language governing permissions and
1201
+ # limitations under the License.