Nuitka-winsvc 2.7.7__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (995) hide show
  1. nuitka/Builtins.py +259 -0
  2. nuitka/BytecodeCaching.py +184 -0
  3. nuitka/Bytecodes.py +109 -0
  4. nuitka/CacheCleanup.py +54 -0
  5. nuitka/Constants.py +425 -0
  6. nuitka/Errors.py +93 -0
  7. nuitka/HardImportRegistry.py +408 -0
  8. nuitka/MainControl.py +1201 -0
  9. nuitka/ModuleRegistry.py +364 -0
  10. nuitka/OptionParsing.py +2473 -0
  11. nuitka/Options.py +2948 -0
  12. nuitka/OutputDirectories.py +201 -0
  13. nuitka/PostProcessing.py +551 -0
  14. nuitka/Progress.py +252 -0
  15. nuitka/PythonFlavors.py +426 -0
  16. nuitka/PythonOperators.py +146 -0
  17. nuitka/PythonVersions.py +513 -0
  18. nuitka/Serialization.py +291 -0
  19. nuitka/SourceCodeReferences.py +176 -0
  20. nuitka/Tracing.py +579 -0
  21. nuitka/TreeXML.py +141 -0
  22. nuitka/Variables.py +515 -0
  23. nuitka/Version.py +88 -0
  24. nuitka/__init__.py +19 -0
  25. nuitka/__main__.py +224 -0
  26. nuitka/__past__.py +217 -0
  27. nuitka/build/Backend.scons +1111 -0
  28. nuitka/build/CCompilerVersion.scons +281 -0
  29. nuitka/build/DataComposerInterface.py +116 -0
  30. nuitka/build/Offsets.scons +626 -0
  31. nuitka/build/Onefile.scons +564 -0
  32. nuitka/build/SconsCaching.py +451 -0
  33. nuitka/build/SconsCompilerSettings.py +1133 -0
  34. nuitka/build/SconsHacks.py +215 -0
  35. nuitka/build/SconsInterface.py +664 -0
  36. nuitka/build/SconsProgress.py +100 -0
  37. nuitka/build/SconsSpawn.py +436 -0
  38. nuitka/build/SconsUtils.py +939 -0
  39. nuitka/build/__init__.py +19 -0
  40. nuitka/build/include/nuitka/allocator.h +450 -0
  41. nuitka/build/include/nuitka/builtins.h +97 -0
  42. nuitka/build/include/nuitka/calling.h +123 -0
  43. nuitka/build/include/nuitka/checkers.h +39 -0
  44. nuitka/build/include/nuitka/checksum_tools.h +28 -0
  45. nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
  46. nuitka/build/include/nuitka/compiled_cell.h +64 -0
  47. nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
  48. nuitka/build/include/nuitka/compiled_frame.h +502 -0
  49. nuitka/build/include/nuitka/compiled_function.h +170 -0
  50. nuitka/build/include/nuitka/compiled_generator.h +287 -0
  51. nuitka/build/include/nuitka/compiled_method.h +54 -0
  52. nuitka/build/include/nuitka/constants.h +251 -0
  53. nuitka/build/include/nuitka/constants_blob.h +34 -0
  54. nuitka/build/include/nuitka/debug_settings.h +60 -0
  55. nuitka/build/include/nuitka/environment_variables.h +30 -0
  56. nuitka/build/include/nuitka/environment_variables_system.h +51 -0
  57. nuitka/build/include/nuitka/exception_groups.h +167 -0
  58. nuitka/build/include/nuitka/exceptions.h +1458 -0
  59. nuitka/build/include/nuitka/filesystem_paths.h +117 -0
  60. nuitka/build/include/nuitka/freelists.h +92 -0
  61. nuitka/build/include/nuitka/hedley.h +1774 -0
  62. nuitka/build/include/nuitka/helper/attributes.h +90 -0
  63. nuitka/build/include/nuitka/helper/boolean.h +86 -0
  64. nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
  65. nuitka/build/include/nuitka/helper/bytes.h +28 -0
  66. nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
  67. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  68. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  69. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  70. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
  74. nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
  75. nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
  76. nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
  77. nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
  78. nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
  79. nuitka/build/include/nuitka/helper/complex.h +46 -0
  80. nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
  81. nuitka/build/include/nuitka/helper/floats.h +32 -0
  82. nuitka/build/include/nuitka/helper/import_hard.h +121 -0
  83. nuitka/build/include/nuitka/helper/indexes.h +47 -0
  84. nuitka/build/include/nuitka/helper/ints.h +165 -0
  85. nuitka/build/include/nuitka/helper/iterators.h +376 -0
  86. nuitka/build/include/nuitka/helper/lists.h +94 -0
  87. nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
  88. nuitka/build/include/nuitka/helper/mappings.h +39 -0
  89. nuitka/build/include/nuitka/helper/operations.h +114 -0
  90. nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
  91. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
  92. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
  93. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
  94. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
  95. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  96. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
  97. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
  98. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
  100. nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
  101. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
  102. nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
  103. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
  104. nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
  105. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
  106. nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
  107. nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
  108. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
  109. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
  110. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
  111. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
  112. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
  113. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
  114. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
  115. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
  116. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
  117. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
  118. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
  119. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
  120. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
  121. nuitka/build/include/nuitka/helper/raising.h +114 -0
  122. nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
  123. nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
  124. nuitka/build/include/nuitka/helper/sequences.h +33 -0
  125. nuitka/build/include/nuitka/helper/sets.h +25 -0
  126. nuitka/build/include/nuitka/helper/slices.h +314 -0
  127. nuitka/build/include/nuitka/helper/strings.h +30 -0
  128. nuitka/build/include/nuitka/helper/subscripts.h +390 -0
  129. nuitka/build/include/nuitka/helper/tuples.h +187 -0
  130. nuitka/build/include/nuitka/helpers.h +417 -0
  131. nuitka/build/include/nuitka/importing.h +149 -0
  132. nuitka/build/include/nuitka/incbin.h +402 -0
  133. nuitka/build/include/nuitka/jit_sources.h +25 -0
  134. nuitka/build/include/nuitka/prelude.h +626 -0
  135. nuitka/build/include/nuitka/printing.h +84 -0
  136. nuitka/build/include/nuitka/python_pgo.h +57 -0
  137. nuitka/build/include/nuitka/safe_string_ops.h +57 -0
  138. nuitka/build/include/nuitka/threading.h +142 -0
  139. nuitka/build/include/nuitka/tracing.h +82 -0
  140. nuitka/build/include/nuitka/type_aliases.h +30 -0
  141. nuitka/build/include/nuitka/unfreezing.h +91 -0
  142. nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
  143. nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
  144. nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
  145. nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
  146. nuitka/build/inline_copy/bin/scons.py +58 -0
  147. nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
  148. nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
  149. nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
  150. nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
  151. nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
  152. nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
  153. nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
  154. nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
  155. nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
  156. nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
  157. nuitka/build/inline_copy/glob2/LICENSE +27 -0
  158. nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
  159. nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
  160. nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
  161. nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
  162. nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
  163. nuitka/build/inline_copy/jinja2/README.rst +2 -0
  164. nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
  165. nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
  166. nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
  167. nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
  168. nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
  169. nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
  170. nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
  171. nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
  172. nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
  173. nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
  174. nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
  175. nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
  176. nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
  177. nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
  178. nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
  179. nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
  180. nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
  181. nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
  182. nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
  183. nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
  184. nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
  185. nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
  186. nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
  187. nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
  188. nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
  189. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
  190. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
  191. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
  192. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
  193. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
  194. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
  195. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
  196. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
  197. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
  198. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
  199. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
  200. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
  201. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
  202. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
  203. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
  204. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
  205. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
  206. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
  207. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
  208. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
  209. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
  210. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
  211. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
  212. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
  213. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
  214. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
  215. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
  216. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
  217. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
  218. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
  219. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
  220. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
  221. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
  222. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
  223. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
  224. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
  225. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
  226. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
  227. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
  228. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
  229. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
  230. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
  231. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
  232. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
  233. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
  234. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
  235. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
  236. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
  237. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
  238. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
  239. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
  240. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
  241. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
  242. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
  243. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
  244. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
  245. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
  246. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
  247. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
  248. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
  249. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
  250. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
  251. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
  252. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
  253. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
  254. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
  255. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
  256. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
  257. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
  258. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
  259. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
  260. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
  261. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
  262. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
  263. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
  264. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
  265. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
  266. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
  267. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
  268. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
  269. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
  270. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
  271. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
  272. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
  273. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
  274. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
  275. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
  276. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
  277. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
  278. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
  279. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
  280. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
  281. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
  282. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
  283. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
  284. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
  285. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
  286. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
  287. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
  288. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
  289. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
  290. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
  291. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
  292. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
  293. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
  294. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
  295. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
  296. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
  297. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
  298. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
  299. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
  300. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
  301. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
  302. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
  303. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
  304. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
  305. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
  306. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
  307. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
  308. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
  309. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
  310. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
  311. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
  312. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
  313. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
  314. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
  315. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
  316. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
  317. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
  318. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
  319. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
  320. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
  321. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
  322. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
  323. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
  324. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
  325. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
  326. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
  327. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
  328. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
  329. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
  330. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
  331. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
  332. nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
  333. nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
  334. nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
  335. nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
  336. nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
  337. nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
  338. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  339. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  340. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  341. nuitka/build/inline_copy/pefile/pefile.py +8034 -0
  342. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
  343. nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
  344. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  345. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  346. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  347. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  348. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  349. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  350. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  351. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  352. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  353. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  354. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  355. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  356. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  357. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  358. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  359. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  360. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  361. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  362. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  363. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  364. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  365. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  366. nuitka/build/inline_copy/stubgen/six.py +998 -0
  367. nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
  368. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
  369. nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
  370. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
  371. nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
  372. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
  373. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
  374. nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
  375. nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
  376. nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
  377. nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
  378. nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
  379. nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
  380. nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
  381. nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
  382. nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
  383. nuitka/build/inline_copy/yaml/LICENSE +20 -0
  384. nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
  385. nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
  386. nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
  387. nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
  388. nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
  389. nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
  390. nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
  391. nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
  392. nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
  393. nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
  394. nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
  395. nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
  396. nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
  397. nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
  398. nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
  399. nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
  400. nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
  401. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  402. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  403. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  404. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  405. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  406. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  407. nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
  408. nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
  409. nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
  410. nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
  411. nuitka/build/inline_copy/zstd/common/debug.h +107 -0
  412. nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
  413. nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
  414. nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
  415. nuitka/build/inline_copy/zstd/common/fse.h +715 -0
  416. nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
  417. nuitka/build/inline_copy/zstd/common/huf.h +361 -0
  418. nuitka/build/inline_copy/zstd/common/mem.h +426 -0
  419. nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
  420. nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
  421. nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
  422. nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
  423. nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
  424. nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
  425. nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
  426. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
  427. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
  428. nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
  429. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
  430. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
  431. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
  432. nuitka/build/inline_copy/zstd/zstd.h +2391 -0
  433. nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
  434. nuitka/build/static_src/CompiledCellType.c +300 -0
  435. nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
  436. nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
  437. nuitka/build/static_src/CompiledFrameType.c +1337 -0
  438. nuitka/build/static_src/CompiledFunctionType.c +3320 -0
  439. nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
  440. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
  441. nuitka/build/static_src/CompiledMethodType.c +614 -0
  442. nuitka/build/static_src/GenerateHeadersMain.c +30 -0
  443. nuitka/build/static_src/HelpersAllocator.c +939 -0
  444. nuitka/build/static_src/HelpersAttributes.c +1241 -0
  445. nuitka/build/static_src/HelpersBuiltin.c +901 -0
  446. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
  447. nuitka/build/static_src/HelpersBytes.c +107 -0
  448. nuitka/build/static_src/HelpersCalling.c +397 -0
  449. nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
  450. nuitka/build/static_src/HelpersChecksumTools.c +59 -0
  451. nuitka/build/static_src/HelpersClasses.c +91 -0
  452. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  453. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  454. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  455. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  456. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  457. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  458. nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
  459. nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
  460. nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
  461. nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
  462. nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
  463. nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
  464. nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
  465. nuitka/build/static_src/HelpersConsole.c +124 -0
  466. nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
  467. nuitka/build/static_src/HelpersDeepcopy.c +636 -0
  468. nuitka/build/static_src/HelpersDictionaries.c +1739 -0
  469. nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
  470. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  471. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  472. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
  473. nuitka/build/static_src/HelpersExceptions.c +298 -0
  474. nuitka/build/static_src/HelpersFiles.c +353 -0
  475. nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
  476. nuitka/build/static_src/HelpersFloats.c +92 -0
  477. nuitka/build/static_src/HelpersHeapStorage.c +68 -0
  478. nuitka/build/static_src/HelpersImport.c +506 -0
  479. nuitka/build/static_src/HelpersImportHard.c +526 -0
  480. nuitka/build/static_src/HelpersJitSources.c +48 -0
  481. nuitka/build/static_src/HelpersLists.c +899 -0
  482. nuitka/build/static_src/HelpersListsGenerated.c +564 -0
  483. nuitka/build/static_src/HelpersMappings.c +46 -0
  484. nuitka/build/static_src/HelpersMatching.c +192 -0
  485. nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
  486. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
  487. nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
  488. nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
  489. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
  490. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
  491. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
  492. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  493. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
  494. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
  495. nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
  496. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
  497. nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
  498. nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
  499. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
  500. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
  501. nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
  502. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
  503. nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
  504. nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
  505. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
  506. nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
  507. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
  508. nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
  509. nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
  510. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
  511. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
  512. nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
  513. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
  514. nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
  515. nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
  516. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
  517. nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
  518. nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
  519. nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
  520. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
  521. nuitka/build/static_src/HelpersProfiling.c +104 -0
  522. nuitka/build/static_src/HelpersPythonPgo.c +113 -0
  523. nuitka/build/static_src/HelpersRaising.c +447 -0
  524. nuitka/build/static_src/HelpersSafeStrings.c +185 -0
  525. nuitka/build/static_src/HelpersSequences.c +134 -0
  526. nuitka/build/static_src/HelpersSlices.c +73 -0
  527. nuitka/build/static_src/HelpersStrings.c +998 -0
  528. nuitka/build/static_src/HelpersTuples.c +148 -0
  529. nuitka/build/static_src/HelpersTypes.c +329 -0
  530. nuitka/build/static_src/InspectPatcher.c +439 -0
  531. nuitka/build/static_src/MainProgram.c +2060 -0
  532. nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
  533. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
  534. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
  535. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
  536. nuitka/build/static_src/OnefileBootstrap.c +1580 -0
  537. nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
  538. nuitka/code_generation/AsyncgenCodes.py +186 -0
  539. nuitka/code_generation/AttributeCodes.py +357 -0
  540. nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
  541. nuitka/code_generation/BranchCodes.py +67 -0
  542. nuitka/code_generation/BuiltinCodes.py +529 -0
  543. nuitka/code_generation/CallCodes.py +1186 -0
  544. nuitka/code_generation/ClassCodes.py +156 -0
  545. nuitka/code_generation/CodeGeneration.py +1078 -0
  546. nuitka/code_generation/CodeHelperSelection.py +81 -0
  547. nuitka/code_generation/CodeHelpers.py +455 -0
  548. nuitka/code_generation/CodeObjectCodes.py +165 -0
  549. nuitka/code_generation/ComparisonCodes.py +569 -0
  550. nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
  551. nuitka/code_generation/ConditionalCodes.py +236 -0
  552. nuitka/code_generation/ConstantCodes.py +243 -0
  553. nuitka/code_generation/Contexts.py +1248 -0
  554. nuitka/code_generation/CoroutineCodes.py +253 -0
  555. nuitka/code_generation/CtypesCodes.py +46 -0
  556. nuitka/code_generation/DictCodes.py +918 -0
  557. nuitka/code_generation/Emission.py +75 -0
  558. nuitka/code_generation/ErrorCodes.py +281 -0
  559. nuitka/code_generation/EvalCodes.py +444 -0
  560. nuitka/code_generation/ExceptionCodes.py +337 -0
  561. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
  562. nuitka/code_generation/ExpressionCodes.py +61 -0
  563. nuitka/code_generation/FrameCodes.py +518 -0
  564. nuitka/code_generation/FunctionCodes.py +858 -0
  565. nuitka/code_generation/GeneratorCodes.py +218 -0
  566. nuitka/code_generation/GlobalConstants.py +249 -0
  567. nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
  568. nuitka/code_generation/IdCodes.py +53 -0
  569. nuitka/code_generation/ImportCodes.py +468 -0
  570. nuitka/code_generation/Indentation.py +45 -0
  571. nuitka/code_generation/IndexCodes.py +50 -0
  572. nuitka/code_generation/InjectCCodes.py +28 -0
  573. nuitka/code_generation/IntegerCodes.py +110 -0
  574. nuitka/code_generation/IteratorCodes.py +378 -0
  575. nuitka/code_generation/JitCodes.py +44 -0
  576. nuitka/code_generation/LabelCodes.py +68 -0
  577. nuitka/code_generation/LineNumberCodes.py +91 -0
  578. nuitka/code_generation/ListCodes.py +502 -0
  579. nuitka/code_generation/LoaderCodes.py +193 -0
  580. nuitka/code_generation/LocalsDictCodes.py +359 -0
  581. nuitka/code_generation/LoopCodes.py +88 -0
  582. nuitka/code_generation/MatchCodes.py +67 -0
  583. nuitka/code_generation/ModuleCodes.py +247 -0
  584. nuitka/code_generation/Namify.py +260 -0
  585. nuitka/code_generation/NetworkxCodes.py +51 -0
  586. nuitka/code_generation/OperationCodes.py +398 -0
  587. nuitka/code_generation/PackageResourceCodes.py +986 -0
  588. nuitka/code_generation/PrintCodes.py +93 -0
  589. nuitka/code_generation/PythonAPICodes.py +215 -0
  590. nuitka/code_generation/RaisingCodes.py +481 -0
  591. nuitka/code_generation/Reports.py +115 -0
  592. nuitka/code_generation/ReturnCodes.py +143 -0
  593. nuitka/code_generation/SetCodes.py +196 -0
  594. nuitka/code_generation/SliceCodes.py +465 -0
  595. nuitka/code_generation/StringCodes.py +303 -0
  596. nuitka/code_generation/SubscriptCodes.py +263 -0
  597. nuitka/code_generation/TensorflowCodes.py +54 -0
  598. nuitka/code_generation/TryCodes.py +326 -0
  599. nuitka/code_generation/TupleCodes.py +115 -0
  600. nuitka/code_generation/TypeAliasCodes.py +120 -0
  601. nuitka/code_generation/VariableCodes.py +519 -0
  602. nuitka/code_generation/VariableDeclarations.py +279 -0
  603. nuitka/code_generation/YieldCodes.py +253 -0
  604. nuitka/code_generation/__init__.py +19 -0
  605. nuitka/code_generation/c_types/CTypeBases.py +177 -0
  606. nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
  607. nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
  608. nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
  609. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
  610. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
  611. nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
  612. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
  613. nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
  614. nuitka/code_generation/c_types/CTypeVoids.py +92 -0
  615. nuitka/code_generation/c_types/__init__.py +19 -0
  616. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
  617. nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
  618. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
  619. nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
  620. nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
  621. nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
  622. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
  623. nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
  624. nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
  625. nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
  626. nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
  627. nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
  628. nuitka/code_generation/templates/__init__.py +19 -0
  629. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
  630. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
  631. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
  632. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
  633. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
  634. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
  635. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
  636. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
  637. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
  638. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
  639. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
  640. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
  641. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  642. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
  643. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
  644. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  645. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
  646. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
  647. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
  648. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
  649. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
  650. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
  651. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
  652. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
  653. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
  654. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
  655. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
  656. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
  657. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
  658. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
  659. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
  660. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
  661. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
  662. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
  663. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
  664. nuitka/containers/Namedtuples.py +51 -0
  665. nuitka/containers/OrderedDicts.py +191 -0
  666. nuitka/containers/OrderedSets.py +123 -0
  667. nuitka/containers/OrderedSetsFallback.py +139 -0
  668. nuitka/containers/__init__.py +19 -0
  669. nuitka/distutils/Build.py +76 -0
  670. nuitka/distutils/DistutilCommands.py +438 -0
  671. nuitka/distutils/__init__.py +19 -0
  672. nuitka/finalizations/Finalization.py +35 -0
  673. nuitka/finalizations/FinalizeMarkups.py +136 -0
  674. nuitka/finalizations/__init__.py +19 -0
  675. nuitka/freezer/DependsExe.py +257 -0
  676. nuitka/freezer/DllDependenciesCommon.py +97 -0
  677. nuitka/freezer/DllDependenciesMacOS.py +444 -0
  678. nuitka/freezer/DllDependenciesPosix.py +242 -0
  679. nuitka/freezer/DllDependenciesWin32.py +315 -0
  680. nuitka/freezer/ImportDetection.py +359 -0
  681. nuitka/freezer/IncludedDataFiles.py +689 -0
  682. nuitka/freezer/IncludedEntryPoints.py +376 -0
  683. nuitka/freezer/Onefile.py +296 -0
  684. nuitka/freezer/Standalone.py +520 -0
  685. nuitka/freezer/__init__.py +19 -0
  686. nuitka/importing/IgnoreListing.py +449 -0
  687. nuitka/importing/ImportCache.py +95 -0
  688. nuitka/importing/ImportResolving.py +186 -0
  689. nuitka/importing/Importing.py +1200 -0
  690. nuitka/importing/PreloadedPackages.py +164 -0
  691. nuitka/importing/Recursion.py +611 -0
  692. nuitka/importing/StandardLibrary.py +429 -0
  693. nuitka/importing/__init__.py +19 -0
  694. nuitka/nodes/AsyncgenNodes.py +107 -0
  695. nuitka/nodes/AttributeLookupNodes.py +124 -0
  696. nuitka/nodes/AttributeNodes.py +386 -0
  697. nuitka/nodes/AttributeNodesGenerated.py +10734 -0
  698. nuitka/nodes/BuiltinAllNodes.py +115 -0
  699. nuitka/nodes/BuiltinAnyNodes.py +124 -0
  700. nuitka/nodes/BuiltinComplexNodes.py +83 -0
  701. nuitka/nodes/BuiltinDecodingNodes.py +52 -0
  702. nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
  703. nuitka/nodes/BuiltinDictNodes.py +140 -0
  704. nuitka/nodes/BuiltinFormatNodes.py +159 -0
  705. nuitka/nodes/BuiltinHashNodes.py +63 -0
  706. nuitka/nodes/BuiltinInputNodes.py +39 -0
  707. nuitka/nodes/BuiltinIntegerNodes.py +170 -0
  708. nuitka/nodes/BuiltinIteratorNodes.py +391 -0
  709. nuitka/nodes/BuiltinLenNodes.py +61 -0
  710. nuitka/nodes/BuiltinNextNodes.py +111 -0
  711. nuitka/nodes/BuiltinOpenNodes.py +148 -0
  712. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
  713. nuitka/nodes/BuiltinRangeNodes.py +690 -0
  714. nuitka/nodes/BuiltinRefNodes.py +314 -0
  715. nuitka/nodes/BuiltinSumNodes.py +104 -0
  716. nuitka/nodes/BuiltinTypeNodes.py +454 -0
  717. nuitka/nodes/BuiltinVarsNodes.py +44 -0
  718. nuitka/nodes/BytesNodes.py +829 -0
  719. nuitka/nodes/CallNodes.py +217 -0
  720. nuitka/nodes/Checkers.py +55 -0
  721. nuitka/nodes/ChildrenHavingMixins.py +21576 -0
  722. nuitka/nodes/ClassNodes.py +286 -0
  723. nuitka/nodes/CodeObjectSpecs.py +230 -0
  724. nuitka/nodes/ComparisonNodes.py +687 -0
  725. nuitka/nodes/ConditionalNodes.py +884 -0
  726. nuitka/nodes/ConstantRefNodes.py +1717 -0
  727. nuitka/nodes/ContainerMakingNodes.py +408 -0
  728. nuitka/nodes/ContainerOperationNodes.py +87 -0
  729. nuitka/nodes/CoroutineNodes.py +144 -0
  730. nuitka/nodes/CtypesNodes.py +51 -0
  731. nuitka/nodes/DictionaryNodes.py +1513 -0
  732. nuitka/nodes/ExceptionNodes.py +393 -0
  733. nuitka/nodes/ExecEvalNodes.py +229 -0
  734. nuitka/nodes/ExpressionBases.py +1301 -0
  735. nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
  736. nuitka/nodes/ExpressionShapeMixins.py +886 -0
  737. nuitka/nodes/FrameNodes.py +413 -0
  738. nuitka/nodes/FunctionAttributeNodes.py +102 -0
  739. nuitka/nodes/FunctionNodes.py +1303 -0
  740. nuitka/nodes/FutureSpecs.py +224 -0
  741. nuitka/nodes/GeneratorNodes.py +201 -0
  742. nuitka/nodes/GlobalsLocalsNodes.py +209 -0
  743. nuitka/nodes/HardImportNodesGenerated.py +3599 -0
  744. nuitka/nodes/ImportHardNodes.py +185 -0
  745. nuitka/nodes/ImportNodes.py +1366 -0
  746. nuitka/nodes/IndicatorMixins.py +79 -0
  747. nuitka/nodes/InjectCNodes.py +51 -0
  748. nuitka/nodes/IterationHandles.py +407 -0
  749. nuitka/nodes/KeyValuePairNodes.py +378 -0
  750. nuitka/nodes/ListOperationNodes.py +525 -0
  751. nuitka/nodes/LocalsDictNodes.py +717 -0
  752. nuitka/nodes/LocalsScopes.py +505 -0
  753. nuitka/nodes/LoopNodes.py +445 -0
  754. nuitka/nodes/MatchNodes.py +60 -0
  755. nuitka/nodes/ModuleAttributeNodes.py +180 -0
  756. nuitka/nodes/ModuleNodes.py +1137 -0
  757. nuitka/nodes/NetworkxNodes.py +45 -0
  758. nuitka/nodes/NodeBases.py +890 -0
  759. nuitka/nodes/NodeMakingHelpers.py +481 -0
  760. nuitka/nodes/NodeMetaClasses.py +172 -0
  761. nuitka/nodes/OperatorNodes.py +944 -0
  762. nuitka/nodes/OperatorNodesUnary.py +403 -0
  763. nuitka/nodes/OsSysNodes.py +215 -0
  764. nuitka/nodes/OutlineNodes.py +372 -0
  765. nuitka/nodes/PackageMetadataNodes.py +982 -0
  766. nuitka/nodes/PackageResourceNodes.py +424 -0
  767. nuitka/nodes/PrintNodes.py +105 -0
  768. nuitka/nodes/ReturnNodes.py +255 -0
  769. nuitka/nodes/SideEffectNodes.py +139 -0
  770. nuitka/nodes/SliceNodes.py +386 -0
  771. nuitka/nodes/StatementBasesGenerated.py +3419 -0
  772. nuitka/nodes/StatementNodes.py +316 -0
  773. nuitka/nodes/StrNodes.py +919 -0
  774. nuitka/nodes/StringConcatenationNodes.py +103 -0
  775. nuitka/nodes/SubscriptNodes.py +245 -0
  776. nuitka/nodes/TensorflowNodes.py +38 -0
  777. nuitka/nodes/TryNodes.py +519 -0
  778. nuitka/nodes/TypeMatchNodes.py +65 -0
  779. nuitka/nodes/TypeNodes.py +390 -0
  780. nuitka/nodes/VariableAssignNodes.py +1177 -0
  781. nuitka/nodes/VariableDelNodes.py +320 -0
  782. nuitka/nodes/VariableNameNodes.py +153 -0
  783. nuitka/nodes/VariableRefNodes.py +895 -0
  784. nuitka/nodes/VariableReleaseNodes.py +153 -0
  785. nuitka/nodes/YieldNodes.py +121 -0
  786. nuitka/nodes/__init__.py +19 -0
  787. nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
  788. nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
  789. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  790. nuitka/nodes/shapes/ShapeMixins.py +255 -0
  791. nuitka/nodes/shapes/StandardShapes.py +1384 -0
  792. nuitka/nodes/shapes/__init__.py +19 -0
  793. nuitka/optimizations/BytecodeDemotion.py +105 -0
  794. nuitka/optimizations/FunctionInlining.py +110 -0
  795. nuitka/optimizations/Graphs.py +70 -0
  796. nuitka/optimizations/Optimization.py +363 -0
  797. nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
  798. nuitka/optimizations/Tags.py +76 -0
  799. nuitka/optimizations/TraceCollections.py +1257 -0
  800. nuitka/optimizations/ValueTraces.py +980 -0
  801. nuitka/optimizations/__init__.py +19 -0
  802. nuitka/pgo/PGO.py +160 -0
  803. nuitka/pgo/__init__.py +19 -0
  804. nuitka/plugins/PluginBase.py +1924 -0
  805. nuitka/plugins/Plugins.py +2007 -0
  806. nuitka/plugins/YamlPluginBase.py +121 -0
  807. nuitka/plugins/__init__.py +19 -0
  808. nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
  809. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
  810. nuitka/plugins/standard/DataFilesPlugin.py +311 -0
  811. nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
  812. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  813. nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
  814. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
  815. nuitka/plugins/standard/DillPlugin.py +137 -0
  816. nuitka/plugins/standard/DllFilesPlugin.py +527 -0
  817. nuitka/plugins/standard/EnumPlugin.py +64 -0
  818. nuitka/plugins/standard/EventletPlugin.py +57 -0
  819. nuitka/plugins/standard/GeventPlugin.py +64 -0
  820. nuitka/plugins/standard/GiPlugin.py +118 -0
  821. nuitka/plugins/standard/GlfwPlugin.py +138 -0
  822. nuitka/plugins/standard/ImplicitImports.py +845 -0
  823. nuitka/plugins/standard/KivyPlugin.py +141 -0
  824. nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
  825. nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
  826. nuitka/plugins/standard/NumpyPlugin.py +35 -0
  827. nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
  828. nuitka/plugins/standard/PbrPlugin.py +62 -0
  829. nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
  830. nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
  831. nuitka/plugins/standard/PmwPlugin.py +248 -0
  832. nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
  833. nuitka/plugins/standard/PywebViewPlugin.py +81 -0
  834. nuitka/plugins/standard/SpacyPlugin.py +137 -0
  835. nuitka/plugins/standard/TensorflowPlugin.py +35 -0
  836. nuitka/plugins/standard/TkinterPlugin.py +416 -0
  837. nuitka/plugins/standard/TorchPlugin.py +35 -0
  838. nuitka/plugins/standard/TransformersPlugin.py +121 -0
  839. nuitka/plugins/standard/TrioPlugin.py +33 -0
  840. nuitka/plugins/standard/UpxPlugin.py +174 -0
  841. nuitka/plugins/standard/__init__.py +19 -0
  842. nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
  843. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
  844. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
  845. nuitka/reports/CompilationReportReader.py +83 -0
  846. nuitka/reports/LicenseReport.rst.j2 +41 -0
  847. nuitka/reports/Reports.py +961 -0
  848. nuitka/reports/__init__.py +19 -0
  849. nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
  850. nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
  851. nuitka/specs/BuiltinListOperationSpecs.py +80 -0
  852. nuitka/specs/BuiltinParameterSpecs.py +831 -0
  853. nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
  854. nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
  855. nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
  856. nuitka/specs/HardImportSpecs.py +236 -0
  857. nuitka/specs/ParameterSpecs.py +630 -0
  858. nuitka/specs/__init__.py +19 -0
  859. nuitka/tools/Basics.py +55 -0
  860. nuitka/tools/__init__.py +19 -0
  861. nuitka/tools/commercial/__init__.py +21 -0
  862. nuitka/tools/data_composer/DataComposer.py +593 -0
  863. nuitka/tools/data_composer/__init__.py +19 -0
  864. nuitka/tools/data_composer/__main__.py +41 -0
  865. nuitka/tools/environments/CreateEnvironment.py +69 -0
  866. nuitka/tools/environments/Virtualenv.py +158 -0
  867. nuitka/tools/environments/__init__.py +19 -0
  868. nuitka/tools/general/__init__.py +19 -0
  869. nuitka/tools/general/dll_report/__init__.py +19 -0
  870. nuitka/tools/general/dll_report/__main__.py +83 -0
  871. nuitka/tools/general/find_module/FindModuleCode.py +127 -0
  872. nuitka/tools/general/find_module/__init__.py +19 -0
  873. nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
  874. nuitka/tools/general/generate_header/__init__.py +19 -0
  875. nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
  876. nuitka/tools/onefile_compressor/__init__.py +19 -0
  877. nuitka/tools/onefile_compressor/__main__.py +41 -0
  878. nuitka/tools/podman/Podman.py +55 -0
  879. nuitka/tools/podman/__init__.py +19 -0
  880. nuitka/tools/podman/__main__.py +425 -0
  881. nuitka/tools/profiler/__init__.py +19 -0
  882. nuitka/tools/profiler/__main__.py +93 -0
  883. nuitka/tools/scanning/DisplayDistributions.py +39 -0
  884. nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
  885. nuitka/tools/scanning/DisplayPackageData.py +73 -0
  886. nuitka/tools/scanning/__init__.py +19 -0
  887. nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
  888. nuitka/tools/specialize/Common.py +380 -0
  889. nuitka/tools/specialize/SpecializeC.py +1483 -0
  890. nuitka/tools/specialize/SpecializePython.py +1151 -0
  891. nuitka/tools/specialize/__init__.py +19 -0
  892. nuitka/tools/testing/Common.py +2007 -0
  893. nuitka/tools/testing/Constructs.py +53 -0
  894. nuitka/tools/testing/DocTests.py +156 -0
  895. nuitka/tools/testing/OutputComparison.py +313 -0
  896. nuitka/tools/testing/Pythons.py +34 -0
  897. nuitka/tools/testing/RuntimeTracing.py +260 -0
  898. nuitka/tools/testing/SearchModes.py +208 -0
  899. nuitka/tools/testing/Valgrind.py +103 -0
  900. nuitka/tools/testing/__init__.py +19 -0
  901. nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
  902. nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
  903. nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
  904. nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
  905. nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
  906. nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
  907. nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
  908. nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
  909. nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
  910. nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
  911. nuitka/tools/watch/AutoStage.py +145 -0
  912. nuitka/tools/watch/Common.py +55 -0
  913. nuitka/tools/watch/Conda.py +125 -0
  914. nuitka/tools/watch/GitHub.py +113 -0
  915. nuitka/tools/watch/Pacman.py +73 -0
  916. nuitka/tools/watch/Pipenv.py +145 -0
  917. nuitka/tools/watch/__init__.py +19 -0
  918. nuitka/tools/watch/__main__.py +615 -0
  919. nuitka/tree/Building.py +1459 -0
  920. nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
  921. nuitka/tree/Extractions.py +48 -0
  922. nuitka/tree/FutureSpecState.py +71 -0
  923. nuitka/tree/InternalModule.py +96 -0
  924. nuitka/tree/Operations.py +45 -0
  925. nuitka/tree/ReformulationAssertStatements.py +97 -0
  926. nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
  927. nuitka/tree/ReformulationBooleanExpressions.py +97 -0
  928. nuitka/tree/ReformulationCallExpressions.py +314 -0
  929. nuitka/tree/ReformulationClasses.py +407 -0
  930. nuitka/tree/ReformulationClasses3.py +1149 -0
  931. nuitka/tree/ReformulationComparisonExpressions.py +174 -0
  932. nuitka/tree/ReformulationContractionExpressions.py +676 -0
  933. nuitka/tree/ReformulationDictionaryCreation.py +304 -0
  934. nuitka/tree/ReformulationExecStatements.py +386 -0
  935. nuitka/tree/ReformulationForLoopStatements.py +215 -0
  936. nuitka/tree/ReformulationFunctionStatements.py +931 -0
  937. nuitka/tree/ReformulationImportStatements.py +333 -0
  938. nuitka/tree/ReformulationLambdaExpressions.py +185 -0
  939. nuitka/tree/ReformulationMatchStatements.py +797 -0
  940. nuitka/tree/ReformulationMultidist.py +80 -0
  941. nuitka/tree/ReformulationNamespacePackages.py +239 -0
  942. nuitka/tree/ReformulationPrintStatements.py +127 -0
  943. nuitka/tree/ReformulationSequenceCreation.py +438 -0
  944. nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
  945. nuitka/tree/ReformulationTryExceptStatements.py +418 -0
  946. nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
  947. nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
  948. nuitka/tree/ReformulationWithStatements.py +382 -0
  949. nuitka/tree/ReformulationYieldExpressions.py +133 -0
  950. nuitka/tree/SourceHandling.py +476 -0
  951. nuitka/tree/SyntaxErrors.py +143 -0
  952. nuitka/tree/TreeHelpers.py +720 -0
  953. nuitka/tree/VariableClosure.py +483 -0
  954. nuitka/tree/__init__.py +19 -0
  955. nuitka/utils/AppDirs.py +104 -0
  956. nuitka/utils/CStrings.py +208 -0
  957. nuitka/utils/CommandLineOptions.py +207 -0
  958. nuitka/utils/Distributions.py +728 -0
  959. nuitka/utils/Download.py +217 -0
  960. nuitka/utils/Execution.py +517 -0
  961. nuitka/utils/FileOperations.py +1587 -0
  962. nuitka/utils/Hashing.py +137 -0
  963. nuitka/utils/Images.py +79 -0
  964. nuitka/utils/Importing.py +335 -0
  965. nuitka/utils/InlineCopies.py +52 -0
  966. nuitka/utils/InstalledPythons.py +254 -0
  967. nuitka/utils/InstanceCounters.py +86 -0
  968. nuitka/utils/Jinja2.py +158 -0
  969. nuitka/utils/Json.py +40 -0
  970. nuitka/utils/MacOSApp.py +134 -0
  971. nuitka/utils/MemoryUsage.py +165 -0
  972. nuitka/utils/ModuleNames.py +317 -0
  973. nuitka/utils/PackageResources.py +44 -0
  974. nuitka/utils/ReExecute.py +152 -0
  975. nuitka/utils/Rest.py +60 -0
  976. nuitka/utils/SharedLibraries.py +1014 -0
  977. nuitka/utils/Shebang.py +113 -0
  978. nuitka/utils/Signing.py +144 -0
  979. nuitka/utils/SlotMetaClasses.py +57 -0
  980. nuitka/utils/StaticLibraries.py +260 -0
  981. nuitka/utils/ThreadedExecutor.py +87 -0
  982. nuitka/utils/Timing.py +102 -0
  983. nuitka/utils/Utils.py +483 -0
  984. nuitka/utils/WindowsFileUsage.py +337 -0
  985. nuitka/utils/WindowsResources.py +652 -0
  986. nuitka/utils/Yaml.py +247 -0
  987. nuitka/utils/__init__.py +19 -0
  988. nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
  989. nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
  990. nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
  991. nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
  992. nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
  993. nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
  994. nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
  995. nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1024 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Standard plug-in to avoid bloat at compile time.
