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,1366 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Nodes related to importing modules or names.
5
+
6
+ Normally imports are mostly relatively static, but Nuitka also attempts to
7
+ cover the uses of "__import__" built-in and other import techniques, that
8
+ allow dynamic values.
9
+
10
+ If other optimizations make it possible to predict these, the compiler can go
11
+ deeper that what it normally could. The import expression node can lead to
12
+ modules being added. After optimization it will be asked about used modules.
13
+ """
14
+
15
+ import sys
16
+
17
+ from nuitka.__past__ import long, unicode, xrange
18
+ from nuitka.code_generation.Reports import onMissingTrust
19
+ from nuitka.HardImportRegistry import (
20
+ addModuleSingleAttributeNodeFactory,
21
+ hard_modules_aliases,
22
+ hard_modules_limited,
23
+ hard_modules_non_stdlib,
24
+ hard_modules_stdlib,
25
+ hard_modules_trust,
26
+ isHardModule,
27
+ isHardModuleWithoutSideEffect,
28
+ trust_constant,
29
+ trust_importable,
30
+ trust_may_exist,
31
+ trust_node,
32
+ trust_node_factory,
33
+ trust_undefined,
34
+ )
35
+ from nuitka.importing.Importing import (
36
+ isNonRaisingBuiltinModule,
37
+ isPackageDir,
38
+ isPackageModuleName,
39
+ locateModule,
40
+ makeModuleUsageAttempt,
41
+ makeParentModuleUsagesAttempts,
42
+ )
43
+ from nuitka.importing.ImportResolving import resolveModuleName
44
+ from nuitka.importing.Recursion import decideRecursion
45
+ from nuitka.importing.StandardLibrary import isStandardLibraryPath
46
+ from nuitka.Options import (
47
+ isExperimental,
48
+ isStandaloneMode,
49
+ shallMakeModule,
50
+ shallWarnUnusualCode,
51
+ )
52
+ from nuitka.plugins.Plugins import Plugins
53
+ from nuitka.PythonVersions import python_version
54
+ from nuitka.specs.BuiltinParameterSpecs import (
55
+ BuiltinParameterSpec,
56
+ extractBuiltinArgs,
57
+ )
58
+ from nuitka.Tracing import unusual_logger
59
+ from nuitka.utils.ModuleNames import ModuleName
60
+
61
+ from .ChildrenHavingMixins import (
62
+ ChildHavingModuleMixin,
63
+ ChildrenExpressionBuiltinImportMixin,
64
+ ChildrenExpressionImportlibImportModuleCallMixin,
65
+ )
66
+ from .ExpressionBases import ExpressionBase
67
+ from .ImportHardNodes import (
68
+ ExpressionImportHardBase,
69
+ ExpressionImportModuleNameHardExists,
70
+ ExpressionImportModuleNameHardExistsSpecificBase,
71
+ ExpressionImportModuleNameHardMaybeExists,
72
+ )
73
+ from .LocalsScopes import GlobalsDictHandle
74
+ from .NodeMakingHelpers import (
75
+ makeConstantReplacementNode,
76
+ makeRaiseExceptionReplacementExpression,
77
+ makeRaiseImportErrorReplacementExpression,
78
+ )
79
+ from .shapes.BuiltinTypeShapes import tshape_module, tshape_module_builtin
80
+ from .StatementBasesGenerated import StatementImportStarBase
81
+
82
+
83
+ def makeExpressionImportModuleNameHard(
84
+ module_name, import_name, module_guaranteed, source_ref
85
+ ):
86
+ if hard_modules_trust[module_name].get(import_name) is None:
87
+ return ExpressionImportModuleNameHardMaybeExists(
88
+ module_name=module_name,
89
+ import_name=import_name,
90
+ module_guaranteed=module_guaranteed,
91
+ source_ref=source_ref,
92
+ )
93
+ else:
94
+ return ExpressionImportModuleNameHardExists(
95
+ module_name=module_name,
96
+ import_name=import_name,
97
+ module_guaranteed=module_guaranteed,
98
+ source_ref=source_ref,
99
+ )
100
+
101
+
102
+ class ExpressionImportAllowanceMixin(object):
103
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
104
+ __slots__ = ()
105
+
106
+ def __init__(self, using_module_name):
107
+ self.using_module_name = using_module_name
108
+
109
+ if self.finding == "not-found":
110
+ self.allowed = False
111
+ elif self.finding == "built-in":
112
+ self.allowed = True
113
+ elif self.module_name in hard_modules_stdlib:
114
+ self.allowed = True
115
+ else:
116
+ self.allowed, _reason = decideRecursion(
117
+ using_module_name=self.using_module_name,
118
+ module_filename=self.module_filename,
119
+ module_name=self.module_name,
120
+ module_kind=self.module_kind,
121
+ )
122
+
123
+ # In case of hard imports, that are not forbidden explicitly, allow their use
124
+ # anyway.
125
+ if self.allowed is None and self.isExpressionImportModuleHard():
126
+ self.allowed = True
127
+
128
+
129
+ class ExpressionImportModuleFixed(ExpressionBase):
130
+ """Hard coded import names, that we know to exist."
131
+
132
+ These created as result of builtin imports and "importlib.import_module" calls
133
+ that were compile time resolved, and for known module names.
134
+ """
135
+
136
+ kind = "EXPRESSION_IMPORT_MODULE_FIXED"
137
+
138
+ __slots__ = (
139
+ "module_name",
140
+ "value_name",
141
+ "found_module_name",
142
+ "found_module_filename",
143
+ "module_kind",
144
+ "finding",
145
+ "module_usages",
146
+ )
147
+
148
+ def __init__(self, module_name, value_name, source_ref):
149
+ ExpressionBase.__init__(self, source_ref)
150
+
151
+ self.module_name = ModuleName(module_name)
152
+ self.value_name = ModuleName(value_name)
153
+
154
+ self.finding = None
155
+
156
+ # If not found, we import the package at least
157
+ (
158
+ self.found_module_name,
159
+ self.found_module_filename,
160
+ self.module_kind,
161
+ self.finding,
162
+ ) = self._attemptFollow()
163
+
164
+ self.module_usages = makeParentModuleUsagesAttempts(
165
+ makeModuleUsageAttempt(
166
+ module_name=self.found_module_name,
167
+ filename=self.found_module_filename,
168
+ finding=self.finding,
169
+ module_kind=self.module_kind,
170
+ level=0,
171
+ source_ref=self.source_ref,
172
+ reason="import",
173
+ )
174
+ )
175
+
176
+ # TODO: This is called in constructor only, is it, then inline it.
177
+ def _attemptFollow(self):
178
+ found_module_name, found_module_filename, module_kind, finding = locateModule(
179
+ module_name=self.module_name,
180
+ parent_package=None,
181
+ level=0,
182
+ )
183
+
184
+ if self.finding == "not-found":
185
+ while True:
186
+ module_name = found_module_filename.getPackageName()
187
+
188
+ if module_name is None:
189
+ break
190
+
191
+ (
192
+ found_module_name,
193
+ found_module_filename,
194
+ module_kind,
195
+ finding,
196
+ ) = locateModule(
197
+ module_name=module_name,
198
+ parent_package=None,
199
+ level=0,
200
+ )
201
+
202
+ if self.finding != "not-found":
203
+ break
204
+
205
+ return found_module_name, found_module_filename, module_kind, finding
206
+
207
+ def finalize(self):
208
+ del self.parent
209
+
210
+ def getDetails(self):
211
+ return {"module_name": self.module_name, "value_name": self.value_name}
212
+
213
+ def getModuleName(self):
214
+ return self.module_name
215
+
216
+ def getValueName(self):
217
+ return self.value_name
218
+
219
+ @staticmethod
220
+ def mayHaveSideEffects():
221
+ # TODO: For included modules, we might be able to tell, not not done now.
222
+ return True
223
+
224
+ @staticmethod
225
+ def mayRaiseException(exception_type):
226
+ # TODO: For included modules, we might be able to tell, not not done now.
227
+ return True
228
+
229
+ def getTypeShape(self):
230
+ # TODO: This ought to be dead code, built-in modules have their own nodes now
231
+ # and may only be hard imports, but not this.
232
+ if self.module_name in sys.builtin_module_names:
233
+ return tshape_module_builtin
234
+ else:
235
+ return tshape_module
236
+
237
+ def getModuleUsageAttempts(self):
238
+ return self.module_usages
239
+
240
+ def computeExpressionRaw(self, trace_collection):
241
+ if self.mayRaiseException(BaseException):
242
+ trace_collection.onExceptionRaiseExit(BaseException)
243
+
244
+ # Trace the module usage attempt.
245
+ trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
246
+
247
+ # Nothing to do about it.
248
+ return self, None, None
249
+
250
+ def computeExpressionImportName(self, import_node, import_name, trace_collection):
251
+ # TODO: For include modules, something might be possible here, consider self.allowance
252
+ # when that is implemented.
253
+ return self.computeExpressionAttribute(
254
+ lookup_node=import_node,
255
+ attribute_name=import_name,
256
+ trace_collection=trace_collection,
257
+ )
258
+
259
+
260
+ class ExpressionImportModuleBuiltin(ExpressionBase):
261
+ """Hard coded import names, that we know to exist."
262
+
263
+ These created as result of builtin imports and "importlib.import_module" calls
264
+ that were compile time resolved, and for known module names.
265
+ """
266
+
267
+ kind = "EXPRESSION_IMPORT_MODULE_BUILTIN"
268
+
269
+ __slots__ = (
270
+ "module_name",
271
+ "value_name",
272
+ "module_kind",
273
+ "builtin_module",
274
+ "module_usages",
275
+ )
276
+
277
+ def __init__(self, module_name, value_name, source_ref):
278
+ ExpressionBase.__init__(self, source_ref)
279
+
280
+ self.module_name = ModuleName(module_name)
281
+ self.value_name = ModuleName(value_name)
282
+
283
+ self.builtin_module = __import__(module_name.asString())
284
+
285
+ # If not found, we import the package at least
286
+ _module_name, _module_filename, _module_kind, _finding = locateModule(
287
+ module_name=self.module_name,
288
+ parent_package=None,
289
+ level=0,
290
+ )
291
+
292
+ assert _module_name == self.module_name, _module_name
293
+ assert _finding == "built-in", _finding
294
+ assert _module_kind is None, _module_kind
295
+
296
+ self.module_usages = makeParentModuleUsagesAttempts(
297
+ makeModuleUsageAttempt(
298
+ module_name=self.module_name,
299
+ filename=None,
300
+ finding="built-in",
301
+ module_kind=None,
302
+ level=0,
303
+ source_ref=self.source_ref,
304
+ reason="import",
305
+ )
306
+ )
307
+
308
+ @staticmethod
309
+ def getTypeShape():
310
+ return tshape_module_builtin
311
+
312
+ def mayRaiseExceptionImportName(self, exception_type, import_name):
313
+ return not hasattr(self.builtin_module, import_name)
314
+
315
+ def finalize(self):
316
+ del self.parent
317
+
318
+ def getDetails(self):
319
+ return {"module_name": self.module_name, "value_name": self.value_name}
320
+
321
+ def getModuleName(self):
322
+ return self.module_name
323
+
324
+ def getValueName(self):
325
+ return self.value_name
326
+
327
+ @staticmethod
328
+ def mayHaveSideEffects():
329
+ return True
330
+
331
+ def mayRaiseException(self, exception_type):
332
+ return isNonRaisingBuiltinModule(self.module_name) is not False
333
+
334
+ def getModuleUsageAttempts(self):
335
+ return self.module_usages
336
+
337
+ def computeExpressionRaw(self, trace_collection):
338
+ if self.mayRaiseException(BaseException):
339
+ trace_collection.onExceptionRaiseExit(BaseException)
340
+
341
+ # Trace the module usage attempt.
342
+ trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
343
+
344
+ # Nothing to do about it.
345
+ return self, None, None
346
+
347
+ def computeExpressionImportName(self, import_node, import_name, trace_collection):
348
+ # TODO: For include modules, something might be possible here, consider self.allowance
349
+ # when that is implemented.
350
+ return self.computeExpressionAttribute(
351
+ lookup_node=import_node,
352
+ attribute_name=import_name,
353
+ trace_collection=trace_collection,
354
+ )
355
+
356
+
357
+ class ExpressionImportModuleHard(
358
+ ExpressionImportAllowanceMixin, ExpressionImportHardBase
359
+ ):
360
+ """Hard coded import names, e.g. of "__future__"
361
+
362
+ These are directly created for some Python mechanics, but also due to
363
+ compile time optimization for imports of statically known modules.
364
+ """
365
+
366
+ kind = "EXPRESSION_IMPORT_MODULE_HARD"
367
+
368
+ __slots__ = (
369
+ "using_module_name",
370
+ "module",
371
+ "allowed",
372
+ "guaranteed",
373
+ "value_name",
374
+ "is_package",
375
+ )
376
+
377
+ def __init__(self, using_module_name, module_name, value_name, source_ref):
378
+ ExpressionImportHardBase.__init__(
379
+ self, module_name=module_name, source_ref=source_ref
380
+ )
381
+
382
+ self.value_name = value_name
383
+
384
+ ExpressionImportAllowanceMixin.__init__(
385
+ self, using_module_name=using_module_name
386
+ )
387
+
388
+ if self.finding != "not-found" and isHardModuleWithoutSideEffect(
389
+ self.module_name
390
+ ):
391
+ __import__(self.module_name.asString())
392
+ self.module = sys.modules[self.value_name]
393
+
394
+ self.is_package = hasattr(self.module, "__path__")
395
+ else:
396
+ self.module = None
397
+
398
+ # TODO: This is actually wrong for many packages, but for scipy, we
399
+ # use it to make it work for a hotfix, before taking the resolution
400
+ # to a new code base.
401
+ self.is_package = self.module_name.hasNamespace(
402
+ "scipy"
403
+ ) and isPackageModuleName(self.module_name)
404
+
405
+ self.guaranteed = self.allowed and (
406
+ not shallMakeModule() or self.module_name not in hard_modules_non_stdlib
407
+ )
408
+
409
+ @staticmethod
410
+ def isExpressionImportModuleHard():
411
+ return True
412
+
413
+ @staticmethod
414
+ def hasVeryTrustedValue():
415
+ return True
416
+
417
+ def finalize(self):
418
+ del self.parent
419
+
420
+ def getDetails(self):
421
+ return {
422
+ "using_module_name": self.using_module_name,
423
+ "module_name": self.module_name,
424
+ "value_name": self.value_name,
425
+ }
426
+
427
+ def getModuleName(self):
428
+ return self.module_name
429
+
430
+ def getValueName(self):
431
+ return self.value_name
432
+
433
+ def mayHaveSideEffects(self):
434
+ return self.module is None or not self.guaranteed
435
+
436
+ def mayRaiseException(self, exception_type):
437
+ return not self.allowed or self.mayHaveSideEffects()
438
+
439
+ def getTypeShape(self):
440
+ if self.module_name in sys.builtin_module_names:
441
+ return tshape_module_builtin
442
+ else:
443
+ return tshape_module
444
+
445
+ def computeExpressionRaw(self, trace_collection):
446
+ if self.mayRaiseException(BaseException):
447
+ trace_collection.onExceptionRaiseExit(BaseException)
448
+
449
+ # Trace the module usage attempt.
450
+ trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
451
+
452
+ return self, None, None
453
+
454
+ def computeExpressionImportName(self, import_node, import_name, trace_collection):
455
+ return self._computeExpressionAttribute(
456
+ lookup_node=import_node,
457
+ attribute_name=import_name,
458
+ trace_collection=trace_collection,
459
+ is_import=True,
460
+ )
461
+
462
+ @staticmethod
463
+ def _getImportNameErrorString(module, module_name, name):
464
+ if python_version < 0x300:
465
+ return "cannot import name %s" % name
466
+ elif python_version < 0x370:
467
+ return "cannot import name %r" % name
468
+ elif isStandaloneMode():
469
+ return "cannot import name %r from %r" % (name, module_name)
470
+ else:
471
+ return "cannot import name %r from %r (%s)" % (
472
+ name,
473
+ module_name,
474
+ module.__file__ if hasattr(module, "__file__") else "unknown location",
475
+ )
476
+
477
+ def _makeRaiseExceptionReplacementExpression(
478
+ self, lookup_node, attribute_name, is_import
479
+ ):
480
+ if is_import:
481
+ return makeRaiseExceptionReplacementExpression(
482
+ expression=lookup_node,
483
+ exception_type="ImportError",
484
+ exception_value=self._getImportNameErrorString(
485
+ self.module, self.value_name, attribute_name
486
+ ),
487
+ )
488
+ else:
489
+ return makeRaiseExceptionReplacementExpression(
490
+ expression=lookup_node,
491
+ exception_type="AttributeError",
492
+ # TODO: Not the right error message
493
+ exception_value=self._getImportNameErrorString(
494
+ self.module, self.value_name, attribute_name
495
+ ),
496
+ )
497
+
498
+ def _computeExpressionAttribute(
499
+ self, lookup_node, attribute_name, trace_collection, is_import
500
+ ):
501
+ # Return driven handling of many cases
502
+ # pylint: disable=too-many-branches,too-many-return-statements
503
+
504
+ if self.allowed:
505
+ full_name = self.value_name.getChildNamed(attribute_name)
506
+ full_name = ModuleName(hard_modules_aliases.get(full_name, full_name))
507
+
508
+ if isHardModule(full_name):
509
+ trace_collection.onExceptionRaiseExit(BaseException)
510
+
511
+ new_node = ExpressionImportModuleHard(
512
+ using_module_name=self.using_module_name,
513
+ module_name=full_name,
514
+ value_name=full_name,
515
+ source_ref=lookup_node.source_ref,
516
+ )
517
+
518
+ return (
519
+ new_node,
520
+ "new_expression",
521
+ "Hard module '%s' submodule '%s' pre-computed."
522
+ % (self.value_name, attribute_name),
523
+ )
524
+
525
+ if self.value_name in hard_modules_trust:
526
+ trust = hard_modules_trust[self.value_name].get(
527
+ attribute_name, trust_undefined
528
+ )
529
+ else:
530
+ trust = trust_undefined
531
+
532
+ if trust is trust_importable:
533
+ # TODO: Change this is a hard module import itself, currently these are not all trusted
534
+ # themselves yet. We do not have to indicate exception, but it makes no sense to annotate
535
+ # that here at this point.
536
+ trace_collection.onExceptionRaiseExit(BaseException)
537
+ elif trust is trust_may_exist:
538
+ trace_collection.onExceptionRaiseExit(BaseException)
539
+ elif (
540
+ trust is not trust_undefined
541
+ and self.module is not None
542
+ and not hasattr(self.module, attribute_name)
543
+ ):
544
+ # TODO: Unify with below branches.
545
+ trace_collection.onExceptionRaiseExit(ImportError)
546
+
547
+ new_node = self._makeRaiseExceptionReplacementExpression(
548
+ lookup_node=lookup_node,
549
+ attribute_name=attribute_name,
550
+ is_import=is_import,
551
+ )
552
+
553
+ return (
554
+ new_node,
555
+ "new_raise",
556
+ "Hard module '%s' attribute missing '%s* pre-computed."
557
+ % (self.value_name, attribute_name),
558
+ )
559
+ else:
560
+ if trust is trust_undefined:
561
+ # Need to attempt module imports if this is for an import
562
+ # lookup of code like "from value_name import attribute_name".
563
+ if self.is_package:
564
+ full_name = self.value_name.getChildNamed(attribute_name)
565
+
566
+ (
567
+ _sub_module_name,
568
+ _sub_module_filename,
569
+ _sub_module_kind,
570
+ finding,
571
+ ) = locateModule(
572
+ module_name=full_name,
573
+ parent_package=None,
574
+ level=0,
575
+ )
576
+
577
+ if finding != "not-found":
578
+ trace_collection.onExceptionRaiseExit(ImportError)
579
+
580
+ result = makeExpressionImportModuleFixed(
581
+ using_module_name=self.getParentModule().getFullName(),
582
+ module_name=full_name,
583
+ value_name=full_name,
584
+ source_ref=lookup_node.getSourceReference(),
585
+ )
586
+
587
+ return (
588
+ result,
589
+ "new_expression",
590
+ "Attribute lookup '%s' of hard module '%s' becomes hard module name import."
591
+ % (self.value_name, attribute_name),
592
+ )
593
+
594
+ trace_collection.onExceptionRaiseExit(ImportError)
595
+
596
+ onMissingTrust(
597
+ "Hard module '%s' attribute '%s' missing trust config for existing value.",
598
+ lookup_node.getSourceReference(),
599
+ self.value_name,
600
+ attribute_name,
601
+ )
602
+ elif trust is trust_constant and self.module is not None:
603
+ # Make sure it's actually there, and not becoming the getattr default by accident.
604
+ assert hasattr(self.module, attribute_name), self
605
+
606
+ return (
607
+ makeConstantReplacementNode(
608
+ constant=getattr(self.module, attribute_name),
609
+ node=lookup_node,
610
+ user_provided=True,
611
+ ),
612
+ "new_constant",
613
+ "Hard module '%s' imported '%s' pre-computed to constant value."
614
+ % (self.value_name, attribute_name),
615
+ )
616
+ elif trust is trust_node:
617
+ # TODO: Unify with other branches.
618
+ trace_collection.onExceptionRaiseExit(ImportError)
619
+
620
+ result = trust_node_factory[self.value_name, attribute_name](
621
+ source_ref=lookup_node.source_ref
622
+ )
623
+
624
+ return (
625
+ result,
626
+ "new_expression",
627
+ "Attribute lookup '%s' of hard module '%s' becomes node '%s'."
628
+ % (self.value_name, attribute_name, result.kind),
629
+ )
630
+ else:
631
+ result = makeExpressionImportModuleNameHard(
632
+ module_name=self.value_name,
633
+ import_name=attribute_name,
634
+ module_guaranteed=self.guaranteed,
635
+ source_ref=lookup_node.getSourceReference(),
636
+ )
637
+
638
+ return (
639
+ result,
640
+ "new_expression",
641
+ "Attribute lookup '%s' of hard module '%s' becomes hard module name import."
642
+ % (self.value_name, attribute_name),
643
+ )
644
+
645
+ else:
646
+ # Nothing can be known, but lets not do control flow escape, that is just
647
+ # too unlikely.
648
+ trace_collection.onExceptionRaiseExit(BaseException)
649
+
650
+ return lookup_node, None, None
651
+
652
+ def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
653
+ return self._computeExpressionAttribute(
654
+ lookup_node=lookup_node,
655
+ attribute_name=attribute_name,
656
+ trace_collection=trace_collection,
657
+ is_import=False,
658
+ )
659
+
660
+ def hasShapeTrustedAttributes(self):
661
+ return True
662
+
663
+
664
+ importlib_import_module_spec = BuiltinParameterSpec(
665
+ "importlib.import_module", ("name", "package"), default_count=1
666
+ )
667
+
668
+
669
+ class ExpressionImportlibImportModuleRef(
670
+ ExpressionImportModuleNameHardExistsSpecificBase
671
+ ):
672
+ kind = "EXPRESSION_IMPORTLIB_IMPORT_MODULE_REF"
673
+
674
+ def __init__(self, source_ref):
675
+ ExpressionImportModuleNameHardExistsSpecificBase.__init__(
676
+ self,
677
+ module_name="importlib",
678
+ import_name="import_module",
679
+ module_guaranteed=True,
680
+ source_ref=source_ref,
681
+ )
682
+
683
+ @staticmethod
684
+ def getDetails():
685
+ return {}
686
+
687
+ def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
688
+ # Anything may happen. On next pass, if replaced, we might be better
689
+ # but not now.
690
+ trace_collection.onExceptionRaiseExit(BaseException)
691
+
692
+ result = extractBuiltinArgs(
693
+ node=call_node,
694
+ builtin_class=ExpressionImportlibImportModuleCall,
695
+ builtin_spec=importlib_import_module_spec,
696
+ )
697
+
698
+ return result, "new_expression", "Call of 'importlib.import_module' recognized."
699
+
700
+
701
+ def _getImportNameAsStr(value):
702
+ if value is None:
703
+ result = None
704
+ else:
705
+ result = value.getCompileTimeConstant()
706
+
707
+ if type(result) in (str, unicode):
708
+ # TODO: This is not handling decoding errors all that well.
709
+ if str is not unicode and type(result) is unicode:
710
+ result = str(result)
711
+
712
+ return result
713
+
714
+
715
+ class ExpressionImportlibImportModuleCall(
716
+ ChildrenExpressionImportlibImportModuleCallMixin, ExpressionBase
717
+ ):
718
+ """Call to "importlib.import_module" """
719
+
720
+ kind = "EXPRESSION_IMPORTLIB_IMPORT_MODULE_CALL"
721
+
722
+ named_children = "name", "package|optional"
723
+
724
+ def __init__(self, name, package, source_ref):
725
+ ChildrenExpressionImportlibImportModuleCallMixin.__init__(
726
+ self,
727
+ name=name,
728
+ package=package,
729
+ )
730
+
731
+ ExpressionBase.__init__(self, source_ref)
732
+
733
+ @staticmethod
734
+ def _resolveImportLibArgs(module_name, package_name):
735
+ # Relative imports need to be resolved by package name.
736
+ if module_name.startswith("."):
737
+ if not package_name:
738
+ return None
739
+
740
+ # TODO: Static exception should be created and warned about, Python2/Python3 differ
741
+ # raise TypeError("relative imports require the 'package' argument")
742
+ # msg = ("the 'package' argument is required to perform a relative import for {!r}")
743
+ # raise TypeError(msg.format(name))
744
+
745
+ level = 0
746
+ for character in module_name:
747
+ if character != ".":
748
+ break
749
+ level += 1
750
+ module_name = module_name[level:]
751
+
752
+ dot = len(package_name)
753
+ for _i in xrange(level, 1, -1):
754
+ try:
755
+ dot = package_name.rindex(".", 0, dot)
756
+ except ValueError:
757
+ return None
758
+ # TODO: Static exception should be created and warned about.
759
+ # raise ValueError("attempted relative import beyond top-level package")
760
+
761
+ package_name = package_name[:dot]
762
+ if module_name == "":
763
+ return package_name
764
+ else:
765
+ return "%s.%s" % (package_name, module_name)
766
+
767
+ return module_name
768
+
769
+ def computeExpression(self, trace_collection):
770
+ module_name = self.subnode_name
771
+ package_name = self.subnode_package
772
+
773
+ if (
774
+ package_name is None or package_name.isCompileTimeConstant()
775
+ ) and module_name.isCompileTimeConstant():
776
+ imported_module_name = _getImportNameAsStr(module_name)
777
+ imported_package_name = _getImportNameAsStr(package_name)
778
+
779
+ if (
780
+ imported_package_name is None or type(imported_package_name) is str
781
+ ) and type(imported_module_name) is str:
782
+ resolved_module_name = self._resolveImportLibArgs(
783
+ imported_module_name, imported_package_name
784
+ )
785
+
786
+ if resolved_module_name is not None:
787
+ # Importing may raise an exception obviously, unless we know it will
788
+ # not.
789
+ trace_collection.onExceptionRaiseExit(BaseException)
790
+
791
+ result = makeExpressionImportModuleFixed(
792
+ using_module_name=self.getParentModule().getFullName(),
793
+ module_name=resolved_module_name,
794
+ value_name=resolved_module_name,
795
+ source_ref=self.source_ref,
796
+ )
797
+
798
+ return (
799
+ result,
800
+ "new_expression",
801
+ "Resolved importlib.import_module call to import of '%s'."
802
+ % resolved_module_name,
803
+ )
804
+
805
+ # TODO: This is special for this node, need to support for for call base of hard imports
806
+
807
+ # Any code could be run, note that.
808
+ trace_collection.onControlFlowEscape(self)
809
+
810
+ # Importing may raise an exception obviously, unless we know it will
811
+ # not.
812
+ trace_collection.onExceptionRaiseExit(BaseException)
813
+
814
+ # TODO: May return a module or module variable reference of some sort in
815
+ # the future with embedded modules.
816
+ return self, None, None
817
+
818
+
819
+ addModuleSingleAttributeNodeFactory(
820
+ "importlib", "import_module", ExpressionImportlibImportModuleRef
821
+ )
822
+
823
+
824
+ def _makeParentImportModuleUsages(module_name, source_ref):
825
+ for parent_package_name in module_name.getParentPackageNames():
826
+ (
827
+ _parent_package_name,
828
+ parent_module_filename,
829
+ parent_module_kind,
830
+ parent_module_finding,
831
+ ) = locateModule(
832
+ module_name=parent_package_name,
833
+ parent_package=None,
834
+ level=0,
835
+ )
836
+
837
+ yield makeModuleUsageAttempt(
838
+ module_name=parent_package_name,
839
+ filename=parent_module_filename,
840
+ finding=parent_module_finding,
841
+ module_kind=parent_module_kind,
842
+ level=0,
843
+ source_ref=source_ref,
844
+ reason="import path parent",
845
+ )
846
+
847
+
848
+ class ExpressionBuiltinImport(ChildrenExpressionBuiltinImportMixin, ExpressionBase):
849
+ __slots__ = (
850
+ "follow_attempted",
851
+ "finding",
852
+ "used_modules",
853
+ )
854
+
855
+ kind = "EXPRESSION_BUILTIN_IMPORT"
856
+
857
+ named_children = (
858
+ "name|setter",
859
+ "globals_arg|optional",
860
+ "locals_arg|optional",
861
+ "fromlist|optional",
862
+ "level|optional",
863
+ )
864
+
865
+ def __init__(self, name, globals_arg, locals_arg, fromlist, level, source_ref):
866
+ ChildrenExpressionBuiltinImportMixin.__init__(
867
+ self,
868
+ name=name,
869
+ globals_arg=globals_arg,
870
+ locals_arg=locals_arg,
871
+ fromlist=fromlist,
872
+ level=level,
873
+ )
874
+
875
+ ExpressionBase.__init__(self, source_ref)
876
+
877
+ self.follow_attempted = False
878
+
879
+ # The modules actually referenced in that import if it can be detected. Name
880
+ # imports are considered too.
881
+ self.used_modules = []
882
+
883
+ self.finding = None
884
+
885
+ def _getLevelValue(self):
886
+ parent_module = self.getParentModule()
887
+ level = self.subnode_level
888
+
889
+ if level is None:
890
+ return 0 if parent_module.getFutureSpec().isAbsoluteImport() else -1
891
+ elif not level.isCompileTimeConstant():
892
+ return None
893
+ else:
894
+ level_value = level.getCompileTimeConstant()
895
+
896
+ # TODO: Catch this as a static error maybe.
897
+ if type(level_value) not in (int, long):
898
+ return None
899
+
900
+ return level_value
901
+
902
+ def _attemptFollow(self, module_name):
903
+ # Complex stuff, pylint: disable=too-many-branches
904
+
905
+ # Without the level value, we don't know what it is.
906
+ level_value = self._getLevelValue()
907
+ if level_value is None:
908
+ return
909
+
910
+ parent_module = self.getParentModule()
911
+
912
+ if level_value != 0:
913
+ parent_package = parent_module.getFullName()
914
+ if not parent_module.isCompiledPythonPackage():
915
+ parent_package = parent_package.getPackageName()
916
+ else:
917
+ parent_package = None
918
+
919
+ module_name_resolved = resolveModuleName(module_name)
920
+ if module_name_resolved != module_name:
921
+ module_name = module_name_resolved
922
+
923
+ self.setChildName(
924
+ makeConstantReplacementNode(
925
+ constant=module_name.asString(),
926
+ node=self.subnode_name,
927
+ user_provided=True,
928
+ )
929
+ )
930
+
931
+ module_name = ModuleName(module_name)
932
+ module_name_found, module_filename, module_kind, self.finding = locateModule(
933
+ module_name=ModuleName(module_name),
934
+ parent_package=parent_package,
935
+ level=level_value,
936
+ )
937
+
938
+ # Allow for the import look ahead, to change what modules are
939
+ # considered hard imports.
940
+ Plugins.onModuleUsageLookAhead(
941
+ module_name=module_name_found,
942
+ module_filename=module_filename,
943
+ module_kind=module_kind,
944
+ )
945
+
946
+ self.used_modules = makeParentModuleUsagesAttempts(
947
+ makeModuleUsageAttempt(
948
+ module_name=module_name_found,
949
+ filename=module_filename,
950
+ module_kind=module_kind,
951
+ finding=self.finding,
952
+ level=level_value,
953
+ source_ref=self.source_ref,
954
+ reason="import",
955
+ )
956
+ )
957
+
958
+ if self.finding != "not-found":
959
+ module_name = module_name_found
960
+
961
+ import_list = self.subnode_fromlist
962
+
963
+ if import_list is not None:
964
+ if import_list.isCompileTimeConstant():
965
+ import_list = import_list.getCompileTimeConstant()
966
+
967
+ if type(import_list) not in (tuple, list):
968
+ import_list = None
969
+
970
+ if (
971
+ module_filename is not None
972
+ and import_list
973
+ and isPackageDir(module_filename)
974
+ ):
975
+ for import_item in import_list:
976
+ if import_item == "*":
977
+ continue
978
+
979
+ (
980
+ name_import_module_name,
981
+ name_import_module_filename,
982
+ name_import_module_kind,
983
+ name_import_finding,
984
+ ) = locateModule(
985
+ module_name=ModuleName(import_item),
986
+ parent_package=module_name,
987
+ level=1, # Relative import
988
+ )
989
+
990
+ self.used_modules = list(self.used_modules)
991
+
992
+ self.used_modules.append(
993
+ makeModuleUsageAttempt(
994
+ module_name=name_import_module_name,
995
+ filename=name_import_module_filename,
996
+ module_kind=name_import_module_kind,
997
+ finding=name_import_finding,
998
+ level=1,
999
+ source_ref=self.source_ref,
1000
+ reason="import fromlist",
1001
+ )
1002
+ )
1003
+
1004
+ self.used_modules = tuple(self.used_modules)
1005
+
1006
+ return module_filename
1007
+ else:
1008
+ return None
1009
+
1010
+ def _getImportedValueName(self, imported_module_name):
1011
+ from_list_truth = (
1012
+ self.subnode_fromlist is not None and self.subnode_fromlist.getTruthValue()
1013
+ )
1014
+
1015
+ if from_list_truth is True:
1016
+ return imported_module_name
1017
+ else:
1018
+ return imported_module_name.getTopLevelPackageName()
1019
+
1020
+ def computeExpression(self, trace_collection):
1021
+ # Attempt to recurse if not already done, many cases to consider and its
1022
+ # return driven, pylint: disable=too-many-branches,too-many-return-statements
1023
+ if self.follow_attempted:
1024
+ if self.finding == "not-found":
1025
+ # Importing and not finding, may raise an exception obviously.
1026
+ trace_collection.onExceptionRaiseExit(BaseException)
1027
+ else:
1028
+ # If we know it exists, only RuntimeError shall occur.
1029
+ trace_collection.onExceptionRaiseExit(RuntimeError)
1030
+
1031
+ # Trace the module usage attempts.
1032
+ trace_collection.onModuleUsageAttempts(self.used_modules)
1033
+
1034
+ # We stay here.
1035
+ return self, None, None
1036
+
1037
+ # Importing may raise an exception obviously, unless we know it will
1038
+ # not.
1039
+ if self.finding != "built-in":
1040
+ trace_collection.onExceptionRaiseExit(BaseException)
1041
+
1042
+ module_name = self.subnode_name
1043
+
1044
+ if module_name.isCompileTimeConstant():
1045
+ imported_module_name = module_name.getCompileTimeConstant()
1046
+
1047
+ module_filename = self._attemptFollow(module_name=imported_module_name)
1048
+ self.follow_attempted = True
1049
+
1050
+ # Trace the module usage attempts.
1051
+ for module_usage_attempt in self.used_modules:
1052
+ trace_collection.onModuleUsageAttempt(module_usage_attempt)
1053
+
1054
+ if type(imported_module_name) in (str, unicode):
1055
+ if self.finding == "relative":
1056
+ parent_module = self.getParentModule()
1057
+
1058
+ parent_package = parent_module.getFullName()
1059
+ if not parent_module.isCompiledPythonPackage():
1060
+ parent_package = parent_package.getPackageName()
1061
+
1062
+ level_value = abs(self._getLevelValue())
1063
+ level_value -= 1
1064
+
1065
+ while level_value > 0:
1066
+ parent_package = parent_package.getPackageName()
1067
+ level_value -= 1
1068
+
1069
+ if imported_module_name != "":
1070
+ candidate_module_name = parent_package.getChildNamed(
1071
+ imported_module_name
1072
+ )
1073
+ else:
1074
+ candidate_module_name = parent_package
1075
+
1076
+ if (
1077
+ candidate_module_name in hard_modules_non_stdlib
1078
+ or module_filename is None
1079
+ or isStandardLibraryPath(module_filename)
1080
+ ):
1081
+ result = ExpressionImportModuleHard(
1082
+ using_module_name=self.getParentModule().getFullName(),
1083
+ module_name=candidate_module_name,
1084
+ value_name=self._getImportedValueName(
1085
+ candidate_module_name
1086
+ ),
1087
+ source_ref=self.source_ref,
1088
+ )
1089
+
1090
+ return (
1091
+ result,
1092
+ "new_expression",
1093
+ "Lowered import %s module '%s' to hard import."
1094
+ % (
1095
+ (
1096
+ "hard import"
1097
+ if candidate_module_name in hard_modules_non_stdlib
1098
+ else "standard library"
1099
+ ),
1100
+ candidate_module_name.asString(),
1101
+ ),
1102
+ )
1103
+
1104
+ imported_module_name = resolveModuleName(imported_module_name)
1105
+
1106
+ if self.finding == "absolute" and isHardModule(imported_module_name):
1107
+ if (
1108
+ imported_module_name in hard_modules_non_stdlib
1109
+ or module_filename is None
1110
+ or isStandardLibraryPath(module_filename)
1111
+ ):
1112
+ result = ExpressionImportModuleHard(
1113
+ using_module_name=self.getParentModule().getFullName(),
1114
+ module_name=imported_module_name,
1115
+ value_name=self._getImportedValueName(imported_module_name),
1116
+ source_ref=self.source_ref,
1117
+ )
1118
+
1119
+ return (
1120
+ result,
1121
+ "new_expression",
1122
+ "Lowered import %s module '%s' to hard import."
1123
+ % (
1124
+ (
1125
+ "hard import"
1126
+ if imported_module_name in hard_modules_non_stdlib
1127
+ else "standard library"
1128
+ ),
1129
+ imported_module_name.asString(),
1130
+ ),
1131
+ )
1132
+ elif shallWarnUnusualCode():
1133
+ unusual_logger.warning(
1134
+ "%s: Standard library module '%s' used from outside path %r."
1135
+ % (
1136
+ self.source_ref.getAsString(),
1137
+ imported_module_name.asString(),
1138
+ self.module_filename,
1139
+ )
1140
+ )
1141
+
1142
+ # Built-in module imports can be specialized right away.
1143
+
1144
+ if self.finding == "built-in":
1145
+ result = makeExpressionImportModuleBuiltin(
1146
+ using_module_name=self.getParentModule().getFullName(),
1147
+ module_name=imported_module_name,
1148
+ value_name=self._getImportedValueName(imported_module_name),
1149
+ source_ref=self.source_ref,
1150
+ )
1151
+
1152
+ # TODO: This ought to preserve side effects from arguments
1153
+ # for full compatibility with strange uses of __import__
1154
+ return (
1155
+ result,
1156
+ "new_expression",
1157
+ "Lowered import of built-in module '%s' to hard import."
1158
+ % imported_module_name.asString(),
1159
+ )
1160
+
1161
+ if self.finding == "not-found":
1162
+ if imported_module_name in hard_modules_limited:
1163
+ result = makeRaiseImportErrorReplacementExpression(
1164
+ expression=self, module_name=imported_module_name
1165
+ )
1166
+
1167
+ return (
1168
+ result,
1169
+ "new_raise",
1170
+ "Lowered import of missing standard library module '%s' to hard import."
1171
+ % imported_module_name.asString(),
1172
+ )
1173
+
1174
+ elif (
1175
+ isStandaloneMode()
1176
+ and self.used_modules
1177
+ and isExperimental("standalone-imports")
1178
+ ):
1179
+ result = makeExpressionImportModuleFixed(
1180
+ using_module_name=self.getParentModule().getFullName(),
1181
+ module_name=self.used_modules[0].module_name,
1182
+ value_name=self._getImportedValueName(
1183
+ self.used_modules[0].module_name
1184
+ ),
1185
+ source_ref=self.source_ref,
1186
+ )
1187
+
1188
+ return (
1189
+ result,
1190
+ "new_expression",
1191
+ "Lowered import of module '%s' to fixed import."
1192
+ % imported_module_name.asString(),
1193
+ )
1194
+ else:
1195
+ # TODO: This doesn't preserve side effects.
1196
+
1197
+ # Non-strings is going to raise an error.
1198
+ (
1199
+ new_node,
1200
+ change_tags,
1201
+ message,
1202
+ ) = trace_collection.getCompileTimeComputationResult(
1203
+ node=self,
1204
+ computation=lambda: __import__(
1205
+ module_name.getCompileTimeConstant()
1206
+ ),
1207
+ description="Replaced '__import__' call with non-string module name argument.",
1208
+ )
1209
+
1210
+ # Must fail, must not go on when it doesn't.
1211
+ assert change_tags == "new_raise", module_name
1212
+
1213
+ return new_node, change_tags, message
1214
+
1215
+ # Trace the module usage attempts, doing it twice will not harm, this
1216
+ # becomes a set.
1217
+ for module_usage_attempt in self.used_modules:
1218
+ trace_collection.onModuleUsageAttempt(module_usage_attempt)
1219
+
1220
+ # TODO: May return a module or module variable reference of some sort in
1221
+ # the future with embedded modules.
1222
+ return self, None, None
1223
+
1224
+ # TODO: Add computeExpressionImportName
1225
+
1226
+ def mayRaiseException(self, exception_type):
1227
+ return self.finding != "built-in"
1228
+
1229
+
1230
+ class StatementImportStar(StatementImportStarBase):
1231
+ kind = "STATEMENT_IMPORT_STAR"
1232
+
1233
+ named_children = ("module",)
1234
+ node_attributes = ("target_scope",)
1235
+ auto_compute_handling = "post_init,operation"
1236
+
1237
+ def postInitNode(self):
1238
+ # TODO: Abstract these things in some better way, and do not make it permanent.
1239
+ if type(self.target_scope) is GlobalsDictHandle:
1240
+ self.target_scope.markAsEscaped()
1241
+
1242
+ def getTargetDictScope(self):
1243
+ return self.target_scope
1244
+
1245
+ def computeStatementOperation(self, trace_collection):
1246
+ trace_collection.onLocalsDictEscaped(self.target_scope)
1247
+
1248
+ # Need to invalidate everything, and everything could be assigned to
1249
+ # something else now.
1250
+ trace_collection.removeAllKnowledge()
1251
+
1252
+ # We could always encounter that __all__ is a strange beast and causes
1253
+ # the exception.
1254
+ trace_collection.onExceptionRaiseExit(BaseException)
1255
+
1256
+ return self, None, None
1257
+
1258
+ @staticmethod
1259
+ def mayRaiseException(exception_type):
1260
+ # Not done. TODO: Later we can try and check for "__all__" if it
1261
+ # really can be that way.
1262
+ return True
1263
+
1264
+ @staticmethod
1265
+ def getStatementNiceName():
1266
+ return "star import statement"
1267
+
1268
+
1269
+ class ExpressionImportName(ChildHavingModuleMixin, ExpressionBase):
1270
+ kind = "EXPRESSION_IMPORT_NAME"
1271
+
1272
+ named_children = ("module",)
1273
+
1274
+ __slots__ = ("import_name", "level")
1275
+
1276
+ def __init__(self, module, import_name, level, source_ref):
1277
+ ChildHavingModuleMixin.__init__(self, module=module)
1278
+
1279
+ ExpressionBase.__init__(self, source_ref)
1280
+
1281
+ self.import_name = import_name
1282
+ self.level = level
1283
+
1284
+ # Not allowed.
1285
+ assert level is not None
1286
+
1287
+ assert module is not None
1288
+
1289
+ def getImportName(self):
1290
+ return self.import_name
1291
+
1292
+ def getImportLevel(self):
1293
+ return self.level
1294
+
1295
+ def getDetails(self):
1296
+ return {"import_name": self.import_name, "level": self.level}
1297
+
1298
+ def computeExpression(self, trace_collection):
1299
+ return self.subnode_module.computeExpressionImportName(
1300
+ import_node=self,
1301
+ import_name=self.import_name,
1302
+ trace_collection=trace_collection,
1303
+ )
1304
+
1305
+ def mayRaiseException(self, exception_type):
1306
+ return self.subnode_module.mayRaiseExceptionImportName(
1307
+ exception_type=exception_type, import_name=self.import_name
1308
+ )
1309
+
1310
+
1311
+ def makeExpressionImportModuleFixed(
1312
+ using_module_name, module_name, value_name, source_ref
1313
+ ):
1314
+ module_name = resolveModuleName(module_name)
1315
+ value_name = resolveModuleName(value_name)
1316
+
1317
+ if isHardModule(module_name):
1318
+ return ExpressionImportModuleHard(
1319
+ using_module_name=using_module_name,
1320
+ module_name=module_name,
1321
+ value_name=value_name,
1322
+ source_ref=source_ref,
1323
+ )
1324
+ else:
1325
+ return ExpressionImportModuleFixed(
1326
+ module_name=module_name,
1327
+ value_name=value_name,
1328
+ source_ref=source_ref,
1329
+ )
1330
+
1331
+
1332
+ def makeExpressionImportModuleBuiltin(
1333
+ using_module_name, module_name, value_name, source_ref
1334
+ ):
1335
+ module_name = resolveModuleName(module_name)
1336
+ value_name = resolveModuleName(value_name)
1337
+
1338
+ if isHardModule(module_name):
1339
+ return ExpressionImportModuleHard(
1340
+ using_module_name=using_module_name,
1341
+ module_name=module_name,
1342
+ value_name=value_name,
1343
+ source_ref=source_ref,
1344
+ )
1345
+ else:
1346
+ return ExpressionImportModuleBuiltin(
1347
+ module_name=module_name,
1348
+ value_name=value_name,
1349
+ source_ref=source_ref,
1350
+ )
1351
+
1352
+
1353
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1354
+ # integrates with CPython, but also works on its own.
1355
+ #
1356
+ # Licensed under the Apache License, Version 2.0 (the "License");
1357
+ # you may not use this file except in compliance with the License.
1358
+ # You may obtain a copy of the License at
1359
+ #
1360
+ # http://www.apache.org/licenses/LICENSE-2.0
1361
+ #
1362
+ # Unless required by applicable law or agreed to in writing, software
1363
+ # distributed under the License is distributed on an "AS IS" BASIS,
1364
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1365
+ # See the License for the specific language governing permissions and
1366
+ # limitations under the License.