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,1301 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Expression base classes.
5
+
6
+ These classes provide the generic base classes available for
7
+ expressions. They have a richer interface, mostly related to
8
+ abstract execution, and different from statements.
9
+
10
+ """
11
+
12
+ from abc import abstractmethod
13
+
14
+ from nuitka import Options
15
+ from nuitka.__past__ import long
16
+
17
+ # TODO: Probably should separate building reports out.
18
+ from nuitka.code_generation.Reports import onMissingOverload
19
+ from nuitka.Constants import isCompileTimeConstantValue
20
+ from nuitka.PythonVersions import python_version
21
+
22
+ from .ChildrenHavingMixins import ChildHavingValueMixin
23
+ from .NodeBases import NodeBase
24
+ from .NodeMakingHelpers import (
25
+ makeConstantReplacementNode,
26
+ makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue,
27
+ wrapExpressionWithNodeSideEffects,
28
+ )
29
+ from .shapes.BuiltinTypeShapes import (
30
+ tshape_bool,
31
+ tshape_bytes,
32
+ tshape_dict,
33
+ tshape_list,
34
+ tshape_str,
35
+ tshape_type,
36
+ tshape_unicode,
37
+ )
38
+ from .shapes.StandardShapes import tshape_unknown
39
+
40
+
41
+ class ExpressionBase(NodeBase):
42
+ # TODO: Maybe we can do this only for debug mode.
43
+ __slots__ = ("code_generated",)
44
+
45
+ @staticmethod
46
+ def getTypeShape():
47
+ return tshape_unknown
48
+
49
+ def getValueShape(self):
50
+ return self
51
+
52
+ @staticmethod
53
+ def isCompileTimeConstant():
54
+ """Has a value that we can use at compile time.
55
+
56
+ Yes or no. If it has such a value, simulations can be applied at
57
+ compile time and e.g. operations or conditions, or even calls may
58
+ be executed against it.
59
+ """
60
+ return False
61
+
62
+ @staticmethod
63
+ def getTruthValue():
64
+ """Return known truth value. The "None" value indicates unknown."""
65
+
66
+ return None
67
+
68
+ @staticmethod
69
+ def getComparisonValue():
70
+ """Return known value used for compile time comparison. The "None" value indicates unknown."""
71
+
72
+ return False, None
73
+
74
+ @staticmethod
75
+ def isMappingWithConstantStringKeys():
76
+ """Is this a mapping with constant string keys. Used for call optimization."""
77
+ return False
78
+
79
+ @staticmethod
80
+ def isKnownToBeIterable(count):
81
+ """Can be iterated at all (count is None) or exactly count times.
82
+
83
+ Yes or no. If it can be iterated a known number of times, it may
84
+ be asked to unpack itself.
85
+ """
86
+
87
+ # Virtual method, pylint: disable=unused-argument
88
+ return False
89
+
90
+ @staticmethod
91
+ def isKnownToBeIterableAtMin(count):
92
+ # Virtual method, pylint: disable=unused-argument
93
+ return False
94
+
95
+ def getIterationLength(self):
96
+ """Value that "len" or "PyObject_Size" would give, if known.
97
+
98
+ Otherwise it is "None" to indicate unknown.
99
+ """
100
+
101
+ # Virtual method, pylint: disable=no-self-use
102
+ return None
103
+
104
+ def getIterationMinLength(self):
105
+ """Value that "len" or "PyObject_Size" would give at minimum, if known.
106
+
107
+ Otherwise it is "None" to indicate unknown.
108
+ """
109
+
110
+ return self.getIterationLength()
111
+
112
+ @staticmethod
113
+ def getStringValue():
114
+ """Node as string value, if possible."""
115
+ return None
116
+
117
+ def getStrValue(self):
118
+ """Value that "str" or "PyObject_Str" would give, if known.
119
+
120
+ Otherwise it is "None" to indicate unknown. Users must not
121
+ forget to take side effects into account, when replacing a
122
+ node with its string value.
123
+ """
124
+ string_value = self.getStringValue()
125
+
126
+ if string_value is not None:
127
+ # Those that are user provided, need to overload this.
128
+ return makeConstantReplacementNode(
129
+ node=self, constant=string_value, user_provided=False
130
+ )
131
+
132
+ return None
133
+
134
+ def getTypeValue(self):
135
+ """Type of the node."""
136
+
137
+ from .TypeNodes import ExpressionBuiltinType1
138
+
139
+ return ExpressionBuiltinType1(
140
+ value=self.makeClone(), source_ref=self.source_ref
141
+ )
142
+
143
+ def getIterationHandle(self):
144
+ # Virtual method, pylint: disable=no-self-use
145
+ return None
146
+
147
+ @staticmethod
148
+ def isKnownToBeHashable():
149
+ """Is the value hashable, i.e. suitable for dictionary/set key usage."""
150
+
151
+ # Unknown by default.
152
+ return None
153
+
154
+ @staticmethod
155
+ def extractUnhashableNodeType():
156
+ """Return the value type that is not hashable, if isKnowtoBeHashable() returns False."""
157
+
158
+ # Not available by default.
159
+ return None
160
+
161
+ def onRelease(self, trace_collection):
162
+ # print "onRelease", self
163
+ pass
164
+
165
+ def isKnownToHaveAttribute(self, attribute_name):
166
+ # Virtual method, pylint: disable=no-self-use,unused-argument
167
+ return None
168
+
169
+ @abstractmethod
170
+ def computeExpressionRaw(self, trace_collection):
171
+ """Abstract execution of the node.
172
+
173
+ Returns:
174
+ tuple(node, tags, description)
175
+
176
+ The return value can be node itself.
177
+
178
+ Notes:
179
+ Replaces a node with computation result. This is the low level
180
+ form for the few cases, where the children are not simply all
181
+ evaluated first, but this allows e.g. to deal with branches, do
182
+ not overload this unless necessary.
183
+ """
184
+
185
+ def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
186
+ # By default, an attribute lookup may change everything about the lookup
187
+ # source.
188
+ # trace_collection.onValueEscapeAttributeLookup(self, attribute_name)
189
+
190
+ if self.mayRaiseExceptionAttributeLookup(BaseException, attribute_name):
191
+ trace_collection.onExceptionRaiseExit(BaseException)
192
+
193
+ # Any code could be run, note that.
194
+ trace_collection.onControlFlowEscape(self)
195
+
196
+ return lookup_node, None, None
197
+
198
+ def computeExpressionAttributeSpecial(
199
+ self, lookup_node, attribute_name, trace_collection
200
+ ):
201
+ # By default, an attribute lookup may change everything about the lookup
202
+ # source. Virtual method, pylint: disable=unused-argument
203
+ # trace_collection.onValueEscapeAttributeLookup(self, attribute_name)
204
+
205
+ # Any code could be run, note that.
206
+ trace_collection.onControlFlowEscape(self)
207
+
208
+ trace_collection.onExceptionRaiseExit(BaseException)
209
+
210
+ return lookup_node, None, None
211
+
212
+ def computeExpressionImportName(self, import_node, import_name, trace_collection):
213
+ if self.mayRaiseExceptionImportName(BaseException, import_name):
214
+ trace_collection.onExceptionRaiseExit(BaseException)
215
+
216
+ # Any code could be run, note that.
217
+ trace_collection.onControlFlowEscape(self)
218
+
219
+ return import_node, None, None
220
+
221
+ def computeExpressionSetAttribute(
222
+ self, set_node, attribute_name, value_node, trace_collection
223
+ ):
224
+ # Virtual method, pylint: disable=unused-argument
225
+
226
+ # By default, an attribute lookup may change everything about the lookup
227
+ # source and any code could run.
228
+ trace_collection.removeKnowledge(self)
229
+ trace_collection.removeKnowledge(value_node)
230
+ trace_collection.onControlFlowEscape(self)
231
+
232
+ trace_collection.onExceptionRaiseExit(BaseException)
233
+
234
+ # Better mechanics?
235
+ return set_node, None, None
236
+
237
+ def computeExpressionDelAttribute(self, set_node, attribute_name, trace_collection):
238
+ # By default, an attribute lookup may change everything about the lookup
239
+ # source. Virtual method, pylint: disable=unused-argument
240
+ # trace_collection.removeKnowledge(self)
241
+
242
+ # Any code could be run, note that.
243
+ trace_collection.onControlFlowEscape(self)
244
+
245
+ trace_collection.onExceptionRaiseExit(BaseException)
246
+
247
+ # Better mechanics?
248
+ return set_node, None, None
249
+
250
+ def computeExpressionSubscript(self, lookup_node, subscript, trace_collection):
251
+ # By default, an subscript can execute any code and change all values
252
+ # that escaped. This is a virtual method that may consider the subscript
253
+ # but generally we don't know what to do. pylint: disable=unused-argument
254
+ trace_collection.onControlFlowEscape(self)
255
+
256
+ # Any exception may be raised.
257
+ trace_collection.onExceptionRaiseExit(BaseException)
258
+
259
+ return lookup_node, None, None
260
+
261
+ def computeExpressionSetSubscript(
262
+ self, set_node, subscript, value_node, trace_collection
263
+ ):
264
+ # By default, an subscript can execute any code and change all values
265
+ # that escaped. This is a virtual method that may consider the subscript
266
+ # but generally we don't know what to do.
267
+ trace_collection.removeKnowledge(value_node)
268
+ trace_collection.removeKnowledge(subscript)
269
+ trace_collection.onControlFlowEscape(self)
270
+
271
+ # Any exception may be raised.
272
+ trace_collection.onExceptionRaiseExit(BaseException)
273
+
274
+ return set_node, None, None
275
+
276
+ def computeExpressionDelSubscript(self, del_node, subscript, trace_collection):
277
+ # By default, an subscript can execute any code and change all values
278
+ # that escaped. This is a virtual method that may consider the subscript
279
+ # but generally we don't know what to do. pylint: disable=unused-argument
280
+ trace_collection.onControlFlowEscape(self)
281
+
282
+ # Any exception may be raised.
283
+ trace_collection.onExceptionRaiseExit(BaseException)
284
+
285
+ return del_node, None, None
286
+
287
+ def computeExpressionSlice(self, lookup_node, lower, upper, trace_collection):
288
+ # pylint: disable=unused-argument
289
+
290
+ # By default, a slicing may change everything about the lookup source.
291
+ # trace_collection.removeKnowledge(self)
292
+ # trace_collection.onValueEscapeSliceOperation(self, lower, upper)
293
+
294
+ # Any code could be run, note that.
295
+ trace_collection.onControlFlowEscape(self)
296
+
297
+ # Any exception may be raised.
298
+ trace_collection.onExceptionRaiseExit(BaseException)
299
+
300
+ return lookup_node, None, None
301
+
302
+ def computeExpressionSetSlice(
303
+ self, set_node, lower, upper, value_node, trace_collection
304
+ ):
305
+ # pylint: disable=unused-argument
306
+
307
+ # By default, an subscript may change everything about the lookup
308
+ # source and the value is escaped.
309
+ trace_collection.removeKnowledge(value_node)
310
+ trace_collection.removeKnowledge(self)
311
+ trace_collection.onControlFlowEscape(self)
312
+
313
+ # trace_collection.onValueEscapeSliceArguments(self, lower, upper)
314
+
315
+ # trace_collection.onValueEscapeSliceSetSource(self, lower, upper)
316
+
317
+ # Any exception may be raised.
318
+ trace_collection.onExceptionRaiseExit(BaseException)
319
+
320
+ return set_node, None, None
321
+
322
+ def computeExpressionDelSlice(self, set_node, lower, upper, trace_collection):
323
+ # pylint: disable=unused-argument
324
+
325
+ # By default, an subscript may change everything about the lookup
326
+ # source.
327
+ trace_collection.removeKnowledge(self)
328
+ trace_collection.onControlFlowEscape(self)
329
+
330
+ # trace_collection.onValueEscapeSliceArguments(self, lower, upper)
331
+
332
+ # Any exception may be raised.
333
+ trace_collection.onExceptionRaiseExit(BaseException)
334
+
335
+ return set_node, None, None
336
+
337
+ def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
338
+ # Virtual method, pylint: disable=unused-argument
339
+
340
+ # The called and the arguments escape for good.
341
+ call_node.onContentEscapes(trace_collection)
342
+
343
+ # Any code could be run, note that.
344
+ trace_collection.onControlFlowEscape(self)
345
+
346
+ # Any exception may be raised.
347
+ trace_collection.onExceptionRaiseExit(BaseException)
348
+
349
+ return call_node, None, None
350
+
351
+ def computeExpressionCallViaVariable(
352
+ self, call_node, variable_ref_node, call_args, call_kw, trace_collection
353
+ ):
354
+ # Virtual method, pylint: disable=unused-argument
355
+
356
+ # The called and the arguments escape for good.
357
+ self.onContentEscapes(trace_collection)
358
+ if call_args is not None:
359
+ call_args.onContentEscapes(trace_collection)
360
+ if call_kw is not None:
361
+ call_kw.onContentEscapes(trace_collection)
362
+
363
+ # Any code could be run, note that.
364
+ trace_collection.onControlFlowEscape(self)
365
+
366
+ # Any exception may be raised.
367
+ trace_collection.onExceptionRaiseExit(BaseException)
368
+
369
+ return call_node, None, None
370
+
371
+ def computeExpressionLen(self, len_node, trace_collection):
372
+ shape = self.getValueShape()
373
+
374
+ has_len = shape.hasShapeSlotLen()
375
+
376
+ if has_len is False:
377
+ # An exception may be raised.
378
+ trace_collection.onExceptionRaiseExit(BaseException)
379
+
380
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
381
+ template="object of type '%s' has no len()",
382
+ operation="len",
383
+ original_node=len_node,
384
+ value_node=self,
385
+ )
386
+ elif has_len is True:
387
+ iter_length = self.getIterationLength()
388
+
389
+ if iter_length is not None:
390
+ from .ConstantRefNodes import makeConstantRefNode
391
+
392
+ result = makeConstantRefNode(
393
+ constant=int(iter_length), # make sure to downcast long
394
+ source_ref=len_node.getSourceReference(),
395
+ )
396
+
397
+ result = wrapExpressionWithNodeSideEffects(
398
+ new_node=result, old_node=self
399
+ )
400
+
401
+ return (
402
+ result,
403
+ "new_constant",
404
+ "Predicted 'len' result from value shape.",
405
+ )
406
+
407
+ self.onContentEscapes(trace_collection)
408
+
409
+ # Any code could be run, note that.
410
+ trace_collection.onControlFlowEscape(self)
411
+
412
+ # Any exception may be raised.
413
+ trace_collection.onExceptionRaiseExit(BaseException)
414
+
415
+ return len_node, None, None
416
+
417
+ def computeExpressionAbs(self, abs_node, trace_collection):
418
+ shape = self.getTypeShape()
419
+
420
+ if shape.hasShapeSlotAbs() is False:
421
+ # Any exception may be raised.
422
+ trace_collection.onExceptionRaiseExit(BaseException)
423
+
424
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
425
+ template="bad operand type for abs(): '%s'",
426
+ operation="abs",
427
+ original_node=abs_node,
428
+ value_node=self,
429
+ )
430
+
431
+ self.onContentEscapes(trace_collection)
432
+
433
+ # Any code could be run, note that.
434
+ trace_collection.onControlFlowEscape(self)
435
+
436
+ # Any exception may be raised.
437
+ trace_collection.onExceptionRaiseExit(BaseException)
438
+
439
+ return abs_node, None, None
440
+
441
+ def computeExpressionInt(self, int_node, trace_collection):
442
+ shape = self.getTypeShape()
443
+
444
+ if shape.hasShapeSlotInt() is False:
445
+ # Any exception may be raised.
446
+ trace_collection.onExceptionRaiseExit(BaseException)
447
+
448
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
449
+ template=(
450
+ "int() argument must be a string or a number, not '%s'"
451
+ if python_version < 0x300
452
+ else "int() argument must be a string, a bytes-like object or a number, not '%s'"
453
+ ),
454
+ operation="int",
455
+ original_node=int_node,
456
+ value_node=self,
457
+ )
458
+
459
+ self.onContentEscapes(trace_collection)
460
+
461
+ # Any code could be run, note that.
462
+ trace_collection.onControlFlowEscape(self)
463
+
464
+ # Any exception may be raised.
465
+ trace_collection.onExceptionRaiseExit(BaseException)
466
+
467
+ return int_node, None, None
468
+
469
+ def computeExpressionLong(self, long_node, trace_collection):
470
+ shape = self.getTypeShape()
471
+
472
+ if shape.hasShapeSlotLong() is False:
473
+ # Any exception may be raised.
474
+ trace_collection.onExceptionRaiseExit(BaseException)
475
+
476
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
477
+ template="long() argument must be a string or a number, not '%s'",
478
+ operation="long",
479
+ original_node=long_node,
480
+ value_node=self,
481
+ )
482
+
483
+ self.onContentEscapes(trace_collection)
484
+
485
+ # Any code could be run, note that.
486
+ trace_collection.onControlFlowEscape(self)
487
+
488
+ # Any exception may be raised.
489
+ trace_collection.onExceptionRaiseExit(BaseException)
490
+
491
+ return long_node, None, None
492
+
493
+ def computeExpressionFloat(self, float_node, trace_collection):
494
+ shape = self.getTypeShape()
495
+
496
+ if shape.hasShapeSlotFloat() is False:
497
+ # Any exception may be raised.
498
+ trace_collection.onExceptionRaiseExit(BaseException)
499
+
500
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
501
+ (
502
+ "float() argument must be a string or a number"
503
+ if Options.is_full_compat and python_version < 0x300
504
+ else "float() argument must be a string or a number, not '%s'"
505
+ ),
506
+ operation="long",
507
+ original_node=float_node,
508
+ value_node=self,
509
+ )
510
+
511
+ self.onContentEscapes(trace_collection)
512
+
513
+ # Any code could be run, note that.
514
+ trace_collection.onControlFlowEscape(self)
515
+
516
+ # Any exception may be raised.
517
+ trace_collection.onExceptionRaiseExit(BaseException)
518
+
519
+ return float_node, None, None
520
+
521
+ def computeExpressionBytes(self, bytes_node, trace_collection):
522
+ shape = self.getTypeShape()
523
+
524
+ if (
525
+ shape.hasShapeSlotBytes() is False
526
+ and shape.hasShapeSlotInt() is False
527
+ and shape.hasShapeSlotIter() is False
528
+ ):
529
+ # An exception is raised.
530
+ trace_collection.onExceptionRaiseExit(BaseException)
531
+
532
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
533
+ "'%s' object is not iterable",
534
+ operation="bytes",
535
+ original_node=bytes_node,
536
+ value_node=self,
537
+ )
538
+
539
+ self.onContentEscapes(trace_collection)
540
+
541
+ # Any code could be run, note that.
542
+ trace_collection.onControlFlowEscape(self)
543
+
544
+ # Any exception may be raised.
545
+ trace_collection.onExceptionRaiseExit(BaseException)
546
+
547
+ return bytes_node, None, None
548
+
549
+ def computeExpressionComplex(self, complex_node, trace_collection):
550
+ shape = self.getTypeShape()
551
+
552
+ if shape.hasShapeSlotComplex() is False:
553
+ # Any exception may be raised.
554
+ trace_collection.onExceptionRaiseExit(BaseException)
555
+
556
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
557
+ (
558
+ "complex() argument must be a string or a number"
559
+ if Options.is_full_compat and python_version < 0x300
560
+ else "complex() argument must be a string or a number, not '%s'"
561
+ ),
562
+ operation="complex",
563
+ original_node=complex_node,
564
+ value_node=self,
565
+ )
566
+
567
+ self.onContentEscapes(trace_collection)
568
+
569
+ # Any code could be run, note that.
570
+ trace_collection.onControlFlowEscape(self)
571
+
572
+ # Any exception may be raised.
573
+ trace_collection.onExceptionRaiseExit(BaseException)
574
+
575
+ return complex_node, None, None
576
+
577
+ def computeExpressionIter1(self, iter_node, trace_collection):
578
+ shape = self.getTypeShape()
579
+
580
+ if shape.hasShapeSlotIter() is False:
581
+ # An exception may be raised.
582
+ trace_collection.onExceptionRaiseExit(BaseException)
583
+
584
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
585
+ template="'%s' object is not iterable",
586
+ operation="iter",
587
+ original_node=iter_node,
588
+ value_node=self,
589
+ )
590
+
591
+ self.onContentEscapes(trace_collection)
592
+
593
+ # Any code could be run, note that.
594
+ trace_collection.onControlFlowEscape(self)
595
+
596
+ # Any exception may be raised.
597
+ trace_collection.onExceptionRaiseExit(BaseException)
598
+
599
+ return iter_node, None, None
600
+
601
+ def computeExpressionNext1(self, next_node, trace_collection):
602
+ # TODO: This is only true for a few value types, use type shape to tell if
603
+ # it might escape or raise.
604
+
605
+ self.onContentEscapes(trace_collection)
606
+
607
+ # Any code could be run, note that.
608
+ if self.mayHaveSideEffectsNext():
609
+ trace_collection.onControlFlowEscape(self)
610
+
611
+ # Any exception may be raised.
612
+ trace_collection.onExceptionRaiseExit(BaseException)
613
+
614
+ return True, (next_node, None, None)
615
+
616
+ def computeExpressionAsyncIter(self, iter_node, trace_collection):
617
+ self.onContentEscapes(trace_collection)
618
+
619
+ # Any code could be run, note that.
620
+ trace_collection.onControlFlowEscape(self)
621
+
622
+ # Any exception may be raised.
623
+ trace_collection.onExceptionRaiseExit(BaseException)
624
+
625
+ return iter_node, None, None
626
+
627
+ def computeExpressionOperationNot(self, not_node, trace_collection):
628
+ # Virtual method, pylint: disable=no-self-use
629
+
630
+ # The value of that node escapes and could change its contents.
631
+ # trace_collection.onValueEscapeNot(self)
632
+
633
+ # Any code could be run, note that.
634
+ trace_collection.onControlFlowEscape(not_node)
635
+
636
+ # Any exception may be raised.
637
+ trace_collection.onExceptionRaiseExit(BaseException)
638
+
639
+ return not_node, None, None
640
+
641
+ def computeExpressionOperationRepr(self, repr_node, trace_collection):
642
+ type_shape = self.getTypeShape()
643
+
644
+ escape_desc = type_shape.getOperationUnaryReprEscape()
645
+
646
+ # Annotate if exceptions might be raised.
647
+ exception_raise_exit = escape_desc.getExceptionExit()
648
+ if exception_raise_exit is not None:
649
+ trace_collection.onExceptionRaiseExit(exception_raise_exit)
650
+
651
+ if escape_desc.isValueEscaping():
652
+ # The value of that node escapes and could change its contents during repr
653
+ # only, which might be more limited.
654
+ # trace_collection.onValueEscapeRepr(self)
655
+ trace_collection.removeKnowledge(self)
656
+
657
+ if escape_desc.isControlFlowEscape():
658
+ # Any code could be run, note that.
659
+ trace_collection.onControlFlowEscape(self)
660
+
661
+ return (repr_node, None, None), escape_desc
662
+
663
+ def computeExpressionComparisonIn(self, in_node, value_node, trace_collection):
664
+ # Virtual method, pylint: disable=unused-argument
665
+
666
+ shape = self.getTypeShape()
667
+
668
+ assert shape is not None, self
669
+
670
+ if shape.hasShapeSlotContains() is False:
671
+ # An exception may be raised.
672
+ trace_collection.onExceptionRaiseExit(BaseException)
673
+
674
+ return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
675
+ template="argument of type '%s' object is not iterable",
676
+ operation="in",
677
+ original_node=in_node,
678
+ value_node=self,
679
+ )
680
+
681
+ # Any code could be run, note that.
682
+ trace_collection.onControlFlowEscape(in_node)
683
+
684
+ # Any exception may be raised.
685
+ trace_collection.onExceptionRaiseExit(BaseException)
686
+
687
+ return in_node, None, None
688
+
689
+ def computeExpressionDrop(self, statement, trace_collection):
690
+ if not self.mayHaveSideEffects():
691
+ return (
692
+ None,
693
+ "new_statements",
694
+ lambda: "Removed %s without effect." % self.getDescription(),
695
+ )
696
+
697
+ return statement, None, None
698
+
699
+ def computeExpressionBool(self, trace_collection):
700
+ if not self.mayRaiseException(BaseException) and self.mayRaiseExceptionBool(
701
+ BaseException
702
+ ):
703
+ trace_collection.onExceptionRaiseExit(BaseException)
704
+
705
+ # None indicates no replacement action.
706
+ return None, None, None
707
+
708
+ @staticmethod
709
+ def onContentEscapes(trace_collection):
710
+ pass
711
+
712
+ @staticmethod
713
+ def onContentIteratedEscapes(trace_collection):
714
+ pass
715
+
716
+ @staticmethod
717
+ def mayRaiseExceptionBool(exception_type):
718
+ """Unless we are told otherwise, everything may raise being checked."""
719
+ # Virtual method, pylint: disable=unused-argument
720
+ return True
721
+
722
+ @staticmethod
723
+ def mayRaiseExceptionAbs(exception_type):
724
+ """Unless we are told otherwise, everything may raise in 'abs'."""
725
+ # Virtual method, pylint: disable=unused-argument
726
+
727
+ return True
728
+
729
+ @staticmethod
730
+ def mayRaiseExceptionInt(exception_type):
731
+ """Unless we are told otherwise, everything may raise in __int__."""
732
+ # Virtual method, pylint: disable=unused-argument
733
+
734
+ return True
735
+
736
+ @staticmethod
737
+ def mayRaiseExceptionLong(exception_type):
738
+ """Unless we are told otherwise, everything may raise in __long__."""
739
+ # Virtual method, pylint: disable=unused-argument
740
+
741
+ return True
742
+
743
+ @staticmethod
744
+ def mayRaiseExceptionFloat(exception_type):
745
+ """Unless we are told otherwise, everything may raise in __float__."""
746
+ # Virtual method, pylint: disable=unused-argument
747
+
748
+ return True
749
+
750
+ @staticmethod
751
+ def mayRaiseExceptionBytes(exception_type):
752
+ """Unless we are told otherwise, everything may raise in __bytes__."""
753
+ # Virtual method, pylint: disable=unused-argument
754
+
755
+ return True
756
+
757
+ @staticmethod
758
+ def mayRaiseExceptionIn(exception_type, checked_value):
759
+ """Unless we are told otherwise, everything may raise being iterated."""
760
+ # Virtual method, pylint: disable=unused-argument
761
+
762
+ return True
763
+
764
+ @staticmethod
765
+ def mayRaiseExceptionAttributeLookup(exception_type, attribute_name):
766
+ """Unless we are told otherwise, everything may raise for attribute access."""
767
+ # Virtual method, pylint: disable=unused-argument
768
+
769
+ return True
770
+
771
+ @staticmethod
772
+ def mayRaiseExceptionAttributeLookupSpecial(exception_type, attribute_name):
773
+ """Unless we are told otherwise, everything may raise for attribute access."""
774
+ # Virtual method, pylint: disable=unused-argument
775
+
776
+ return True
777
+
778
+ @staticmethod
779
+ def mayRaiseExceptionAttributeLookupObject(exception_type, attribute):
780
+ """Unless we are told otherwise, everything may raise for attribute access."""
781
+ # Virtual method, pylint: disable=unused-argument
782
+
783
+ return True
784
+
785
+ @staticmethod
786
+ def mayRaiseExceptionImportName(exception_type, import_name):
787
+ """Unless we are told otherwise, everything may raise for name import."""
788
+ # Virtual method, pylint: disable=unused-argument
789
+ return True
790
+
791
+ @staticmethod
792
+ def mayHaveSideEffectsBool():
793
+ """Unless we are told otherwise, everything may have a side effect for bool check."""
794
+
795
+ return True
796
+
797
+ @staticmethod
798
+ def mayHaveSideEffectsAbs():
799
+ """Unless we are told otherwise, everything may have a side effect for abs check."""
800
+
801
+ # TODO: Bonus points for check type shapes that will be good
802
+ # for abs, i.e. number shapes like Int, Long, Float, Complex.
803
+
804
+ return True
805
+
806
+ def mayHaveSideEffectsNext(self):
807
+ """The type shape tells us, if "next" may execute code."""
808
+
809
+ return self.getTypeShape().hasShapeSlotNextCode()
810
+
811
+ def hasShapeSlotLen(self):
812
+ """The type shape tells us, if "len" is available."""
813
+ return self.getTypeShape().hasShapeSlotLen()
814
+
815
+ def hasShapeSlotIter(self):
816
+ """The type shape tells us, if "iter" is available."""
817
+ return self.getTypeShape().hasShapeSlotIter()
818
+
819
+ def hasShapeSlotNext(self):
820
+ """The type shape tells us, if "next" is available."""
821
+ return self.getTypeShape().hasShapeSlotNext()
822
+
823
+ # TODO: Maybe this is a shape slot thing.
824
+ @staticmethod
825
+ def isIndexable():
826
+ """Unless we are told otherwise, it's not indexable."""
827
+
828
+ return False
829
+
830
+ # TODO: There ought to be a type shape check for that too.
831
+ @staticmethod
832
+ def getIntegerValue():
833
+ """Node as integer value, if possible."""
834
+
835
+ return None
836
+
837
+ # TODO: There ought to be a type shape check for that too.
838
+ @staticmethod
839
+ def getIndexValue():
840
+ """Node as index value, if possible.
841
+
842
+ This should only work for int, bool, and long values, but e.g. not floats.
843
+ """
844
+
845
+ return None
846
+
847
+ @staticmethod
848
+ def getIntValue():
849
+ """Value that "int" or "PyNumber_Int" (sp) would give, if known.
850
+
851
+ Otherwise it is "None" to indicate unknown. Users must not
852
+ forget to take side effects into account, when replacing a
853
+ node with its string value.
854
+ """
855
+ return None
856
+
857
+ def getExpressionDictInConstant(self, value):
858
+ """Value that the dict "in" operation would give, if known.
859
+
860
+ This is only called for values with known dict type shape. And those
861
+ nodes who are known to do it, have to overload it.
862
+ """
863
+
864
+ # Virtual method, pylint: disable=unused-argument
865
+
866
+ # We want to have them all overloaded, so lets report cases where that
867
+ # has not been happening.
868
+ if Options.is_debug:
869
+ onMissingOverload(method_name="getExpressionDictInConstant", node=self)
870
+
871
+ return None
872
+
873
+ def hasShapeTrustedAttributes(self):
874
+ return self.getTypeShape().hasShapeTrustedAttributes()
875
+
876
+ def hasShapeTypeExact(self):
877
+ """Does a node have exactly a 'type' shape."""
878
+
879
+ return self.getTypeShape() is tshape_type
880
+
881
+ def hasShapeListExact(self):
882
+ """Does a node have exactly a list shape."""
883
+
884
+ return self.getTypeShape() is tshape_list
885
+
886
+ def hasShapeDictionaryExact(self):
887
+ """Does a node have exactly a dictionary shape."""
888
+
889
+ return self.getTypeShape() is tshape_dict
890
+
891
+ def hasShapeStrExact(self):
892
+ """Does an expression have exactly a string shape."""
893
+ return self.getTypeShape() is tshape_str
894
+
895
+ def hasShapeUnicodeExact(self):
896
+ """Does an expression have exactly a unicode shape."""
897
+ return self.getTypeShape() is tshape_unicode
898
+
899
+ if str is bytes:
900
+
901
+ def hasShapeStrOrUnicodeExact(self):
902
+ return self.getTypeShape() in (tshape_str, tshape_unicode)
903
+
904
+ else:
905
+
906
+ def hasShapeStrOrUnicodeExact(self):
907
+ return self.getTypeShape() is tshape_str
908
+
909
+ def hasShapeBytesExact(self):
910
+ """Does an expression have exactly a bytes shape."""
911
+ return self.getTypeShape() is tshape_bytes
912
+
913
+ def hasShapeBoolExact(self):
914
+ """Does an expression have exactly a bool shape."""
915
+ return self.getTypeShape() is tshape_bool
916
+
917
+ @staticmethod
918
+ def hasVeryTrustedValue():
919
+ """Trust that value will not be overwritten from the outside."""
920
+ return False
921
+
922
+
923
+ class ExpressionNoSideEffectsMixin(object):
924
+ __slots__ = ()
925
+
926
+ @staticmethod
927
+ def mayHaveSideEffects():
928
+ # Virtual method overload
929
+ return False
930
+
931
+ @staticmethod
932
+ def extractSideEffects():
933
+ # Virtual method overload, we said we have no effects.
934
+ return ()
935
+
936
+ def computeExpressionDrop(self, statement, trace_collection):
937
+ # Virtual method overload, pylint: disable=unused-argument
938
+ #
939
+ # We said we have no effects, so we can be removed.
940
+ return (
941
+ None,
942
+ "new_statements",
943
+ lambda: "Removed %s that never has an effect." % self.getDescription(),
944
+ )
945
+
946
+ @staticmethod
947
+ def mayRaiseException(exception_type):
948
+ # Virtual method overload, pylint: disable=unused-argument
949
+
950
+ # An exception would be considered a side effect too.
951
+ return False
952
+
953
+
954
+ class CompileTimeConstantExpressionBase(ExpressionNoSideEffectsMixin, ExpressionBase):
955
+ # TODO: Do this for all computations, do this in the base class of all
956
+ # nodes.
957
+ __slots__ = ("computed_attribute",)
958
+
959
+ def __init__(self, source_ref):
960
+ ExpressionBase.__init__(self, source_ref)
961
+
962
+ self.computed_attribute = None
963
+
964
+ @staticmethod
965
+ def isCompileTimeConstant():
966
+ """Has a value that we can use at compile time.
967
+
968
+ Yes or no. If it has such a value, simulations can be applied at
969
+ compile time and e.g. operations or conditions, or even calls may
970
+ be executed against it.
971
+ """
972
+ return True
973
+
974
+ def getTruthValue(self):
975
+ return bool(self.getCompileTimeConstant())
976
+
977
+ def getComparisonValue(self):
978
+ return True, self.getCompileTimeConstant()
979
+
980
+ @abstractmethod
981
+ def getCompileTimeConstant(self):
982
+ """Return compile time constant.
983
+
984
+ Notes: Only available after passing "isCompileTimeConstant()".
985
+
986
+ """
987
+
988
+ @staticmethod
989
+ def isMutable():
990
+ """Return if compile time constant is mutable.
991
+
992
+ Notes: Only useful after passing "isCompileTimeConstant()".
993
+ """
994
+ return False
995
+
996
+ @staticmethod
997
+ def hasShapeTrustedAttributes():
998
+ # All compile time constants must be fixed for attributes.
999
+ return True
1000
+
1001
+ @staticmethod
1002
+ def mayHaveSideEffectsBool():
1003
+ # Virtual method overload
1004
+ return False
1005
+
1006
+ @staticmethod
1007
+ def mayRaiseExceptionBool(exception_type):
1008
+ return False
1009
+
1010
+ def mayRaiseExceptionAttributeLookup(self, exception_type, attribute_name):
1011
+ # We remember it from our computation.
1012
+ return not self.computed_attribute
1013
+
1014
+ def mayRaiseExceptionAttributeLookupSpecial(self, exception_type, attribute_name):
1015
+ # We remember it from our computation.
1016
+ return not self.computed_attribute
1017
+
1018
+ def computeExpressionOperationNot(self, not_node, trace_collection):
1019
+ return trace_collection.getCompileTimeComputationResult(
1020
+ node=not_node,
1021
+ computation=lambda: not self.getCompileTimeConstant(),
1022
+ description="""\
1023
+ Compile time constant negation truth value pre-computed.""",
1024
+ )
1025
+
1026
+ def computeExpressionOperationRepr(self, repr_node, trace_collection):
1027
+ return (
1028
+ trace_collection.getCompileTimeComputationResult(
1029
+ node=repr_node,
1030
+ computation=lambda: repr(self.getCompileTimeConstant()),
1031
+ description="""\
1032
+ Compile time constant repr value pre-computed.""",
1033
+ ),
1034
+ None,
1035
+ )
1036
+
1037
+ def computeExpressionLen(self, len_node, trace_collection):
1038
+ return trace_collection.getCompileTimeComputationResult(
1039
+ node=len_node,
1040
+ computation=lambda: len(self.getCompileTimeConstant()),
1041
+ description="""\
1042
+ Compile time constant len value pre-computed.""",
1043
+ )
1044
+
1045
+ def computeExpressionAbs(self, abs_node, trace_collection):
1046
+ return trace_collection.getCompileTimeComputationResult(
1047
+ node=abs_node,
1048
+ computation=lambda: abs(self.getCompileTimeConstant()),
1049
+ description="""\
1050
+ Compile time constant abs value pre-computed.""",
1051
+ )
1052
+
1053
+ def computeExpressionInt(self, int_node, trace_collection):
1054
+ return trace_collection.getCompileTimeComputationResult(
1055
+ node=int_node,
1056
+ computation=lambda: int(self.getCompileTimeConstant()),
1057
+ description="""\
1058
+ Compile time constant int value pre-computed.""",
1059
+ )
1060
+
1061
+ def computeExpressionLong(self, long_node, trace_collection):
1062
+ return trace_collection.getCompileTimeComputationResult(
1063
+ node=long_node,
1064
+ computation=lambda: long(self.getCompileTimeConstant()),
1065
+ description="""\
1066
+ Compile time constant long value pre-computed.""",
1067
+ )
1068
+
1069
+ def computeExpressionFloat(self, float_node, trace_collection):
1070
+ return trace_collection.getCompileTimeComputationResult(
1071
+ node=float_node,
1072
+ computation=lambda: float(self.getCompileTimeConstant()),
1073
+ description="""\
1074
+ Compile time constant float value pre-computed.""",
1075
+ )
1076
+
1077
+ def computeExpressionBytes(self, bytes_node, trace_collection):
1078
+ constant_value = self.getCompileTimeConstant()
1079
+
1080
+ if type(constant_value) in (int, long):
1081
+ if constant_value > 1000:
1082
+ return bytes_node, None, None
1083
+
1084
+ return trace_collection.getCompileTimeComputationResult(
1085
+ node=bytes_node,
1086
+ computation=lambda: bytes(constant_value),
1087
+ description="""\
1088
+ Compile time constant bytes value pre-computed.""",
1089
+ )
1090
+
1091
+ def isKnownToHaveAttribute(self, attribute_name):
1092
+ if self.computed_attribute is None:
1093
+ self.computed_attribute = hasattr(
1094
+ self.getCompileTimeConstant(), attribute_name
1095
+ )
1096
+
1097
+ return self.computed_attribute
1098
+
1099
+ def getKnownAttributeValue(self, attribute_name):
1100
+ return getattr(self.getCompileTimeConstant(), attribute_name)
1101
+
1102
+ def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
1103
+ value = self.getCompileTimeConstant()
1104
+
1105
+ if self.computed_attribute is None:
1106
+ self.computed_attribute = hasattr(value, attribute_name)
1107
+
1108
+ # If it raises, or the attribute itself is a compile time constant,
1109
+ # then do execute it.
1110
+ if not self.computed_attribute or isCompileTimeConstantValue(
1111
+ getattr(value, attribute_name, None)
1112
+ ):
1113
+ return trace_collection.getCompileTimeComputationResult(
1114
+ node=lookup_node,
1115
+ computation=lambda: getattr(value, attribute_name),
1116
+ description="Attribute '%s' pre-computed." % (attribute_name),
1117
+ )
1118
+
1119
+ return lookup_node, None, None
1120
+
1121
+ def computeExpressionSubscript(self, lookup_node, subscript, trace_collection):
1122
+ if subscript.isCompileTimeConstant():
1123
+ return trace_collection.getCompileTimeComputationResult(
1124
+ node=lookup_node,
1125
+ computation=lambda: self.getCompileTimeConstant()[
1126
+ subscript.getCompileTimeConstant()
1127
+ ],
1128
+ description="Subscript of constant with constant value.",
1129
+ )
1130
+
1131
+ # TODO: Look-up of subscript to index may happen.
1132
+ # Any code could be run due to that, note that.
1133
+ trace_collection.onControlFlowEscape(self)
1134
+
1135
+ trace_collection.onExceptionRaiseExit(BaseException)
1136
+
1137
+ return lookup_node, None, None
1138
+
1139
+ def computeExpressionSlice(self, lookup_node, lower, upper, trace_collection):
1140
+ # TODO: Could be happy with predictable index values and not require
1141
+ # constants.
1142
+ if lower is not None:
1143
+ if upper is not None:
1144
+ if lower.isCompileTimeConstant() and upper.isCompileTimeConstant():
1145
+ return trace_collection.getCompileTimeComputationResult(
1146
+ node=lookup_node,
1147
+ computation=lambda: self.getCompileTimeConstant()[
1148
+ lower.getCompileTimeConstant() : upper.getCompileTimeConstant()
1149
+ ],
1150
+ description="Slicing of constant with constant indexes.",
1151
+ user_provided=False,
1152
+ )
1153
+ else:
1154
+ if lower.isCompileTimeConstant():
1155
+ return trace_collection.getCompileTimeComputationResult(
1156
+ node=lookup_node,
1157
+ computation=lambda: self.getCompileTimeConstant()[
1158
+ lower.getCompileTimeConstant() :
1159
+ ],
1160
+ description="Slicing of constant with constant lower index only.",
1161
+ user_provided=False,
1162
+ )
1163
+ else:
1164
+ if upper is not None:
1165
+ if upper.isCompileTimeConstant():
1166
+ return trace_collection.getCompileTimeComputationResult(
1167
+ node=lookup_node,
1168
+ computation=lambda: self.getCompileTimeConstant()[
1169
+ : upper.getCompileTimeConstant()
1170
+ ],
1171
+ description="Slicing of constant with constant upper index only.",
1172
+ user_provided=False,
1173
+ )
1174
+ else:
1175
+ return trace_collection.getCompileTimeComputationResult(
1176
+ node=lookup_node,
1177
+ computation=lambda: self.getCompileTimeConstant()[:],
1178
+ description="Slicing of constant with no indexes.",
1179
+ user_provided=False,
1180
+ )
1181
+
1182
+ # Any exception might be raised, although it's not likely.
1183
+ trace_collection.onExceptionRaiseExit(BaseException)
1184
+
1185
+ return lookup_node, None, None
1186
+
1187
+ def computeExpressionComparisonIn(self, in_node, value_node, trace_collection):
1188
+ if value_node.isCompileTimeConstant():
1189
+ return trace_collection.getCompileTimeComputationResult(
1190
+ node=in_node,
1191
+ computation=lambda: in_node.getSimulator()(
1192
+ value_node.getCompileTimeConstant(), self.getCompileTimeConstant()
1193
+ ),
1194
+ description="""\
1195
+ Predicted '%s' on compiled time constant values."""
1196
+ % in_node.comparator,
1197
+ user_provided=False,
1198
+ )
1199
+
1200
+ # Look-up of __contains__ on compile time constants does mostly nothing.
1201
+ trace_collection.onExceptionRaiseExit(BaseException)
1202
+
1203
+ return in_node, None, None
1204
+
1205
+ def computeExpressionBool(self, trace_collection):
1206
+ constant = self.getCompileTimeConstant()
1207
+
1208
+ # Dealt with through dedicated nodes.
1209
+ assert type(constant) is not bool
1210
+ truth_value = bool(constant)
1211
+
1212
+ result = makeConstantReplacementNode(
1213
+ constant=truth_value, node=self, user_provided=False
1214
+ )
1215
+
1216
+ return truth_value, result, "Predicted compile time constant truth value."
1217
+
1218
+
1219
+ class ExpressionSpecBasedComputationMixin(object):
1220
+ # Mixins are not allowed to specify slots.
1221
+ __slots__ = ()
1222
+
1223
+ builtin_spec = None
1224
+
1225
+ def computeBuiltinSpec(self, trace_collection, given_values):
1226
+ assert self.builtin_spec is not None, self
1227
+
1228
+ if not self.builtin_spec.isCompileTimeComputable(given_values):
1229
+ trace_collection.onExceptionRaiseExit(BaseException)
1230
+
1231
+ return self, None, None
1232
+
1233
+ return trace_collection.getCompileTimeComputationResult(
1234
+ node=self,
1235
+ computation=lambda: self.builtin_spec.simulateCall(given_values),
1236
+ description="Built-in call to '%s' pre-computed."
1237
+ % (self.builtin_spec.getName()),
1238
+ user_provided=self.builtin_spec.isUserProvided(given_values),
1239
+ )
1240
+
1241
+
1242
+ class ExpressionSpecBasedComputationNoRaiseMixin(object):
1243
+ # Mixins are not allowed to specify slots.
1244
+ __slots__ = ()
1245
+
1246
+ builtin_spec = None
1247
+
1248
+ def computeBuiltinSpec(self, trace_collection, given_values):
1249
+ assert self.builtin_spec is not None, self
1250
+
1251
+ if not self.builtin_spec.isCompileTimeComputable(given_values):
1252
+ return self, None, None
1253
+
1254
+ return trace_collection.getCompileTimeComputationResult(
1255
+ node=self,
1256
+ computation=lambda: self.builtin_spec.simulateCall(given_values),
1257
+ description="Built-in call to '%s' pre-computed."
1258
+ % (self.builtin_spec.getName()),
1259
+ )
1260
+
1261
+
1262
+ class ExpressionBuiltinSingleArgBase(
1263
+ ExpressionSpecBasedComputationMixin, ChildHavingValueMixin, ExpressionBase
1264
+ ):
1265
+ named_children = ("value",)
1266
+
1267
+ def __init__(self, value, source_ref):
1268
+ ChildHavingValueMixin.__init__(self, value=value)
1269
+
1270
+ ExpressionBase.__init__(self, source_ref)
1271
+
1272
+ def computeExpression(self, trace_collection):
1273
+ value = self.subnode_value
1274
+
1275
+ # TODO: Can this happen, where, and can we have a different base class then.
1276
+ assert value is not None
1277
+
1278
+ if value is None:
1279
+ return self.computeBuiltinSpec(
1280
+ trace_collection=trace_collection, given_values=()
1281
+ )
1282
+ else:
1283
+ return self.computeBuiltinSpec(
1284
+ trace_collection=trace_collection, given_values=(value,)
1285
+ )
1286
+
1287
+
1288
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1289
+ # integrates with CPython, but also works on its own.
1290
+ #
1291
+ # Licensed under the Apache License, Version 2.0 (the "License");
1292
+ # you may not use this file except in compliance with the License.
1293
+ # You may obtain a copy of the License at
1294
+ #
1295
+ # http://www.apache.org/licenses/LICENSE-2.0
1296
+ #
1297
+ # Unless required by applicable law or agreed to in writing, software
1298
+ # distributed under the License is distributed on an "AS IS" BASIS,
1299
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1300
+ # See the License for the specific language governing permissions and
1301
+ # limitations under the License.