5
+
6
+ Nuitka hard codes stupid monkey patching normally not needed here and avoids
7
+ that to be done and causing massive degradations.
8
+
9
+ """
10
+
11
+ import ast
12
+ import re
13
+
14
+ from nuitka.containers.OrderedDicts import OrderedDict
15
+ from nuitka.Errors import NuitkaForbiddenImportEncounter
16
+ from nuitka.ModuleRegistry import getModuleByName
17
+ from nuitka.Options import isExperimental
18
+ from nuitka.plugins.YamlPluginBase import NuitkaYamlPluginBase
19
+ from nuitka.utils.ModuleNames import ModuleName
20
+
21
+ # spell-checker: ignore dask,numba,statsmodels,matplotlib,sqlalchemy,ipykernel,pyximport
22
+
23
+ _mode_choices = ("error", "warning", "nofollow", "allow")
24
+ _other_choices = ("bytecode",)
25
+
26
+
27
+ class NuitkaPluginAntiBloat(NuitkaYamlPluginBase):
28
+ # Lots of details, a bunch of state is cached and tracked across functions
29
+ # pylint: disable=too-many-instance-attributes
30
+
31
+ plugin_name = "anti-bloat"
32
+ plugin_desc = (
33
+ "Patch stupid imports out of widely used library modules source codes."
34
+ )
35
+ plugin_category = "core"
36
+
37
+ @staticmethod
38
+ def isAlwaysEnabled():
39
+ return True
40
+
41
+ def __init__(
42
+ self,
43
+ noinclude_setuptools_mode,
44
+ noinclude_pytest_mode,
45
+ noinclude_unittest_mode,
46
+ noinclude_pydoc_mode,
47
+ noinclude_ipython_mode,
48
+ noinclude_dask_mode,
49
+ noinclude_numba_mode,
50
+ noinclude_default_mode,
51
+ custom_choices,
52
+ show_changes,
53
+ ):
54
+ # Many details, due to many repetitive arguments,
55
+ # pylint: disable=too-many-branches,too-many-locals,too-many-statements
56
+
57
+ NuitkaYamlPluginBase.__init__(self)
58
+
59
+ self.show_changes = show_changes
60
+
61
+ # Default manually to default argument value:
62
+ if noinclude_setuptools_mode is None:
63
+ noinclude_setuptools_mode = noinclude_default_mode
64
+ if noinclude_pytest_mode is None:
65
+ noinclude_pytest_mode = noinclude_default_mode
66
+ if noinclude_unittest_mode is None:
67
+ noinclude_unittest_mode = noinclude_default_mode
68
+ if noinclude_pydoc_mode is None:
69
+ noinclude_pydoc_mode = noinclude_default_mode
70
+ if noinclude_ipython_mode is None:
71
+ noinclude_ipython_mode = noinclude_default_mode
72
+ if noinclude_dask_mode is None:
73
+ noinclude_dask_mode = noinclude_default_mode
74
+ if noinclude_numba_mode is None:
75
+ noinclude_numba_mode = noinclude_default_mode
76
+
77
+ self.handled_modules = OrderedDict()
78
+
79
+ # These should be checked, to allow disabling anti-bloat contents.
80
+ self.control_tags = OrderedDict()
81
+
82
+ if noinclude_setuptools_mode != "allow":
83
+ self.handled_modules["setuptools"] = noinclude_setuptools_mode, "setuptools"
84
+ self.handled_modules["setuptools_scm"] = (
85
+ noinclude_setuptools_mode,
86
+ "setuptools",
87
+ )
88
+ self.handled_modules["triton"] = (
89
+ noinclude_setuptools_mode,
90
+ "setuptools",
91
+ )
92
+ self.handled_modules["Cython"] = (
93
+ noinclude_setuptools_mode,
94
+ "setuptools",
95
+ )
96
+ self.handled_modules["cython"] = (
97
+ noinclude_setuptools_mode,
98
+ "setuptools",
99
+ )
100
+ self.handled_modules["pyximport"] = (
101
+ noinclude_setuptools_mode,
102
+ "setuptools",
103
+ )
104
+ self.handled_modules["paddle.utils.cpp_extension"] = (
105
+ noinclude_setuptools_mode,
106
+ "setuptools",
107
+ )
108
+ self.handled_modules["torch.utils.cpp_extension"] = (
109
+ noinclude_setuptools_mode,
110
+ "setuptools",
111
+ )
112
+ self.handled_modules["numpy.distutils"] = (
113
+ noinclude_setuptools_mode,
114
+ "setuptools",
115
+ )
116
+ self.handled_modules["wheel.util"] = (
117
+ noinclude_setuptools_mode,
118
+ "setuptools",
119
+ )
120
+ else:
121
+ self.control_tags["use_setuptools"] = True
122
+
123
+ if noinclude_pytest_mode != "allow":
124
+ self.handled_modules["_pytest"] = noinclude_pytest_mode, "pytest"
125
+ self.handled_modules["pytest"] = noinclude_pytest_mode, "pytest"
126
+ self.handled_modules["py"] = noinclude_pytest_mode, "pytest"
127
+ self.handled_modules["nose2"] = noinclude_pytest_mode, "pytest"
128
+ self.handled_modules["nose"] = noinclude_pytest_mode, "pytest"
129
+ self.handled_modules["statsmodels.tools._testing"] = (
130
+ noinclude_pytest_mode,
131
+ "pytest",
132
+ )
133
+ self.handled_modules["sqlalchemy.testing"] = (
134
+ noinclude_pytest_mode,
135
+ "pytest",
136
+ )
137
+ self.handled_modules["distributed.utils_test"] = (
138
+ noinclude_pytest_mode,
139
+ "pytest",
140
+ )
141
+ else:
142
+ self.control_tags["use_pytest"] = True
143
+
144
+ if noinclude_unittest_mode != "allow":
145
+ self.handled_modules["unittest"] = noinclude_unittest_mode, "unittest"
146
+ self.handled_modules["doctest"] = noinclude_unittest_mode, "unittest"
147
+ self.handled_modules["test.support"] = noinclude_unittest_mode, "unittest"
148
+ self.handled_modules["test.test_support"] = (
149
+ noinclude_unittest_mode,
150
+ "unittest",
151
+ )
152
+ self.handled_modules["future.moves.test.support"] = (
153
+ noinclude_unittest_mode,
154
+ "unittest",
155
+ )
156
+ self.handled_modules["keras.src.testing_infra"] = (
157
+ noinclude_unittest_mode,
158
+ "unittest",
159
+ )
160
+ self.handled_modules["tf_keras.src.testing_infra"] = (
161
+ noinclude_unittest_mode,
162
+ "unittest",
163
+ )
164
+ else:
165
+ self.control_tags["use_unittest"] = True
166
+
167
+ if noinclude_ipython_mode != "allow":
168
+ self.handled_modules["IPython"] = noinclude_ipython_mode, "IPython"
169
+ self.handled_modules["ipykernel"] = noinclude_ipython_mode, "IPython"
170
+ self.handled_modules["ipywidgets"] = noinclude_ipython_mode, "IPython"
171
+ self.handled_modules["jupyter_client"] = (
172
+ noinclude_ipython_mode,
173
+ "IPython",
174
+ )
175
+ self.handled_modules["matplotlib_inline.backend_inline"] = (
176
+ noinclude_ipython_mode,
177
+ "IPython",
178
+ )
179
+ self.handled_modules["altair._magics"] = (
180
+ noinclude_ipython_mode,
181
+ "IPython",
182
+ )
183
+ else:
184
+ self.control_tags["use_ipython"] = True
185
+
186
+ if noinclude_dask_mode != "allow":
187
+ self.handled_modules["dask"] = noinclude_dask_mode, "dask"
188
+ self.handled_modules["distributed"] = noinclude_dask_mode, "dask"
189
+ else:
190
+ self.control_tags["use_dask"] = True
191
+
192
+ if noinclude_pydoc_mode != "allow":
193
+ self.handled_modules["pydoc"] = noinclude_pydoc_mode, "pydoc"
194
+ else:
195
+ self.control_tags["use_pydoc"] = True
196
+
197
+ if noinclude_numba_mode != "allow":
198
+ self.handled_modules["numba"] = noinclude_numba_mode, "numba"
199
+ self.handled_modules["sparse"] = noinclude_numba_mode, "numba"
200
+ self.handled_modules["stumpy"] = noinclude_numba_mode, "numba"
201
+ self.handled_modules["pandas.core._numba.kernels"] = (
202
+ noinclude_numba_mode,
203
+ "numba",
204
+ )
205
+ else:
206
+ self.control_tags["use_numba"] = True
207
+
208
+ for custom_choice in custom_choices:
209
+ if custom_choice.count(":") != 1:
210
+ self.sysexit(
211
+ """\
212
+ Error, argument value '%s' for '--noinclude-custom-mode' used. It has to be of \
213
+ form 'module_name:[%s]'."""
214
+ % (custom_choice, "|".join(_mode_choices + _other_choices))
215
+ )
216
+
217
+ module_name, mode = custom_choice.rsplit(":", 1)
218
+
219
+ if mode not in _mode_choices and mode not in _other_choices:
220
+ self.sysexit(
221
+ "Error, illegal mode given '%s' in '--noinclude-custom-mode=%s'"
222
+ % (mode, custom_choice)
223
+ )
224
+
225
+ self.handled_modules[ModuleName(module_name)] = mode, module_name
226
+
227
+ if mode == "allow":
228
+ self.control_tags["use_%s" % module_name] = True
229
+
230
+ self.handled_module_namespaces = {}
231
+
232
+ for handled_module_name, (
233
+ mode,
234
+ intended_module_name,
235
+ ) in self.handled_modules.items():
236
+ if mode == "warning":
237
+ if intended_module_name not in self.handled_module_namespaces:
238
+ self.handled_module_namespaces[intended_module_name] = set()
239
+ self.handled_module_namespaces[intended_module_name].add(
240
+ handled_module_name
241
+ )
242
+
243
+ self.warnings_given = set()
244
+
245
+ # Keep track of modules prevented from automatically following and the
246
+ # information given for that.
247
+ self.no_auto_follows = {}
248
+
249
+ # Keep track of modules prevented from being followed at all.
250
+ self.no_follows = OrderedDict()
251
+
252
+ # Cache execution context for anti-bloat configs.
253
+ self.context_codes = {}
254
+
255
+ def getEvaluationConditionControlTags(self):
256
+ return self.control_tags
257
+
258
+ def getCacheContributionValues(self, module_name):
259
+ config = self.config.get(module_name, section="anti-bloat")
260
+
261
+ if config:
262
+ yield str(config)
263
+
264
+ # TODO: Until we can change the evaluation to tell us exactly what
265
+ # control tag values were used, we have to make this one. We sort
266
+ # the values, to try and have order changes in code not matter.
267
+ yield str(tuple(sorted(self.handled_modules.items())))
268
+
269
+ @classmethod
270
+ def addPluginCommandLineOptions(cls, group):
271
+ group.add_option(
272
+ "--show-anti-bloat-changes",
273
+ action="store_true",
274
+ dest="show_changes",
275
+ default=False,
276
+ github_action=False,
277
+ help="""\
278
+ Annotate what changes are done by the plugin.""",
279
+ )
280
+
281
+ group.add_option(
282
+ "--noinclude-setuptools-mode",
283
+ action="store",
284
+ dest="noinclude_setuptools_mode",
285
+ choices=_mode_choices,
286
+ default=None,
287
+ help="""\
288
+ What to do if a 'setuptools' or import is encountered. This package can be big with
289
+ dependencies, and should definitely be avoided. Also handles 'setuptools_scm'.""",
290
+ )
291
+
292
+ group.add_option(
293
+ "--noinclude-pytest-mode",
294
+ action="store",
295
+ dest="noinclude_pytest_mode",
296
+ choices=_mode_choices,
297
+ default=None,
298
+ help="""\
299
+ What to do if a 'pytest' import is encountered. This package can be big with
300
+ dependencies, and should definitely be avoided. Also handles 'nose' imports.""",
301
+ )
302
+
303
+ group.add_option(
304
+ "--noinclude-unittest-mode",
305
+ action="store",
306
+ dest="noinclude_unittest_mode",
307
+ choices=_mode_choices,
308
+ default=None,
309
+ help="""\
310
+ What to do if a unittest import is encountered. This package can be big with
311
+ dependencies, and should definitely be avoided.""",
312
+ )
313
+
314
+ group.add_option(
315
+ "--noinclude-pydoc-mode",
316
+ action="store",
317
+ dest="noinclude_pydoc_mode",
318
+ choices=_mode_choices,
319
+ default=None,
320
+ help="""\
321
+ What to do if a pydoc import is encountered. This package use is mark of useless
322
+ code for deployments and should be avoided.""",
323
+ )
324
+
325
+ group.add_option(
326
+ "--noinclude-IPython-mode",
327
+ action="store",
328
+ dest="noinclude_ipython_mode",
329
+ choices=_mode_choices,
330
+ default=None,
331
+ help="""\
332
+ What to do if a IPython import is encountered. This package can be big with
333
+ dependencies, and should definitely be avoided.""",
334
+ )
335
+
336
+ group.add_option(
337
+ "--noinclude-dask-mode",
338
+ action="store",
339
+ dest="noinclude_dask_mode",
340
+ choices=_mode_choices,
341
+ default=None,
342
+ help="""\
343
+ What to do if a 'dask' import is encountered. This package can be big with
344
+ dependencies, and should definitely be avoided.""",
345
+ )
346
+
347
+ group.add_option(
348
+ "--noinclude-numba-mode",
349
+ action="store",
350
+ dest="noinclude_numba_mode",
351
+ choices=_mode_choices,
352
+ default=None,
353
+ help="""\
354
+ What to do if a 'numba' import is encountered. This package can be big with
355
+ dependencies, and is currently not working for standalone. This package is
356
+ big with dependencies, and should definitely be avoided.""",
357
+ )
358
+
359
+ group.add_option(
360
+ "--noinclude-default-mode",
361
+ action="store",
362
+ dest="noinclude_default_mode",
363
+ choices=_mode_choices,
364
+ default="warning",
365
+ help="""\
366
+ This actually provides the default "warning" value for above options, and
367
+ can be used to turn all of these on.""",
368
+ )
369
+
370
+ group.add_option(
371
+ "--noinclude-custom-mode",
372
+ action="append",
373
+ dest="custom_choices",
374
+ default=[],
375
+ help="""\
376
+ What to do if a specific import is encountered. Format is module name,
377
+ which can and should be a top level package and then one choice, "error",
378
+ "warning", "nofollow", e.g. PyQt5:error.""",
379
+ )
380
+
381
+ def _getContextCode(self, module_name, anti_bloat_config):
382
+ context_code = anti_bloat_config.get("context", "")
383
+ if type(context_code) in (tuple, list):
384
+ context_code = "\n".join(context_code)
385
+
386
+ if context_code not in self.context_codes:
387
+ context = {}
388
+
389
+ try:
390
+ # We trust the yaml files, pylint: disable=exec-used
391
+ exec(context_code, context)
392
+ except Exception as e: # pylint: disable=broad-except
393
+ self.sysexit(
394
+ """\
395
+ Error, cannot exec module '%s', context code '%s' due to: %s"""
396
+ % (module_name, context_code, e)
397
+ )
398
+
399
+ self.context_codes[context_code] = context
400
+
401
+ return dict(self.context_codes[context_code])
402
+
403
+ def _onModuleSourceCodeReplacement(
404
+ self,
405
+ config_module_name,
406
+ module_name,
407
+ source_code,
408
+ config_name,
409
+ extra_context,
410
+ replace_code,
411
+ replace_src,
412
+ ):
413
+ if replace_code:
414
+ replace_dst = self.evaluateExpression(
415
+ config_module_name=config_module_name,
416
+ module_name=module_name,
417
+ expression=replace_code,
418
+ config_name="module '%s' config '%s'"
419
+ % (config_module_name, config_name),
420
+ extra_context=extra_context,
421
+ single_value=True,
422
+ )
423
+ else:
424
+ replace_dst = ""
425
+
426
+ return source_code, source_code.replace(replace_src, replace_dst)
427
+
428
+ def _onModuleSourceCode(
429
+ self,
430
+ config_module_name,
431
+ module_name,
432
+ config_prefix,
433
+ anti_bloat_config,
434
+ source_code,
435
+ ):
436
+ # Complex dealing with many cases, pylint: disable=too-many-branches,too-many-locals
437
+ description = anti_bloat_config.get("description", "description not given")
438
+
439
+ # To allow detection if it did anything.
440
+ change_count = 0
441
+
442
+ for replace_src, replace_code in (
443
+ anti_bloat_config.get(config_prefix + "replacements") or {}
444
+ ).items():
445
+ # Avoid the eval, if the replace doesn't hit.
446
+ if replace_src not in source_code:
447
+ continue
448
+
449
+ old, source_code = self._onModuleSourceCodeReplacement(
450
+ config_module_name=config_module_name,
451
+ module_name=module_name,
452
+ source_code=source_code,
453
+ config_name=config_prefix + "replacements",
454
+ extra_context=self._getContextCode(
455
+ module_name=module_name, anti_bloat_config=anti_bloat_config
456
+ ),
457
+ replace_src=replace_src,
458
+ replace_code=replace_code,
459
+ )
460
+
461
+ if old != source_code:
462
+ change_count += 1
463
+
464
+ for replace_src, replace_dst in (
465
+ anti_bloat_config.get(config_prefix + "replacements_plain") or {}
466
+ ).items():
467
+ old = source_code
468
+ source_code = source_code.replace(replace_src, replace_dst)
469
+
470
+ if old != source_code:
471
+ change_count += 1
472
+
473
+ for replace_src, replace_dst in (
474
+ anti_bloat_config.get(config_prefix + "replacements_re") or {}
475
+ ).items():
476
+ old = source_code
477
+ source_code = re.sub(replace_src, replace_dst, source_code, re.S)
478
+
479
+ if old != source_code:
480
+ change_count += 1
481
+ elif isExperimental("display-anti-bloat-mismatches"):
482
+ self.info("No match in %s no match %r" % (module_name, replace_src))
483
+
484
+ # These have no global variants.
485
+ if config_prefix == "":
486
+ append_code = anti_bloat_config.get("append_result", "")
487
+ if type(append_code) in (tuple, list):
488
+ append_code = "\n".join(append_code)
489
+
490
+ if append_code:
491
+ append_result = self.evaluateExpression(
492
+ config_module_name=module_name,
493
+ module_name=module_name,
494
+ expression=append_code,
495
+ config_name="module '%s' config 'append_code'" % module_name,
496
+ extra_context=self._getContextCode(
497
+ module_name=module_name, anti_bloat_config=anti_bloat_config
498
+ ),
499
+ single_value=True,
500
+ )
501
+
502
+ source_code += "\n" + append_result
503
+ change_count += 1
504
+
505
+ append_plain = anti_bloat_config.get("append_plain", "")
506
+ if type(append_plain) in (tuple, list):
507
+ append_plain = "\n".join(append_plain)
508
+
509
+ if append_plain:
510
+ source_code += "\n" + append_plain
511
+ change_count += 1
512
+
513
+ module_code = anti_bloat_config.get("module_code", None)
514
+
515
+ if module_code is not None:
516
+ # Cannot be mixed.
517
+ assert not change_count
518
+
519
+ if self.show_changes:
520
+ self.info(
521
+ "Handling module '%s' with full replacement : %s."
522
+ % (module_name.asString(), description)
523
+ )
524
+
525
+ source_code = module_code
526
+ change_count = 1
527
+
528
+ if change_count > 0 and self.show_changes:
529
+ self.info(
530
+ "Handling module '%s' with %d change(s) for: %s."
531
+ % (module_name.asString(), change_count, description)
532
+ )
533
+
534
+ return source_code
535
+
536
+ def onModuleSourceCode(self, module_name, source_filename, source_code):
537
+ config_module_name = module_name
538
+
539
+ while True:
540
+ for anti_bloat_config in self.config.get(
541
+ config_module_name, section="anti-bloat"
542
+ ):
543
+ if self.evaluateCondition(
544
+ full_name=config_module_name,
545
+ condition=anti_bloat_config.get("when", "True"),
546
+ ):
547
+ if config_module_name == module_name:
548
+ source_code = self._onModuleSourceCode(
549
+ config_module_name=config_module_name,
550
+ module_name=module_name,
551
+ anti_bloat_config=anti_bloat_config,
552
+ config_prefix="",
553
+ source_code=source_code,
554
+ )
555
+
556
+ source_code = self._onModuleSourceCode(
557
+ config_module_name=config_module_name,
558
+ module_name=module_name,
559
+ anti_bloat_config=anti_bloat_config,
560
+ config_prefix="global_",
561
+ source_code=source_code,
562
+ )
563
+
564
+ config_module_name = config_module_name.getPackageName()
565
+
566
+ if not config_module_name:
567
+ break
568
+
569
+ return source_code
570
+
571
+ def _onFunctionBodyParsing(
572
+ self,
573
+ config_module_name,
574
+ module_name,
575
+ config_prefix,
576
+ anti_bloat_config,
577
+ function_name,
578
+ body,
579
+ ):
580
+ replace_code = anti_bloat_config.get(config_prefix + "change_function", {}).get(
581
+ function_name
582
+ )
583
+
584
+ if replace_code == "un-callable":
585
+ replace_code = """'raise RuntimeError("Must not call %s.%s")'""" % (
586
+ module_name,
587
+ function_name,
588
+ )
589
+
590
+ if replace_code is None:
591
+ return False
592
+
593
+ replacement = self.evaluateExpression(
594
+ config_module_name=config_module_name,
595
+ module_name=module_name,
596
+ expression=replace_code,
597
+ config_name="module '%s' config '%schange_function' of '%s'"
598
+ % (module_name, config_prefix, function_name),
599
+ extra_context=self._getContextCode(
600
+ module_name=module_name, anti_bloat_config=anti_bloat_config
601
+ ),
602
+ single_value=True,
603
+ )
604
+
605
+ # Single node is required, extract the generated module body with
606
+ # single expression only statement value or a function body.
607
+ replacement = ast.parse(replacement).body[0]
608
+
609
+ if type(replacement) is ast.Expr:
610
+ if type(replacement.value) is ast.Lambda:
611
+ body[:] = [ast.Return(replacement.value.body)]
612
+ else:
613
+ body[:] = [ast.Return(replacement.value)]
614
+ elif type(replacement) is ast.Raise:
615
+ body[:] = [replacement]
616
+ else:
617
+ body[:] = replacement.body
618
+
619
+ if self.show_changes:
620
+ self.info(
621
+ "Updated module '%s' function '%s'."
622
+ % (module_name.asString(), function_name)
623
+ )
624
+
625
+ return True
626
+
627
+ def onFunctionBodyParsing(self, module_name, function_name, body):
628
+ result = False
629
+
630
+ config_module_name = module_name
631
+
632
+ while True:
633
+ for anti_bloat_config in self.config.get(
634
+ config_module_name, section="anti-bloat"
635
+ ):
636
+ if self.evaluateCondition(
637
+ full_name=config_module_name,
638
+ condition=anti_bloat_config.get("when", "True"),
639
+ ):
640
+ if config_module_name == module_name:
641
+ if self._onFunctionBodyParsing(
642
+ config_module_name=config_module_name,
643
+ module_name=module_name,
644
+ anti_bloat_config=anti_bloat_config,
645
+ config_prefix="",
646
+ function_name=function_name,
647
+ body=body,
648
+ ):
649
+ result = True
650
+
651
+ if self._onFunctionBodyParsing(
652
+ config_module_name=config_module_name,
653
+ module_name=module_name,
654
+ anti_bloat_config=anti_bloat_config,
655
+ config_prefix="global_",
656
+ function_name=function_name,
657
+ body=body,
658
+ ):
659
+ result = True
660
+
661
+ config_module_name = config_module_name.getPackageName()
662
+
663
+ if not config_module_name:
664
+ break
665
+
666
+ return result
667
+
668
+ def _onClassBodyParsing(self, module_name, anti_bloat_config, class_name, node):
669
+ replace_code = anti_bloat_config.get("change_class", {}).get(class_name)
670
+
671
+ if replace_code == "un-usable":
672
+ replace_code = """
673
+ '''
674
+ class %(class_name)s:
675
+ def __init__(self, *args, **kwargs):
676
+ raise RuntimeError("Must not call %(module_name)s.%(class_name)s")
677
+ '''
678
+ """ % {
679
+ "module_name": module_name,
680
+ "class_name": class_name,
681
+ }
682
+
683
+ if replace_code is None:
684
+ return False
685
+
686
+ replacement = self.evaluateExpression(
687
+ config_module_name=module_name,
688
+ module_name=module_name,
689
+ expression=replace_code,
690
+ config_name="module '%s' config 'change_class' of '%s'"
691
+ % (module_name, class_name),
692
+ extra_context=self._getContextCode(
693
+ module_name=module_name, anti_bloat_config=anti_bloat_config
694
+ ),
695
+ single_value=True,
696
+ )
697
+
698
+ # Single node is required, extract the generated module body with
699
+ # single expression only statement value or a function body.
700
+ replacement = ast.parse(replacement).body[0]
701
+
702
+ node.body[:] = replacement.body
703
+ node.bases[:] = replacement.bases
704
+
705
+ if self.show_changes:
706
+ self.info(
707
+ "Updated module '%s' class '%s'." % (module_name.asString(), class_name)
708
+ )
709
+
710
+ return True
711
+
712
+ def onClassBodyParsing(self, module_name, class_name, node):
713
+ result = False
714
+
715
+ for anti_bloat_config in self.config.get(module_name, section="anti-bloat"):
716
+ if self.evaluateCondition(
717
+ full_name=module_name, condition=anti_bloat_config.get("when", "True")
718
+ ):
719
+ if self._onClassBodyParsing(
720
+ module_name=module_name,
721
+ anti_bloat_config=anti_bloat_config,
722
+ class_name=class_name,
723
+ node=node,
724
+ ):
725
+ result = True
726
+
727
+ return result
728
+
729
+ def _getModuleBloatModeOverrides(self, using_module_name, intended_module_name):
730
+ # Finding a matching configuration aborts the search, not finding one
731
+ # means default behavior should apply.
732
+ for _config_module_name, bloat_mode_overrides in self.getYamlConfigItem(
733
+ module_name=using_module_name,
734
+ section="anti-bloat",
735
+ item_name="bloat-mode-overrides",
736
+ default={},
737
+ decide_relevant=(lambda config_item: intended_module_name in config_item),
738
+ recursive=True,
739
+ ):
740
+ return bloat_mode_overrides[intended_module_name]
741
+
742
+ return None
743
+
744
+ def decideAnnotations(self, module_name):
745
+ # Finding a matching configuration aborts the search, not finding one
746
+ # means default behavior should apply.
747
+ for _config_module_name, annotations_config_value in self.getYamlConfigItem(
748
+ module_name=module_name,
749
+ section="anti-bloat",
750
+ item_name="annotations",
751
+ default=None,
752
+ decide_relevant=(lambda config_item: config_item in ("yes", "no")),
753
+ recursive=True,
754
+ ):
755
+ return annotations_config_value == "yes"
756
+
757
+ return None
758
+
759
+ def decideDocStrings(self, module_name):
760
+ # Finding a matching configuration aborts the search, not finding one
761
+ # means default behavior should apply.
762
+ for _config_module_name, doc_strings_config_value in self.getYamlConfigItem(
763
+ module_name=module_name,
764
+ section="anti-bloat",
765
+ item_name="doc_strings",
766
+ default=None,
767
+ decide_relevant=(lambda config_item: config_item in ("yes", "no")),
768
+ recursive=True,
769
+ ):
770
+ return doc_strings_config_value == "yes"
771
+
772
+ return None
773
+
774
+ def decideAsserts(self, module_name):
775
+ # Finding a matching configuration aborts the search, not finding one
776
+ # means default behavior should apply.
777
+ for _config_module_name, asserts_config_value in self.getYamlConfigItem(
778
+ module_name=module_name,
779
+ section="anti-bloat",
780
+ item_name="asserts",
781
+ default=None,
782
+ decide_relevant=(lambda config_item: config_item in ("yes", "no")),
783
+ recursive=True,
784
+ ):
785
+ return asserts_config_value == "yes"
786
+
787
+ return None
788
+
789
+ def _applyNoFollowConfiguration(self, module_name):
790
+ for (
791
+ config_of_module_name,
792
+ no_follow_pattern,
793
+ description,
794
+ ) in self.getYamlConfigItemItems(
795
+ module_name=module_name,
796
+ section="anti-bloat",
797
+ item_name="no-follow",
798
+ decide_relevant=lambda key, value: True,
799
+ recursive=True,
800
+ ):
801
+ self.no_follows[no_follow_pattern] = (config_of_module_name, description)
802
+
803
+ def _needsWarning(self, key):
804
+ if key in self.warnings_given:
805
+ return False
806
+
807
+ (
808
+ module_name,
809
+ using_module_name,
810
+ line_number,
811
+ ) = key
812
+
813
+ for parent_package in module_name.getParentPackageNames():
814
+ if (parent_package, using_module_name, line_number) in self.warnings_given:
815
+ return False
816
+
817
+ return True
818
+
819
+ def onModuleRecursion(
820
+ self,
821
+ module_name,
822
+ module_filename,
823
+ module_kind,
824
+ using_module_name,
825
+ source_ref,
826
+ reason,
827
+ ):
828
+ # pylint: disable=too-many-branches
829
+
830
+ # First off, activate "no-follow" configurations of this module.
831
+ self._applyNoFollowConfiguration(module_name=module_name)
832
+
833
+ # Do not even look at these. It's either included by a module that is in standard
834
+ # library, or included for a module in standard library.
835
+ if reason == "stdlib" or (
836
+ using_module_name is not None
837
+ and getModuleByName(using_module_name).reason == "stdlib"
838
+ ):
839
+ return
840
+
841
+ # This will allow "unittest.mock" to pass "unittest". It's kind of a hack and
842
+ # hopefully unusual.
843
+ if module_name == "unittest" and reason == "import path parent":
844
+ return
845
+ if module_name == "unittest.mock" and module_name not in self.handled_modules:
846
+ return
847
+
848
+ for handled_module_name, (
849
+ mode,
850
+ intended_module_name,
851
+ ) in self.handled_modules.items():
852
+ # This will ignore internal usages. In case of error, e.g. above unittest
853
+ # could cause them to happen.
854
+ if using_module_name is not None and using_module_name.hasNamespace(
855
+ handled_module_name
856
+ ):
857
+ return
858
+
859
+ if module_name.hasNamespace(handled_module_name):
860
+ if using_module_name is not None:
861
+ override_mode = self._getModuleBloatModeOverrides(
862
+ using_module_name=using_module_name,
863
+ intended_module_name=intended_module_name,
864
+ )
865
+
866
+ if override_mode is not None:
867
+ mode = override_mode
868
+
869
+ # Make sure the compilation aborts or warns if asked to
870
+ if mode == "error":
871
+ raise NuitkaForbiddenImportEncounter(
872
+ module_name, intended_module_name
873
+ )
874
+ if mode == "warning" and source_ref is not None:
875
+ if using_module_name.hasOneOfNamespaces(
876
+ self.handled_module_namespaces[intended_module_name]
877
+ ):
878
+ continue
879
+
880
+ key = (
881
+ module_name,
882
+ using_module_name,
883
+ source_ref.getLineNumber(),
884
+ )
885
+
886
+ if self._needsWarning(key):
887
+ if handled_module_name == intended_module_name:
888
+ handled_module_name_desc = "'%s'" % handled_module_name
889
+ else:
890
+ handled_module_name_desc = (
891
+ "'%s' (intending to avoid '%s')"
892
+ % (handled_module_name, intended_module_name)
893
+ )
894
+
895
+ self.warning(
896
+ """\
897
+ Undesirable import of %s in '%s' (at '%s') encountered. It may \
898
+ slow down compilation."""
899
+ % (
900
+ handled_module_name_desc,
901
+ using_module_name,
902
+ self.getReportSourceReference(source_ref),
903
+ ),
904
+ mnemonic="unwanted-module",
905
+ )
906
+
907
+ self.warnings_given.add(key)
908
+
909
+ def onModuleEncounter(
910
+ self, using_module_name, module_name, module_filename, module_kind
911
+ ):
912
+ for handled_module_name, (
913
+ mode,
914
+ intended_module_name,
915
+ ) in self.handled_modules.items():
916
+ if module_name.hasNamespace(handled_module_name):
917
+ # Either issue a warning, or pretend the module doesn't exist for standalone or
918
+ # at least will not be included.
919
+ if mode == "nofollow":
920
+ if self.show_changes:
921
+ self.info(
922
+ "Forcing import of '%s' (intending to avoid '%s') to not be followed."
923
+ % (module_name, intended_module_name)
924
+ )
925
+ return (
926
+ False,
927
+ "user requested to not follow '%s' (intending to avoid '%s') import"
928
+ % (module_name, intended_module_name),
929
+ )
930
+
931
+ if using_module_name is not None:
932
+
933
+ def decideRelevant(key, value):
934
+ # Only checking keys of configs, pylint: disable=unused-argument
935
+
936
+ return module_name.hasNamespace(key)
937
+
938
+ for (
939
+ config_of_module_name,
940
+ no_auto_follow,
941
+ description,
942
+ ) in self.getYamlConfigItemItems(
943
+ module_name=using_module_name,
944
+ section="anti-bloat",
945
+ item_name="no-auto-follow",
946
+ decide_relevant=decideRelevant,
947
+ recursive=True,
948
+ ):
949
+ assert module_name.hasNamespace(no_auto_follow), no_auto_follow
950
+
951
+ self.no_auto_follows[no_auto_follow] = description
952
+
953
+ return (
954
+ False,
955
+ "according to yaml 'no-auto-follow' configuration of '%s' for '%s'"
956
+ % (config_of_module_name, no_auto_follow),
957
+ )
958
+
959
+ for no_follow_pattern, (
960
+ config_of_module_name,
961
+ description,
962
+ ) in self.no_follows.items():
963
+ if module_name.matchesToShellPattern(no_follow_pattern)[0]:
964
+ return (
965
+ False,
966
+ "according to yaml 'no-follow' configuration of '%s' for '%s'"
967
+ % (config_of_module_name, no_follow_pattern),
968
+ )
969
+
970
+ # Do not provide an opinion about it.
971
+ return None
972
+
973
+ def decideCompilation(self, module_name):
974
+ for handled_module_name, (
975
+ mode,
976
+ _intended_module_name,
977
+ ) in self.handled_modules.items():
978
+ if mode != "bytecode":
979
+ continue
980
+
981
+ if module_name.hasNamespace(handled_module_name):
982
+ return "bytecode"
983
+
984
+ # TODO: Detect effective "change_class" and "change_function"
985
+ # configuration for standard library modules, but often enough we are
986
+ # happy to let the bytecode not have the effect, but for these ones it's
987
+ # required. TODO: Make the compilation mode part of the config.
988
+ if module_name == "xmlrpc.server":
989
+ return "compiled"
990
+
991
+ def onModuleCompleteSet(self, module_set):
992
+ # TODO: Maybe have an entry point that works on the set of names
993
+ # instead, we are not looking at the modules, and most plugins probably
994
+ # do not care.
995
+ module_names = set(module.getFullName() for module in module_set)
996
+
997
+ for module_name, description in self.no_auto_follows.items():
998
+ # Some are irrelevant, e.g. when registering to a module that would have to
999
+ # be used elsewhere.
1000
+ if description == "ignore":
1001
+ continue
1002
+
1003
+ if module_name not in module_names:
1004
+ self.info(
1005
+ """\
1006
+ Not including '%s' automatically in order to avoid bloat, but this may cause: %s."""
1007
+ % (module_name, description)
1008
+ )
1009
+
1010
+
1011
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1012
+ # integrates with CPython, but also works on its own.
1013
+ #
1014
+ # Licensed under the Apache License, Version 2.0 (the "License");
1015
+ # you may not use this file except in compliance with the License.
1016
+ # You may obtain a copy of the License at
1017
+ #
1018
+ # http://www.apache.org/licenses/LICENSE-2.0
1019
+ #
1020
+ # Unless required by applicable law or agreed to in writing, software
1021
+ # distributed under the License is distributed on an "AS IS" BASIS,
1022
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1023
+ # See the License for the specific language governing permissions and
1024
+ # limitations under the License.