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,2103 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ # We are not avoiding these in generated code at all
5
+ # pylint: disable=I0021,line-too-long,too-many-instance-attributes,too-many-lines
6
+ # pylint: disable=I0021,too-many-arguments,too-many-return-statements,too-many-statements
7
+
8
+
9
+ """Children having expression bases
10
+
11
+ WARNING, this code is GENERATED. Modify the template ChildrenHavingMixin.py.j2 instead!
12
+
13
+ spell-checker: ignore __prepare__ append args autograph capitalize casefold center chars
14
+ spell-checker: ignore clear copy count decode default delete dist distribution_name encode
15
+ spell-checker: ignore encoding end endswith errors exit_code expandtabs
16
+ spell-checker: ignore experimental_attributes experimental_autograph_options
17
+ spell-checker: ignore experimental_compile experimental_follow_type_hints
18
+ spell-checker: ignore experimental_implements experimental_relax_shapes extend fillchar
19
+ spell-checker: ignore find format format_map formatmap fromkeys func get group handle
20
+ spell-checker: ignore has_key haskey index input_signature insert isalnum isalpha isascii
21
+ spell-checker: ignore isdecimal isdigit isidentifier islower isnumeric isprintable isspace
22
+ spell-checker: ignore istitle isupper item items iterable iteritems iterkeys itervalues
23
+ spell-checker: ignore jit_compile join keepends key keys kwargs ljust lower lstrip
24
+ spell-checker: ignore maketrans maxsplit mode name new old p package
25
+ spell-checker: ignore package_or_requirement pairs partition path pop popitem prefix
26
+ spell-checker: ignore prepare reduce_retracing remove replace resource resource_name
27
+ spell-checker: ignore reverse rfind rindex rjust rpartition rsplit rstrip s sep setdefault
28
+ spell-checker: ignore sort split splitlines start startswith stop strip sub suffix
29
+ spell-checker: ignore swapcase table tabsize title translate update upper use_errno
30
+ spell-checker: ignore use_last_error value values viewitems viewkeys viewvalues width
31
+ spell-checker: ignore winmode zfill
32
+ """
33
+
34
+
35
+ # Loop unrolling over child names, pylint: disable=too-many-branches
36
+
37
+ from abc import abstractmethod
38
+
39
+ from .ExpressionBases import ExpressionBase
40
+ from .NodeMakingHelpers import wrapExpressionWithSideEffects
41
+
42
+
43
+ class NoChildHavingFinalNoRaiseMixin(ExpressionBase):
44
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
45
+ __slots__ = ()
46
+
47
+ # This is generated for use in
48
+ # ExpressionImportlibMetadataBackportEntryPointValueRef
49
+ # ExpressionImportlibMetadataEntryPointValueRef
50
+
51
+ def finalize(self):
52
+ del self.parent
53
+
54
+ def computeExpressionRaw(self, trace_collection):
55
+ """Compute an expression.
56
+
57
+ Default behavior is to just visit the child expressions first, and
58
+ then the node "computeExpression". For a few cases this needs to
59
+ be overloaded, e.g. conditional expressions.
60
+ """
61
+
62
+ return self, None, None
63
+
64
+ @staticmethod
65
+ def mayRaiseExceptionOperation():
66
+ return False
67
+
68
+ @staticmethod
69
+ def mayRaiseException(exception_type):
70
+ return False
71
+
72
+ def collectVariableAccesses(self, emit_read, emit_write):
73
+ """Collect variable reads and writes of child nodes."""
74
+
75
+
76
+ # Assign the names that are easier to import with a stable name.
77
+ ExpressionImportlibMetadataBackportEntryPointValueRefBase = (
78
+ NoChildHavingFinalNoRaiseMixin
79
+ )
80
+ ExpressionImportlibMetadataEntryPointValueRefBase = NoChildHavingFinalNoRaiseMixin
81
+
82
+
83
+ class NoChildHavingFinalNoRaiseNameMixin(ExpressionBase):
84
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
85
+ __slots__ = ()
86
+
87
+ # This is generated for use in
88
+ # ExpressionTypeVariable
89
+
90
+ def __init__(self, name, source_ref):
91
+ self.name = name
92
+
93
+ ExpressionBase.__init__(self, source_ref)
94
+
95
+ def getDetails(self):
96
+ return {
97
+ "name": self.name,
98
+ }
99
+
100
+ def getVisitableNodes(self):
101
+ """The visitable nodes, with tuple values flattened."""
102
+
103
+ return ()
104
+
105
+ def getVisitableNodesNamed(self):
106
+ """Named children dictionary.
107
+
108
+ For use in cloning nodes, debugging and XML output.
109
+ """
110
+
111
+ return ()
112
+
113
+ def replaceChild(self, old_node, new_node):
114
+ raise AssertionError("Didn't find child", old_node, "in", self)
115
+
116
+ def getCloneArgs(self):
117
+ """Get clones of all children to pass for a new node.
118
+
119
+ Needs to make clones of child nodes too.
120
+ """
121
+
122
+ values = {}
123
+
124
+ values.update(self.getDetails())
125
+
126
+ return values
127
+
128
+ def finalize(self):
129
+ del self.parent
130
+
131
+ def computeExpressionRaw(self, trace_collection):
132
+ """Compute an expression.
133
+
134
+ Default behavior is to just visit the child expressions first, and
135
+ then the node "computeExpression". For a few cases this needs to
136
+ be overloaded, e.g. conditional expressions.
137
+ """
138
+
139
+ return self, None, None
140
+
141
+ @staticmethod
142
+ def mayRaiseExceptionOperation():
143
+ return False
144
+
145
+ @staticmethod
146
+ def mayRaiseException(exception_type):
147
+ return False
148
+
149
+ def collectVariableAccesses(self, emit_read, emit_write):
150
+ """Collect variable reads and writes of child nodes."""
151
+
152
+
153
+ # Assign the names that are easier to import with a stable name.
154
+ ExpressionTypeVariableBase = NoChildHavingFinalNoRaiseNameMixin
155
+
156
+
157
+ class ChildHavingArgsTupleFinalNoRaiseMixin(ExpressionBase):
158
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
159
+ __slots__ = ()
160
+
161
+ # This is generated for use in
162
+ # ExpressionBuiltinMakeException
163
+
164
+ def __init__(self, args, source_ref):
165
+ assert type(args) is tuple
166
+
167
+ for val in args:
168
+ val.parent = self
169
+
170
+ self.subnode_args = args
171
+
172
+ ExpressionBase.__init__(self, source_ref)
173
+
174
+ def getVisitableNodes(self):
175
+ """The visitable nodes, with tuple values flattened."""
176
+
177
+ return self.subnode_args
178
+
179
+ def getVisitableNodesNamed(self):
180
+ """Named children dictionary.
181
+
182
+ For use in cloning nodes, debugging and XML output.
183
+ """
184
+
185
+ return (("args", self.subnode_args),)
186
+
187
+ def replaceChild(self, old_node, new_node):
188
+ value = self.subnode_args
189
+ if old_node in value:
190
+ if new_node is not None:
191
+ new_node.parent = self
192
+
193
+ self.subnode_args = tuple(
194
+ (val if val is not old_node else new_node) for val in value
195
+ )
196
+ else:
197
+ self.subnode_args = tuple(val for val in value if val is not old_node)
198
+
199
+ return
200
+
201
+ raise AssertionError("Didn't find child", old_node, "in", self)
202
+
203
+ def getCloneArgs(self):
204
+ """Get clones of all children to pass for a new node.
205
+
206
+ Needs to make clones of child nodes too.
207
+ """
208
+
209
+ values = {
210
+ "args": tuple(v.makeClone() for v in self.subnode_args),
211
+ }
212
+
213
+ values.update(self.getDetails())
214
+
215
+ return values
216
+
217
+ def finalize(self):
218
+ del self.parent
219
+
220
+ for c in self.subnode_args:
221
+ c.finalize()
222
+ del self.subnode_args
223
+
224
+ def computeExpressionRaw(self, trace_collection):
225
+ """Compute an expression.
226
+
227
+ Default behavior is to just visit the child expressions first, and
228
+ then the node "computeExpression". For a few cases this needs to
229
+ be overloaded, e.g. conditional expressions.
230
+ """
231
+
232
+ # First apply the sub-expressions, as they are evaluated before
233
+ # the actual operation.
234
+ old_subnode_args = self.subnode_args
235
+
236
+ for sub_expression in old_subnode_args:
237
+ expression = trace_collection.onExpression(sub_expression)
238
+
239
+ if expression.willRaiseAnyException():
240
+ wrapped_expression = wrapExpressionWithSideEffects(
241
+ side_effects=self.subnode_args[
242
+ : old_subnode_args.index(sub_expression)
243
+ ],
244
+ old_node=sub_expression,
245
+ new_node=expression,
246
+ )
247
+
248
+ return (
249
+ wrapped_expression,
250
+ "new_raise",
251
+ lambda: "For '%s' the child expression '%s' will raise."
252
+ % (self.getChildNameNice(), expression.getChildNameNice()),
253
+ )
254
+
255
+ return self, None, None
256
+
257
+ @staticmethod
258
+ def mayRaiseExceptionOperation():
259
+ return False
260
+
261
+ def mayRaiseException(self, exception_type):
262
+ return any(
263
+ value.mayRaiseException(exception_type) for value in self.subnode_args
264
+ )
265
+
266
+ def collectVariableAccesses(self, emit_read, emit_write):
267
+ """Collect variable reads and writes of child nodes."""
268
+
269
+ for element in self.subnode_args:
270
+ element.collectVariableAccesses(emit_read, emit_write)
271
+
272
+
273
+ # Assign the names that are easier to import with a stable name.
274
+ ExpressionBuiltinMakeExceptionBase = ChildHavingArgsTupleFinalNoRaiseMixin
275
+
276
+
277
+ class ChildrenHavingArgsTupleNameOptionalObjOptionalFinalNoRaiseForRaiseMixin(
278
+ ExpressionBase
279
+ ):
280
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
281
+ __slots__ = ()
282
+
283
+ # This is generated for use in
284
+ # ExpressionBuiltinMakeExceptionAttributeError
285
+
286
+ def __init__(self, args, name, obj, for_raise, source_ref):
287
+ assert type(args) is tuple
288
+
289
+ for val in args:
290
+ val.parent = self
291
+
292
+ self.subnode_args = args
293
+
294
+ if name is not None:
295
+ name.parent = self
296
+
297
+ self.subnode_name = name
298
+
299
+ if obj is not None:
300
+ obj.parent = self
301
+
302
+ self.subnode_obj = obj
303
+
304
+ self.for_raise = for_raise
305
+
306
+ ExpressionBase.__init__(self, source_ref)
307
+
308
+ def getDetails(self):
309
+ return {
310
+ "for_raise": self.for_raise,
311
+ }
312
+
313
+ def getVisitableNodes(self):
314
+ """The visitable nodes, with tuple values flattened."""
315
+
316
+ result = []
317
+ result.extend(self.subnode_args)
318
+ value = self.subnode_name
319
+ if value is None:
320
+ pass
321
+ else:
322
+ result.append(value)
323
+ value = self.subnode_obj
324
+ if value is None:
325
+ pass
326
+ else:
327
+ result.append(value)
328
+ return tuple(result)
329
+
330
+ def getVisitableNodesNamed(self):
331
+ """Named children dictionary.
332
+
333
+ For use in cloning nodes, debugging and XML output.
334
+ """
335
+
336
+ return (
337
+ ("args", self.subnode_args),
338
+ ("name", self.subnode_name),
339
+ ("obj", self.subnode_obj),
340
+ )
341
+
342
+ def replaceChild(self, old_node, new_node):
343
+ value = self.subnode_args
344
+ if old_node in value:
345
+ if new_node is not None:
346
+ new_node.parent = self
347
+
348
+ self.subnode_args = tuple(
349
+ (val if val is not old_node else new_node) for val in value
350
+ )
351
+ else:
352
+ self.subnode_args = tuple(val for val in value if val is not old_node)
353
+
354
+ return
355
+
356
+ value = self.subnode_name
357
+ if old_node is value:
358
+ if new_node is not None:
359
+ new_node.parent = self
360
+
361
+ self.subnode_name = new_node
362
+
363
+ return
364
+
365
+ value = self.subnode_obj
366
+ if old_node is value:
367
+ if new_node is not None:
368
+ new_node.parent = self
369
+
370
+ self.subnode_obj = new_node
371
+
372
+ return
373
+
374
+ raise AssertionError("Didn't find child", old_node, "in", self)
375
+
376
+ def getCloneArgs(self):
377
+ """Get clones of all children to pass for a new node.
378
+
379
+ Needs to make clones of child nodes too.
380
+ """
381
+
382
+ values = {
383
+ "args": tuple(v.makeClone() for v in self.subnode_args),
384
+ "name": (
385
+ self.subnode_name.makeClone() if self.subnode_name is not None else None
386
+ ),
387
+ "obj": (
388
+ self.subnode_obj.makeClone() if self.subnode_obj is not None else None
389
+ ),
390
+ }
391
+
392
+ values.update(self.getDetails())
393
+
394
+ return values
395
+
396
+ def finalize(self):
397
+ del self.parent
398
+
399
+ for c in self.subnode_args:
400
+ c.finalize()
401
+ del self.subnode_args
402
+ if self.subnode_name is not None:
403
+ self.subnode_name.finalize()
404
+ del self.subnode_name
405
+ if self.subnode_obj is not None:
406
+ self.subnode_obj.finalize()
407
+ del self.subnode_obj
408
+
409
+ def computeExpressionRaw(self, trace_collection):
410
+ """Compute an expression.
411
+
412
+ Default behavior is to just visit the child expressions first, and
413
+ then the node "computeExpression". For a few cases this needs to
414
+ be overloaded, e.g. conditional expressions.
415
+ """
416
+
417
+ # First apply the sub-expressions, as they are evaluated before
418
+ # the actual operation.
419
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
420
+ expression = trace_collection.onExpression(sub_expression)
421
+
422
+ if expression.willRaiseAnyException():
423
+ sub_expressions = self.getVisitableNodes()
424
+
425
+ wrapped_expression = wrapExpressionWithSideEffects(
426
+ side_effects=sub_expressions[:count],
427
+ old_node=sub_expression,
428
+ new_node=expression,
429
+ )
430
+
431
+ return (
432
+ wrapped_expression,
433
+ "new_raise",
434
+ lambda: "For '%s' the child expression '%s' will raise."
435
+ % (self.getChildNameNice(), expression.getChildNameNice()),
436
+ )
437
+
438
+ return self, None, None
439
+
440
+ @staticmethod
441
+ def mayRaiseExceptionOperation():
442
+ return False
443
+
444
+ def mayRaiseException(self, exception_type):
445
+ return (
446
+ any(value.mayRaiseException(exception_type) for value in self.subnode_args)
447
+ or (
448
+ self.subnode_name is not None
449
+ and self.subnode_name.mayRaiseException(exception_type)
450
+ )
451
+ or (
452
+ self.subnode_obj is not None
453
+ and self.subnode_obj.mayRaiseException(exception_type)
454
+ )
455
+ )
456
+
457
+ def collectVariableAccesses(self, emit_read, emit_write):
458
+ """Collect variable reads and writes of child nodes."""
459
+
460
+ for element in self.subnode_args:
461
+ element.collectVariableAccesses(emit_read, emit_write)
462
+ subnode_name = self.subnode_name
463
+
464
+ if subnode_name is not None:
465
+ self.subnode_name.collectVariableAccesses(emit_read, emit_write)
466
+ subnode_obj = self.subnode_obj
467
+
468
+ if subnode_obj is not None:
469
+ self.subnode_obj.collectVariableAccesses(emit_read, emit_write)
470
+
471
+
472
+ # Assign the names that are easier to import with a stable name.
473
+ ExpressionBuiltinMakeExceptionAttributeErrorBase = (
474
+ ChildrenHavingArgsTupleNameOptionalObjOptionalFinalNoRaiseForRaiseMixin
475
+ )
476
+
477
+
478
+ class ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin(
479
+ ExpressionBase
480
+ ):
481
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
482
+ __slots__ = ()
483
+
484
+ # This is generated for use in
485
+ # ExpressionBuiltinMakeExceptionImportError
486
+ # ExpressionBuiltinMakeExceptionModuleNotFoundError
487
+
488
+ def __init__(self, args, name, path, for_raise, source_ref):
489
+ assert type(args) is tuple
490
+
491
+ for val in args:
492
+ val.parent = self
493
+
494
+ self.subnode_args = args
495
+
496
+ if name is not None:
497
+ name.parent = self
498
+
499
+ self.subnode_name = name
500
+
501
+ if path is not None:
502
+ path.parent = self
503
+
504
+ self.subnode_path = path
505
+
506
+ self.for_raise = for_raise
507
+
508
+ ExpressionBase.__init__(self, source_ref)
509
+
510
+ def getDetails(self):
511
+ return {
512
+ "for_raise": self.for_raise,
513
+ }
514
+
515
+ def getVisitableNodes(self):
516
+ """The visitable nodes, with tuple values flattened."""
517
+
518
+ result = []
519
+ result.extend(self.subnode_args)
520
+ value = self.subnode_name
521
+ if value is None:
522
+ pass
523
+ else:
524
+ result.append(value)
525
+ value = self.subnode_path
526
+ if value is None:
527
+ pass
528
+ else:
529
+ result.append(value)
530
+ return tuple(result)
531
+
532
+ def getVisitableNodesNamed(self):
533
+ """Named children dictionary.
534
+
535
+ For use in cloning nodes, debugging and XML output.
536
+ """
537
+
538
+ return (
539
+ ("args", self.subnode_args),
540
+ ("name", self.subnode_name),
541
+ ("path", self.subnode_path),
542
+ )
543
+
544
+ def replaceChild(self, old_node, new_node):
545
+ value = self.subnode_args
546
+ if old_node in value:
547
+ if new_node is not None:
548
+ new_node.parent = self
549
+
550
+ self.subnode_args = tuple(
551
+ (val if val is not old_node else new_node) for val in value
552
+ )
553
+ else:
554
+ self.subnode_args = tuple(val for val in value if val is not old_node)
555
+
556
+ return
557
+
558
+ value = self.subnode_name
559
+ if old_node is value:
560
+ if new_node is not None:
561
+ new_node.parent = self
562
+
563
+ self.subnode_name = new_node
564
+
565
+ return
566
+
567
+ value = self.subnode_path
568
+ if old_node is value:
569
+ if new_node is not None:
570
+ new_node.parent = self
571
+
572
+ self.subnode_path = new_node
573
+
574
+ return
575
+
576
+ raise AssertionError("Didn't find child", old_node, "in", self)
577
+
578
+ def getCloneArgs(self):
579
+ """Get clones of all children to pass for a new node.
580
+
581
+ Needs to make clones of child nodes too.
582
+ """
583
+
584
+ values = {
585
+ "args": tuple(v.makeClone() for v in self.subnode_args),
586
+ "name": (
587
+ self.subnode_name.makeClone() if self.subnode_name is not None else None
588
+ ),
589
+ "path": (
590
+ self.subnode_path.makeClone() if self.subnode_path is not None else None
591
+ ),
592
+ }
593
+
594
+ values.update(self.getDetails())
595
+
596
+ return values
597
+
598
+ def finalize(self):
599
+ del self.parent
600
+
601
+ for c in self.subnode_args:
602
+ c.finalize()
603
+ del self.subnode_args
604
+ if self.subnode_name is not None:
605
+ self.subnode_name.finalize()
606
+ del self.subnode_name
607
+ if self.subnode_path is not None:
608
+ self.subnode_path.finalize()
609
+ del self.subnode_path
610
+
611
+ def computeExpressionRaw(self, trace_collection):
612
+ """Compute an expression.
613
+
614
+ Default behavior is to just visit the child expressions first, and
615
+ then the node "computeExpression". For a few cases this needs to
616
+ be overloaded, e.g. conditional expressions.
617
+ """
618
+
619
+ # First apply the sub-expressions, as they are evaluated before
620
+ # the actual operation.
621
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
622
+ expression = trace_collection.onExpression(sub_expression)
623
+
624
+ if expression.willRaiseAnyException():
625
+ sub_expressions = self.getVisitableNodes()
626
+
627
+ wrapped_expression = wrapExpressionWithSideEffects(
628
+ side_effects=sub_expressions[:count],
629
+ old_node=sub_expression,
630
+ new_node=expression,
631
+ )
632
+
633
+ return (
634
+ wrapped_expression,
635
+ "new_raise",
636
+ lambda: "For '%s' the child expression '%s' will raise."
637
+ % (self.getChildNameNice(), expression.getChildNameNice()),
638
+ )
639
+
640
+ return self, None, None
641
+
642
+ @staticmethod
643
+ def mayRaiseExceptionOperation():
644
+ return False
645
+
646
+ def mayRaiseException(self, exception_type):
647
+ return (
648
+ any(value.mayRaiseException(exception_type) for value in self.subnode_args)
649
+ or (
650
+ self.subnode_name is not None
651
+ and self.subnode_name.mayRaiseException(exception_type)
652
+ )
653
+ or (
654
+ self.subnode_path is not None
655
+ and self.subnode_path.mayRaiseException(exception_type)
656
+ )
657
+ )
658
+
659
+ def collectVariableAccesses(self, emit_read, emit_write):
660
+ """Collect variable reads and writes of child nodes."""
661
+
662
+ for element in self.subnode_args:
663
+ element.collectVariableAccesses(emit_read, emit_write)
664
+ subnode_name = self.subnode_name
665
+
666
+ if subnode_name is not None:
667
+ self.subnode_name.collectVariableAccesses(emit_read, emit_write)
668
+ subnode_path = self.subnode_path
669
+
670
+ if subnode_path is not None:
671
+ self.subnode_path.collectVariableAccesses(emit_read, emit_write)
672
+
673
+
674
+ # Assign the names that are easier to import with a stable name.
675
+ ExpressionBuiltinMakeExceptionImportErrorBase = (
676
+ ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin
677
+ )
678
+ ExpressionBuiltinMakeExceptionModuleNotFoundErrorBase = (
679
+ ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin
680
+ )
681
+
682
+
683
+ class ChildrenHavingCallableArgSentinelFinalMixin(ExpressionBase):
684
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
685
+ __slots__ = ()
686
+
687
+ # This is generated for use in
688
+ # ExpressionBuiltinIter2
689
+
690
+ def __init__(self, callable_arg, sentinel, source_ref):
691
+ callable_arg.parent = self
692
+
693
+ self.subnode_callable_arg = callable_arg
694
+
695
+ sentinel.parent = self
696
+
697
+ self.subnode_sentinel = sentinel
698
+
699
+ ExpressionBase.__init__(self, source_ref)
700
+
701
+ def getVisitableNodes(self):
702
+ """The visitable nodes, with tuple values flattened."""
703
+
704
+ return (
705
+ self.subnode_callable_arg,
706
+ self.subnode_sentinel,
707
+ )
708
+
709
+ def getVisitableNodesNamed(self):
710
+ """Named children dictionary.
711
+
712
+ For use in cloning nodes, debugging and XML output.
713
+ """
714
+
715
+ return (
716
+ ("callable_arg", self.subnode_callable_arg),
717
+ ("sentinel", self.subnode_sentinel),
718
+ )
719
+
720
+ def replaceChild(self, old_node, new_node):
721
+ value = self.subnode_callable_arg
722
+ if old_node is value:
723
+ new_node.parent = self
724
+
725
+ self.subnode_callable_arg = new_node
726
+
727
+ return
728
+
729
+ value = self.subnode_sentinel
730
+ if old_node is value:
731
+ new_node.parent = self
732
+
733
+ self.subnode_sentinel = new_node
734
+
735
+ return
736
+
737
+ raise AssertionError("Didn't find child", old_node, "in", self)
738
+
739
+ def getCloneArgs(self):
740
+ """Get clones of all children to pass for a new node.
741
+
742
+ Needs to make clones of child nodes too.
743
+ """
744
+
745
+ values = {
746
+ "callable_arg": self.subnode_callable_arg.makeClone(),
747
+ "sentinel": self.subnode_sentinel.makeClone(),
748
+ }
749
+
750
+ values.update(self.getDetails())
751
+
752
+ return values
753
+
754
+ def finalize(self):
755
+ del self.parent
756
+
757
+ self.subnode_callable_arg.finalize()
758
+ del self.subnode_callable_arg
759
+ self.subnode_sentinel.finalize()
760
+ del self.subnode_sentinel
761
+
762
+ def computeExpressionRaw(self, trace_collection):
763
+ """Compute an expression.
764
+
765
+ Default behavior is to just visit the child expressions first, and
766
+ then the node "computeExpression". For a few cases this needs to
767
+ be overloaded, e.g. conditional expressions.
768
+ """
769
+
770
+ # First apply the sub-expressions, as they are evaluated before
771
+ # the actual operation.
772
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
773
+ expression = trace_collection.onExpression(sub_expression)
774
+
775
+ if expression.willRaiseAnyException():
776
+ sub_expressions = self.getVisitableNodes()
777
+
778
+ wrapped_expression = wrapExpressionWithSideEffects(
779
+ side_effects=sub_expressions[:count],
780
+ old_node=sub_expression,
781
+ new_node=expression,
782
+ )
783
+
784
+ return (
785
+ wrapped_expression,
786
+ "new_raise",
787
+ lambda: "For '%s' the child expression '%s' will raise."
788
+ % (self.getChildNameNice(), expression.getChildNameNice()),
789
+ )
790
+
791
+ trace_collection.onExceptionRaiseExit(BaseException)
792
+ return self, None, None
793
+
794
+ def collectVariableAccesses(self, emit_read, emit_write):
795
+ """Collect variable reads and writes of child nodes."""
796
+
797
+ self.subnode_callable_arg.collectVariableAccesses(emit_read, emit_write)
798
+ self.subnode_sentinel.collectVariableAccesses(emit_read, emit_write)
799
+
800
+
801
+ # Assign the names that are easier to import with a stable name.
802
+ ExpressionBuiltinIter2Base = ChildrenHavingCallableArgSentinelFinalMixin
803
+
804
+
805
+ class ChildHavingDistributionNameFinalChildrenMixin(ExpressionBase):
806
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
807
+ __slots__ = ()
808
+
809
+ # This is generated for use in
810
+ # ExpressionImportlibMetadataBackportDistributionFailedCall
811
+ # ExpressionImportlibMetadataDistributionFailedCall
812
+
813
+ def __init__(self, distribution_name, source_ref):
814
+ distribution_name.parent = self
815
+
816
+ self.subnode_distribution_name = distribution_name
817
+
818
+ ExpressionBase.__init__(self, source_ref)
819
+
820
+ def getVisitableNodes(self):
821
+ """The visitable nodes, with tuple values flattened."""
822
+
823
+ return (self.subnode_distribution_name,)
824
+
825
+ def getVisitableNodesNamed(self):
826
+ """Named children dictionary.
827
+
828
+ For use in cloning nodes, debugging and XML output.
829
+ """
830
+
831
+ return (("distribution_name", self.subnode_distribution_name),)
832
+
833
+ def replaceChild(self, old_node, new_node):
834
+ value = self.subnode_distribution_name
835
+ if old_node is value:
836
+ new_node.parent = self
837
+
838
+ self.subnode_distribution_name = new_node
839
+
840
+ return
841
+
842
+ raise AssertionError("Didn't find child", old_node, "in", self)
843
+
844
+ def getCloneArgs(self):
845
+ """Get clones of all children to pass for a new node.
846
+
847
+ Needs to make clones of child nodes too.
848
+ """
849
+
850
+ values = {
851
+ "distribution_name": self.subnode_distribution_name.makeClone(),
852
+ }
853
+
854
+ values.update(self.getDetails())
855
+
856
+ return values
857
+
858
+ def finalize(self):
859
+ del self.parent
860
+
861
+ self.subnode_distribution_name.finalize()
862
+ del self.subnode_distribution_name
863
+
864
+ def computeExpressionRaw(self, trace_collection):
865
+ """Compute an expression.
866
+
867
+ Default behavior is to just visit the child expressions first, and
868
+ then the node "computeExpression". For a few cases this needs to
869
+ be overloaded, e.g. conditional expressions.
870
+ """
871
+
872
+ # Then ask ourselves to work on it.
873
+ return self.computeExpression(trace_collection)
874
+
875
+ @abstractmethod
876
+ def computeExpression(self, trace_collection):
877
+ """Must be overloaded for non-final node."""
878
+
879
+ def collectVariableAccesses(self, emit_read, emit_write):
880
+ """Collect variable reads and writes of child nodes."""
881
+
882
+ self.subnode_distribution_name.collectVariableAccesses(emit_read, emit_write)
883
+
884
+
885
+ # Assign the names that are easier to import with a stable name.
886
+ ExpressionImportlibMetadataBackportDistributionFailedCallBase = (
887
+ ChildHavingDistributionNameFinalChildrenMixin
888
+ )
889
+ ExpressionImportlibMetadataDistributionFailedCallBase = (
890
+ ChildHavingDistributionNameFinalChildrenMixin
891
+ )
892
+
893
+
894
+ class ChildHavingElementsTupleFinalNoRaiseMixin(ExpressionBase):
895
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
896
+ __slots__ = ()
897
+
898
+ # This is generated for use in
899
+ # ExpressionImportlibMetadataBackportEntryPointsValueRef
900
+ # ExpressionImportlibMetadataEntryPointsValueRef
901
+
902
+ def __init__(self, elements, source_ref):
903
+ assert type(elements) is tuple
904
+
905
+ for val in elements:
906
+ val.parent = self
907
+
908
+ self.subnode_elements = elements
909
+
910
+ ExpressionBase.__init__(self, source_ref)
911
+
912
+ def getVisitableNodes(self):
913
+ """The visitable nodes, with tuple values flattened."""
914
+
915
+ return self.subnode_elements
916
+
917
+ def getVisitableNodesNamed(self):
918
+ """Named children dictionary.
919
+
920
+ For use in cloning nodes, debugging and XML output.
921
+ """
922
+
923
+ return (("elements", self.subnode_elements),)
924
+
925
+ def replaceChild(self, old_node, new_node):
926
+ value = self.subnode_elements
927
+ if old_node in value:
928
+ if new_node is not None:
929
+ new_node.parent = self
930
+
931
+ self.subnode_elements = tuple(
932
+ (val if val is not old_node else new_node) for val in value
933
+ )
934
+ else:
935
+ self.subnode_elements = tuple(
936
+ val for val in value if val is not old_node
937
+ )
938
+
939
+ return
940
+
941
+ raise AssertionError("Didn't find child", old_node, "in", self)
942
+
943
+ def getCloneArgs(self):
944
+ """Get clones of all children to pass for a new node.
945
+
946
+ Needs to make clones of child nodes too.
947
+ """
948
+
949
+ values = {
950
+ "elements": tuple(v.makeClone() for v in self.subnode_elements),
951
+ }
952
+
953
+ values.update(self.getDetails())
954
+
955
+ return values
956
+
957
+ def finalize(self):
958
+ del self.parent
959
+
960
+ for c in self.subnode_elements:
961
+ c.finalize()
962
+ del self.subnode_elements
963
+
964
+ def computeExpressionRaw(self, trace_collection):
965
+ """Compute an expression.
966
+
967
+ Default behavior is to just visit the child expressions first, and
968
+ then the node "computeExpression". For a few cases this needs to
969
+ be overloaded, e.g. conditional expressions.
970
+ """
971
+
972
+ # First apply the sub-expressions, as they are evaluated before
973
+ # the actual operation.
974
+ old_subnode_elements = self.subnode_elements
975
+
976
+ for sub_expression in old_subnode_elements:
977
+ expression = trace_collection.onExpression(sub_expression)
978
+
979
+ if expression.willRaiseAnyException():
980
+ wrapped_expression = wrapExpressionWithSideEffects(
981
+ side_effects=self.subnode_elements[
982
+ : old_subnode_elements.index(sub_expression)
983
+ ],
984
+ old_node=sub_expression,
985
+ new_node=expression,
986
+ )
987
+
988
+ return (
989
+ wrapped_expression,
990
+ "new_raise",
991
+ lambda: "For '%s' the child expression '%s' will raise."
992
+ % (self.getChildNameNice(), expression.getChildNameNice()),
993
+ )
994
+
995
+ return self, None, None
996
+
997
+ @staticmethod
998
+ def mayRaiseExceptionOperation():
999
+ return False
1000
+
1001
+ def mayRaiseException(self, exception_type):
1002
+ return any(
1003
+ value.mayRaiseException(exception_type) for value in self.subnode_elements
1004
+ )
1005
+
1006
+ def collectVariableAccesses(self, emit_read, emit_write):
1007
+ """Collect variable reads and writes of child nodes."""
1008
+
1009
+ for element in self.subnode_elements:
1010
+ element.collectVariableAccesses(emit_read, emit_write)
1011
+
1012
+
1013
+ # Assign the names that are easier to import with a stable name.
1014
+ ExpressionImportlibMetadataBackportEntryPointsValueRefBase = (
1015
+ ChildHavingElementsTupleFinalNoRaiseMixin
1016
+ )
1017
+ ExpressionImportlibMetadataEntryPointsValueRefBase = (
1018
+ ChildHavingElementsTupleFinalNoRaiseMixin
1019
+ )
1020
+
1021
+
1022
+ class ChildHavingExpressionAttributeNameMixin(ExpressionBase):
1023
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1024
+ __slots__ = ()
1025
+
1026
+ # This is generated for use in
1027
+ # ExpressionAttributeLookup
1028
+ # ExpressionAttributeLookupSpecial
1029
+
1030
+ def __init__(self, expression, attribute_name, source_ref):
1031
+ expression.parent = self
1032
+
1033
+ self.subnode_expression = expression
1034
+
1035
+ self.attribute_name = attribute_name
1036
+
1037
+ ExpressionBase.__init__(self, source_ref)
1038
+
1039
+ def getDetails(self):
1040
+ return {
1041
+ "attribute_name": self.attribute_name,
1042
+ }
1043
+
1044
+ def getVisitableNodes(self):
1045
+ """The visitable nodes, with tuple values flattened."""
1046
+
1047
+ return (self.subnode_expression,)
1048
+
1049
+ def getVisitableNodesNamed(self):
1050
+ """Named children dictionary.
1051
+
1052
+ For use in cloning nodes, debugging and XML output.
1053
+ """
1054
+
1055
+ return (("expression", self.subnode_expression),)
1056
+
1057
+ def replaceChild(self, old_node, new_node):
1058
+ value = self.subnode_expression
1059
+ if old_node is value:
1060
+ new_node.parent = self
1061
+
1062
+ self.subnode_expression = new_node
1063
+
1064
+ return
1065
+
1066
+ raise AssertionError("Didn't find child", old_node, "in", self)
1067
+
1068
+ def getCloneArgs(self):
1069
+ """Get clones of all children to pass for a new node.
1070
+
1071
+ Needs to make clones of child nodes too.
1072
+ """
1073
+
1074
+ values = {
1075
+ "expression": self.subnode_expression.makeClone(),
1076
+ }
1077
+
1078
+ values.update(self.getDetails())
1079
+
1080
+ return values
1081
+
1082
+ def finalize(self):
1083
+ del self.parent
1084
+
1085
+ self.subnode_expression.finalize()
1086
+ del self.subnode_expression
1087
+
1088
+ def computeExpressionRaw(self, trace_collection):
1089
+ """Compute an expression.
1090
+
1091
+ Default behavior is to just visit the child expressions first, and
1092
+ then the node "computeExpression". For a few cases this needs to
1093
+ be overloaded, e.g. conditional expressions.
1094
+ """
1095
+
1096
+ # First apply the sub-expression, as they it's evaluated before.
1097
+ expression = trace_collection.onExpression(self.subnode_expression)
1098
+
1099
+ if expression.willRaiseAnyException():
1100
+ return (
1101
+ expression,
1102
+ "new_raise",
1103
+ lambda: "For '%s' the child expression '%s' will raise."
1104
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1105
+ )
1106
+
1107
+ # Then ask ourselves to work on it.
1108
+ return self.computeExpression(trace_collection)
1109
+
1110
+ @abstractmethod
1111
+ def computeExpression(self, trace_collection):
1112
+ """Must be overloaded for non-final node."""
1113
+
1114
+ def collectVariableAccesses(self, emit_read, emit_write):
1115
+ """Collect variable reads and writes of child nodes."""
1116
+
1117
+ self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
1118
+
1119
+
1120
+ # Assign the names that are easier to import with a stable name.
1121
+ ExpressionAttributeLookupBase = ChildHavingExpressionAttributeNameMixin
1122
+ ExpressionAttributeLookupSpecialBase = ChildHavingExpressionAttributeNameMixin
1123
+
1124
+
1125
+ class ChildrenHavingExpressionNameRaiseWaitConstantNameMixin(ExpressionBase):
1126
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1127
+ __slots__ = ()
1128
+
1129
+ # This is generated for use in
1130
+ # ExpressionBuiltinHasattr
1131
+
1132
+ def __init__(self, expression, name, source_ref):
1133
+ expression.parent = self
1134
+
1135
+ self.subnode_expression = expression
1136
+
1137
+ name.parent = self
1138
+
1139
+ self.subnode_name = name
1140
+
1141
+ ExpressionBase.__init__(self, source_ref)
1142
+
1143
+ def getVisitableNodes(self):
1144
+ """The visitable nodes, with tuple values flattened."""
1145
+
1146
+ return (
1147
+ self.subnode_expression,
1148
+ self.subnode_name,
1149
+ )
1150
+
1151
+ def getVisitableNodesNamed(self):
1152
+ """Named children dictionary.
1153
+
1154
+ For use in cloning nodes, debugging and XML output.
1155
+ """
1156
+
1157
+ return (
1158
+ ("expression", self.subnode_expression),
1159
+ ("name", self.subnode_name),
1160
+ )
1161
+
1162
+ def replaceChild(self, old_node, new_node):
1163
+ value = self.subnode_expression
1164
+ if old_node is value:
1165
+ new_node.parent = self
1166
+
1167
+ self.subnode_expression = new_node
1168
+
1169
+ return
1170
+
1171
+ value = self.subnode_name
1172
+ if old_node is value:
1173
+ new_node.parent = self
1174
+
1175
+ self.subnode_name = new_node
1176
+
1177
+ return
1178
+
1179
+ raise AssertionError("Didn't find child", old_node, "in", self)
1180
+
1181
+ def getCloneArgs(self):
1182
+ """Get clones of all children to pass for a new node.
1183
+
1184
+ Needs to make clones of child nodes too.
1185
+ """
1186
+
1187
+ values = {
1188
+ "expression": self.subnode_expression.makeClone(),
1189
+ "name": self.subnode_name.makeClone(),
1190
+ }
1191
+
1192
+ values.update(self.getDetails())
1193
+
1194
+ return values
1195
+
1196
+ def finalize(self):
1197
+ del self.parent
1198
+
1199
+ self.subnode_expression.finalize()
1200
+ del self.subnode_expression
1201
+ self.subnode_name.finalize()
1202
+ del self.subnode_name
1203
+
1204
+ def computeExpressionRaw(self, trace_collection):
1205
+ """Compute an expression.
1206
+
1207
+ Default behavior is to just visit the child expressions first, and
1208
+ then the node "computeExpression". For a few cases this needs to
1209
+ be overloaded, e.g. conditional expressions.
1210
+ """
1211
+
1212
+ # First apply the sub-expressions, as they are evaluated before
1213
+ # the actual operation.
1214
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
1215
+ expression = trace_collection.onExpression(sub_expression)
1216
+
1217
+ if expression.willRaiseAnyException():
1218
+ sub_expressions = self.getVisitableNodes()
1219
+
1220
+ wrapped_expression = wrapExpressionWithSideEffects(
1221
+ side_effects=sub_expressions[:count],
1222
+ old_node=sub_expression,
1223
+ new_node=expression,
1224
+ )
1225
+
1226
+ return (
1227
+ wrapped_expression,
1228
+ "new_raise",
1229
+ lambda: "For '%s' the child expression '%s' will raise."
1230
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1231
+ )
1232
+
1233
+ if self.subnode_name.isCompileTimeConstant():
1234
+ try:
1235
+ return self.computeExpressionConstantName(trace_collection)
1236
+ finally:
1237
+ trace_collection.onExceptionRaiseExit(BaseException)
1238
+
1239
+ # Then ask ourselves to work on it.
1240
+ return self.computeExpression(trace_collection)
1241
+
1242
+ @abstractmethod
1243
+ def computeExpression(self, trace_collection):
1244
+ """Must be overloaded for non-final node."""
1245
+
1246
+ def collectVariableAccesses(self, emit_read, emit_write):
1247
+ """Collect variable reads and writes of child nodes."""
1248
+
1249
+ self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
1250
+ self.subnode_name.collectVariableAccesses(emit_read, emit_write)
1251
+
1252
+ @abstractmethod
1253
+ def computeExpressionConstantName(self, trace_collection):
1254
+ """Called when attribute name is constant."""
1255
+
1256
+
1257
+ # Assign the names that are easier to import with a stable name.
1258
+ ExpressionBuiltinHasattrBase = ChildrenHavingExpressionNameRaiseWaitConstantNameMixin
1259
+
1260
+
1261
+ class ChildrenHavingLeftRightFinalNoRaiseMixin(ExpressionBase):
1262
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1263
+ __slots__ = ()
1264
+
1265
+ # This is generated for use in
1266
+ # ExpressionSubtypeCheck
1267
+
1268
+ def __init__(self, left, right, source_ref):
1269
+ left.parent = self
1270
+
1271
+ self.subnode_left = left
1272
+
1273
+ right.parent = self
1274
+
1275
+ self.subnode_right = right
1276
+
1277
+ ExpressionBase.__init__(self, source_ref)
1278
+
1279
+ def getVisitableNodes(self):
1280
+ """The visitable nodes, with tuple values flattened."""
1281
+
1282
+ return (
1283
+ self.subnode_left,
1284
+ self.subnode_right,
1285
+ )
1286
+
1287
+ def getVisitableNodesNamed(self):
1288
+ """Named children dictionary.
1289
+
1290
+ For use in cloning nodes, debugging and XML output.
1291
+ """
1292
+
1293
+ return (
1294
+ ("left", self.subnode_left),
1295
+ ("right", self.subnode_right),
1296
+ )
1297
+
1298
+ def replaceChild(self, old_node, new_node):
1299
+ value = self.subnode_left
1300
+ if old_node is value:
1301
+ new_node.parent = self
1302
+
1303
+ self.subnode_left = new_node
1304
+
1305
+ return
1306
+
1307
+ value = self.subnode_right
1308
+ if old_node is value:
1309
+ new_node.parent = self
1310
+
1311
+ self.subnode_right = new_node
1312
+
1313
+ return
1314
+
1315
+ raise AssertionError("Didn't find child", old_node, "in", self)
1316
+
1317
+ def getCloneArgs(self):
1318
+ """Get clones of all children to pass for a new node.
1319
+
1320
+ Needs to make clones of child nodes too.
1321
+ """
1322
+
1323
+ values = {
1324
+ "left": self.subnode_left.makeClone(),
1325
+ "right": self.subnode_right.makeClone(),
1326
+ }
1327
+
1328
+ values.update(self.getDetails())
1329
+
1330
+ return values
1331
+
1332
+ def finalize(self):
1333
+ del self.parent
1334
+
1335
+ self.subnode_left.finalize()
1336
+ del self.subnode_left
1337
+ self.subnode_right.finalize()
1338
+ del self.subnode_right
1339
+
1340
+ def computeExpressionRaw(self, trace_collection):
1341
+ """Compute an expression.
1342
+
1343
+ Default behavior is to just visit the child expressions first, and
1344
+ then the node "computeExpression". For a few cases this needs to
1345
+ be overloaded, e.g. conditional expressions.
1346
+ """
1347
+
1348
+ # First apply the sub-expressions, as they are evaluated before
1349
+ # the actual operation.
1350
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
1351
+ expression = trace_collection.onExpression(sub_expression)
1352
+
1353
+ if expression.willRaiseAnyException():
1354
+ sub_expressions = self.getVisitableNodes()
1355
+
1356
+ wrapped_expression = wrapExpressionWithSideEffects(
1357
+ side_effects=sub_expressions[:count],
1358
+ old_node=sub_expression,
1359
+ new_node=expression,
1360
+ )
1361
+
1362
+ return (
1363
+ wrapped_expression,
1364
+ "new_raise",
1365
+ lambda: "For '%s' the child expression '%s' will raise."
1366
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1367
+ )
1368
+
1369
+ return self, None, None
1370
+
1371
+ @staticmethod
1372
+ def mayRaiseExceptionOperation():
1373
+ return False
1374
+
1375
+ def mayRaiseException(self, exception_type):
1376
+ return self.subnode_left.mayRaiseException(
1377
+ exception_type
1378
+ ) or self.subnode_right.mayRaiseException(exception_type)
1379
+
1380
+ def collectVariableAccesses(self, emit_read, emit_write):
1381
+ """Collect variable reads and writes of child nodes."""
1382
+
1383
+ self.subnode_left.collectVariableAccesses(emit_read, emit_write)
1384
+ self.subnode_right.collectVariableAccesses(emit_read, emit_write)
1385
+
1386
+
1387
+ # Assign the names that are easier to import with a stable name.
1388
+ ExpressionSubtypeCheckBase = ChildrenHavingLeftRightFinalNoRaiseMixin
1389
+
1390
+
1391
+ class ChildHavingListArgNoRaiseMixin(ExpressionBase):
1392
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1393
+ __slots__ = ()
1394
+
1395
+ # This is generated for use in
1396
+ # ExpressionListOperationClear
1397
+ # ExpressionListOperationReverse
1398
+
1399
+ def __init__(self, list_arg, source_ref):
1400
+ list_arg.parent = self
1401
+
1402
+ self.subnode_list_arg = list_arg
1403
+
1404
+ ExpressionBase.__init__(self, source_ref)
1405
+
1406
+ def getVisitableNodes(self):
1407
+ """The visitable nodes, with tuple values flattened."""
1408
+
1409
+ return (self.subnode_list_arg,)
1410
+
1411
+ def getVisitableNodesNamed(self):
1412
+ """Named children dictionary.
1413
+
1414
+ For use in cloning nodes, debugging and XML output.
1415
+ """
1416
+
1417
+ return (("list_arg", self.subnode_list_arg),)
1418
+
1419
+ def replaceChild(self, old_node, new_node):
1420
+ value = self.subnode_list_arg
1421
+ if old_node is value:
1422
+ new_node.parent = self
1423
+
1424
+ self.subnode_list_arg = new_node
1425
+
1426
+ return
1427
+
1428
+ raise AssertionError("Didn't find child", old_node, "in", self)
1429
+
1430
+ def getCloneArgs(self):
1431
+ """Get clones of all children to pass for a new node.
1432
+
1433
+ Needs to make clones of child nodes too.
1434
+ """
1435
+
1436
+ values = {
1437
+ "list_arg": self.subnode_list_arg.makeClone(),
1438
+ }
1439
+
1440
+ values.update(self.getDetails())
1441
+
1442
+ return values
1443
+
1444
+ def finalize(self):
1445
+ del self.parent
1446
+
1447
+ self.subnode_list_arg.finalize()
1448
+ del self.subnode_list_arg
1449
+
1450
+ def computeExpressionRaw(self, trace_collection):
1451
+ """Compute an expression.
1452
+
1453
+ Default behavior is to just visit the child expressions first, and
1454
+ then the node "computeExpression". For a few cases this needs to
1455
+ be overloaded, e.g. conditional expressions.
1456
+ """
1457
+
1458
+ # First apply the sub-expression, as they it's evaluated before.
1459
+ expression = trace_collection.onExpression(self.subnode_list_arg)
1460
+
1461
+ if expression.willRaiseAnyException():
1462
+ return (
1463
+ expression,
1464
+ "new_raise",
1465
+ lambda: "For '%s' the child expression '%s' will raise."
1466
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1467
+ )
1468
+
1469
+ # Then ask ourselves to work on it.
1470
+ return self.computeExpression(trace_collection)
1471
+
1472
+ @staticmethod
1473
+ def mayRaiseExceptionOperation():
1474
+ return False
1475
+
1476
+ def mayRaiseException(self, exception_type):
1477
+ return self.subnode_list_arg.mayRaiseException(exception_type)
1478
+
1479
+ @abstractmethod
1480
+ def computeExpression(self, trace_collection):
1481
+ """Must be overloaded for non-final node."""
1482
+
1483
+ def collectVariableAccesses(self, emit_read, emit_write):
1484
+ """Collect variable reads and writes of child nodes."""
1485
+
1486
+ self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
1487
+
1488
+
1489
+ # Assign the names that are easier to import with a stable name.
1490
+ ExpressionListOperationClearBase = ChildHavingListArgNoRaiseMixin
1491
+ ExpressionListOperationReverseBase = ChildHavingListArgNoRaiseMixin
1492
+
1493
+
1494
+ class ChildrenHavingListArgItemNoRaiseMixin(ExpressionBase):
1495
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1496
+ __slots__ = ()
1497
+
1498
+ # This is generated for use in
1499
+ # ExpressionListOperationAppend
1500
+
1501
+ def __init__(self, list_arg, item, source_ref):
1502
+ list_arg.parent = self
1503
+
1504
+ self.subnode_list_arg = list_arg
1505
+
1506
+ item.parent = self
1507
+
1508
+ self.subnode_item = item
1509
+
1510
+ ExpressionBase.__init__(self, source_ref)
1511
+
1512
+ def getVisitableNodes(self):
1513
+ """The visitable nodes, with tuple values flattened."""
1514
+
1515
+ return (
1516
+ self.subnode_list_arg,
1517
+ self.subnode_item,
1518
+ )
1519
+
1520
+ def getVisitableNodesNamed(self):
1521
+ """Named children dictionary.
1522
+
1523
+ For use in cloning nodes, debugging and XML output.
1524
+ """
1525
+
1526
+ return (
1527
+ ("list_arg", self.subnode_list_arg),
1528
+ ("item", self.subnode_item),
1529
+ )
1530
+
1531
+ def replaceChild(self, old_node, new_node):
1532
+ value = self.subnode_list_arg
1533
+ if old_node is value:
1534
+ new_node.parent = self
1535
+
1536
+ self.subnode_list_arg = new_node
1537
+
1538
+ return
1539
+
1540
+ value = self.subnode_item
1541
+ if old_node is value:
1542
+ new_node.parent = self
1543
+
1544
+ self.subnode_item = new_node
1545
+
1546
+ return
1547
+
1548
+ raise AssertionError("Didn't find child", old_node, "in", self)
1549
+
1550
+ def getCloneArgs(self):
1551
+ """Get clones of all children to pass for a new node.
1552
+
1553
+ Needs to make clones of child nodes too.
1554
+ """
1555
+
1556
+ values = {
1557
+ "list_arg": self.subnode_list_arg.makeClone(),
1558
+ "item": self.subnode_item.makeClone(),
1559
+ }
1560
+
1561
+ values.update(self.getDetails())
1562
+
1563
+ return values
1564
+
1565
+ def finalize(self):
1566
+ del self.parent
1567
+
1568
+ self.subnode_list_arg.finalize()
1569
+ del self.subnode_list_arg
1570
+ self.subnode_item.finalize()
1571
+ del self.subnode_item
1572
+
1573
+ def computeExpressionRaw(self, trace_collection):
1574
+ """Compute an expression.
1575
+
1576
+ Default behavior is to just visit the child expressions first, and
1577
+ then the node "computeExpression". For a few cases this needs to
1578
+ be overloaded, e.g. conditional expressions.
1579
+ """
1580
+
1581
+ # First apply the sub-expressions, as they are evaluated before
1582
+ # the actual operation.
1583
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
1584
+ expression = trace_collection.onExpression(sub_expression)
1585
+
1586
+ if expression.willRaiseAnyException():
1587
+ sub_expressions = self.getVisitableNodes()
1588
+
1589
+ wrapped_expression = wrapExpressionWithSideEffects(
1590
+ side_effects=sub_expressions[:count],
1591
+ old_node=sub_expression,
1592
+ new_node=expression,
1593
+ )
1594
+
1595
+ return (
1596
+ wrapped_expression,
1597
+ "new_raise",
1598
+ lambda: "For '%s' the child expression '%s' will raise."
1599
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1600
+ )
1601
+
1602
+ # Then ask ourselves to work on it.
1603
+ return self.computeExpression(trace_collection)
1604
+
1605
+ @staticmethod
1606
+ def mayRaiseExceptionOperation():
1607
+ return False
1608
+
1609
+ def mayRaiseException(self, exception_type):
1610
+ return self.subnode_list_arg.mayRaiseException(
1611
+ exception_type
1612
+ ) or self.subnode_item.mayRaiseException(exception_type)
1613
+
1614
+ @abstractmethod
1615
+ def computeExpression(self, trace_collection):
1616
+ """Must be overloaded for non-final node."""
1617
+
1618
+ def collectVariableAccesses(self, emit_read, emit_write):
1619
+ """Collect variable reads and writes of child nodes."""
1620
+
1621
+ self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
1622
+ self.subnode_item.collectVariableAccesses(emit_read, emit_write)
1623
+
1624
+
1625
+ # Assign the names that are easier to import with a stable name.
1626
+ ExpressionListOperationAppendBase = ChildrenHavingListArgItemNoRaiseMixin
1627
+
1628
+
1629
+ class ChildrenHavingListArgValueFinalNoRaiseMixin(ExpressionBase):
1630
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1631
+ __slots__ = ()
1632
+
1633
+ # This is generated for use in
1634
+ # ExpressionListOperationCount
1635
+
1636
+ def __init__(self, list_arg, value, source_ref):
1637
+ list_arg.parent = self
1638
+
1639
+ self.subnode_list_arg = list_arg
1640
+
1641
+ value.parent = self
1642
+
1643
+ self.subnode_value = value
1644
+
1645
+ ExpressionBase.__init__(self, source_ref)
1646
+
1647
+ def getVisitableNodes(self):
1648
+ """The visitable nodes, with tuple values flattened."""
1649
+
1650
+ return (
1651
+ self.subnode_list_arg,
1652
+ self.subnode_value,
1653
+ )
1654
+
1655
+ def getVisitableNodesNamed(self):
1656
+ """Named children dictionary.
1657
+
1658
+ For use in cloning nodes, debugging and XML output.
1659
+ """
1660
+
1661
+ return (
1662
+ ("list_arg", self.subnode_list_arg),
1663
+ ("value", self.subnode_value),
1664
+ )
1665
+
1666
+ def replaceChild(self, old_node, new_node):
1667
+ value = self.subnode_list_arg
1668
+ if old_node is value:
1669
+ new_node.parent = self
1670
+
1671
+ self.subnode_list_arg = new_node
1672
+
1673
+ return
1674
+
1675
+ value = self.subnode_value
1676
+ if old_node is value:
1677
+ new_node.parent = self
1678
+
1679
+ self.subnode_value = new_node
1680
+
1681
+ return
1682
+
1683
+ raise AssertionError("Didn't find child", old_node, "in", self)
1684
+
1685
+ def getCloneArgs(self):
1686
+ """Get clones of all children to pass for a new node.
1687
+
1688
+ Needs to make clones of child nodes too.
1689
+ """
1690
+
1691
+ values = {
1692
+ "list_arg": self.subnode_list_arg.makeClone(),
1693
+ "value": self.subnode_value.makeClone(),
1694
+ }
1695
+
1696
+ values.update(self.getDetails())
1697
+
1698
+ return values
1699
+
1700
+ def finalize(self):
1701
+ del self.parent
1702
+
1703
+ self.subnode_list_arg.finalize()
1704
+ del self.subnode_list_arg
1705
+ self.subnode_value.finalize()
1706
+ del self.subnode_value
1707
+
1708
+ def computeExpressionRaw(self, trace_collection):
1709
+ """Compute an expression.
1710
+
1711
+ Default behavior is to just visit the child expressions first, and
1712
+ then the node "computeExpression". For a few cases this needs to
1713
+ be overloaded, e.g. conditional expressions.
1714
+ """
1715
+
1716
+ # First apply the sub-expressions, as they are evaluated before
1717
+ # the actual operation.
1718
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
1719
+ expression = trace_collection.onExpression(sub_expression)
1720
+
1721
+ if expression.willRaiseAnyException():
1722
+ sub_expressions = self.getVisitableNodes()
1723
+
1724
+ wrapped_expression = wrapExpressionWithSideEffects(
1725
+ side_effects=sub_expressions[:count],
1726
+ old_node=sub_expression,
1727
+ new_node=expression,
1728
+ )
1729
+
1730
+ return (
1731
+ wrapped_expression,
1732
+ "new_raise",
1733
+ lambda: "For '%s' the child expression '%s' will raise."
1734
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1735
+ )
1736
+
1737
+ return self, None, None
1738
+
1739
+ @staticmethod
1740
+ def mayRaiseExceptionOperation():
1741
+ return False
1742
+
1743
+ def mayRaiseException(self, exception_type):
1744
+ return self.subnode_list_arg.mayRaiseException(
1745
+ exception_type
1746
+ ) or self.subnode_value.mayRaiseException(exception_type)
1747
+
1748
+ def collectVariableAccesses(self, emit_read, emit_write):
1749
+ """Collect variable reads and writes of child nodes."""
1750
+
1751
+ self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
1752
+ self.subnode_value.collectVariableAccesses(emit_read, emit_write)
1753
+
1754
+
1755
+ # Assign the names that are easier to import with a stable name.
1756
+ ExpressionListOperationCountBase = ChildrenHavingListArgValueFinalNoRaiseMixin
1757
+
1758
+
1759
+ class ChildHavingPairsTupleFinalNoRaiseMixin(ExpressionBase):
1760
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1761
+ __slots__ = ()
1762
+
1763
+ # This is generated for use in
1764
+ # ExpressionImportlibMetadataBackportSelectableGroupsValueRef
1765
+ # ExpressionImportlibMetadataSelectableGroupsValueRef
1766
+
1767
+ def __init__(self, pairs, source_ref):
1768
+ assert type(pairs) is tuple
1769
+
1770
+ for val in pairs:
1771
+ val.parent = self
1772
+
1773
+ self.subnode_pairs = pairs
1774
+
1775
+ ExpressionBase.__init__(self, source_ref)
1776
+
1777
+ def getVisitableNodes(self):
1778
+ """The visitable nodes, with tuple values flattened."""
1779
+
1780
+ return self.subnode_pairs
1781
+
1782
+ def getVisitableNodesNamed(self):
1783
+ """Named children dictionary.
1784
+
1785
+ For use in cloning nodes, debugging and XML output.
1786
+ """
1787
+
1788
+ return (("pairs", self.subnode_pairs),)
1789
+
1790
+ def replaceChild(self, old_node, new_node):
1791
+ value = self.subnode_pairs
1792
+ if old_node in value:
1793
+ if new_node is not None:
1794
+ new_node.parent = self
1795
+
1796
+ self.subnode_pairs = tuple(
1797
+ (val if val is not old_node else new_node) for val in value
1798
+ )
1799
+ else:
1800
+ self.subnode_pairs = tuple(val for val in value if val is not old_node)
1801
+
1802
+ return
1803
+
1804
+ raise AssertionError("Didn't find child", old_node, "in", self)
1805
+
1806
+ def getCloneArgs(self):
1807
+ """Get clones of all children to pass for a new node.
1808
+
1809
+ Needs to make clones of child nodes too.
1810
+ """
1811
+
1812
+ values = {
1813
+ "pairs": tuple(v.makeClone() for v in self.subnode_pairs),
1814
+ }
1815
+
1816
+ values.update(self.getDetails())
1817
+
1818
+ return values
1819
+
1820
+ def finalize(self):
1821
+ del self.parent
1822
+
1823
+ for c in self.subnode_pairs:
1824
+ c.finalize()
1825
+ del self.subnode_pairs
1826
+
1827
+ def computeExpressionRaw(self, trace_collection):
1828
+ """Compute an expression.
1829
+
1830
+ Default behavior is to just visit the child expressions first, and
1831
+ then the node "computeExpression". For a few cases this needs to
1832
+ be overloaded, e.g. conditional expressions.
1833
+ """
1834
+
1835
+ # First apply the sub-expressions, as they are evaluated before
1836
+ # the actual operation.
1837
+ old_subnode_pairs = self.subnode_pairs
1838
+
1839
+ for sub_expression in old_subnode_pairs:
1840
+ expression = trace_collection.onExpression(sub_expression)
1841
+
1842
+ if expression.willRaiseAnyException():
1843
+ wrapped_expression = wrapExpressionWithSideEffects(
1844
+ side_effects=self.subnode_pairs[
1845
+ : old_subnode_pairs.index(sub_expression)
1846
+ ],
1847
+ old_node=sub_expression,
1848
+ new_node=expression,
1849
+ )
1850
+
1851
+ return (
1852
+ wrapped_expression,
1853
+ "new_raise",
1854
+ lambda: "For '%s' the child expression '%s' will raise."
1855
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1856
+ )
1857
+
1858
+ return self, None, None
1859
+
1860
+ @staticmethod
1861
+ def mayRaiseExceptionOperation():
1862
+ return False
1863
+
1864
+ def mayRaiseException(self, exception_type):
1865
+ return any(
1866
+ value.mayRaiseException(exception_type) for value in self.subnode_pairs
1867
+ )
1868
+
1869
+ def collectVariableAccesses(self, emit_read, emit_write):
1870
+ """Collect variable reads and writes of child nodes."""
1871
+
1872
+ for element in self.subnode_pairs:
1873
+ element.collectVariableAccesses(emit_read, emit_write)
1874
+
1875
+
1876
+ # Assign the names that are easier to import with a stable name.
1877
+ ExpressionImportlibMetadataBackportSelectableGroupsValueRefBase = (
1878
+ ChildHavingPairsTupleFinalNoRaiseMixin
1879
+ )
1880
+ ExpressionImportlibMetadataSelectableGroupsValueRefBase = (
1881
+ ChildHavingPairsTupleFinalNoRaiseMixin
1882
+ )
1883
+
1884
+
1885
+ class ChildHavingPromptOptionalFinalMixin(ExpressionBase):
1886
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1887
+ __slots__ = ()
1888
+
1889
+ # This is generated for use in
1890
+ # ExpressionBuiltinInput
1891
+
1892
+ def __init__(self, prompt, source_ref):
1893
+ if prompt is not None:
1894
+ prompt.parent = self
1895
+
1896
+ self.subnode_prompt = prompt
1897
+
1898
+ ExpressionBase.__init__(self, source_ref)
1899
+
1900
+ def getVisitableNodes(self):
1901
+ """The visitable nodes, with tuple values flattened."""
1902
+
1903
+ value = self.subnode_prompt
1904
+
1905
+ if value is None:
1906
+ return ()
1907
+ else:
1908
+ return (value,)
1909
+
1910
+ def getVisitableNodesNamed(self):
1911
+ """Named children dictionary.
1912
+
1913
+ For use in cloning nodes, debugging and XML output.
1914
+ """
1915
+
1916
+ return (("prompt", self.subnode_prompt),)
1917
+
1918
+ def replaceChild(self, old_node, new_node):
1919
+ value = self.subnode_prompt
1920
+ if old_node is value:
1921
+ if new_node is not None:
1922
+ new_node.parent = self
1923
+
1924
+ self.subnode_prompt = new_node
1925
+
1926
+ return
1927
+
1928
+ raise AssertionError("Didn't find child", old_node, "in", self)
1929
+
1930
+ def getCloneArgs(self):
1931
+ """Get clones of all children to pass for a new node.
1932
+
1933
+ Needs to make clones of child nodes too.
1934
+ """
1935
+
1936
+ values = {
1937
+ "prompt": (
1938
+ self.subnode_prompt.makeClone()
1939
+ if self.subnode_prompt is not None
1940
+ else None
1941
+ ),
1942
+ }
1943
+
1944
+ values.update(self.getDetails())
1945
+
1946
+ return values
1947
+
1948
+ def finalize(self):
1949
+ del self.parent
1950
+
1951
+ if self.subnode_prompt is not None:
1952
+ self.subnode_prompt.finalize()
1953
+ del self.subnode_prompt
1954
+
1955
+ def computeExpressionRaw(self, trace_collection):
1956
+ """Compute an expression.
1957
+
1958
+ Default behavior is to just visit the child expressions first, and
1959
+ then the node "computeExpression". For a few cases this needs to
1960
+ be overloaded, e.g. conditional expressions.
1961
+ """
1962
+
1963
+ # First apply the sub-expression, as they it's evaluated before.
1964
+ expression = self.subnode_prompt
1965
+
1966
+ if expression is not None:
1967
+ expression = trace_collection.onExpression(expression)
1968
+
1969
+ if expression.willRaiseAnyException():
1970
+ return (
1971
+ expression,
1972
+ "new_raise",
1973
+ lambda: "For '%s' the child expression '%s' will raise."
1974
+ % (self.getChildNameNice(), expression.getChildNameNice()),
1975
+ )
1976
+
1977
+ trace_collection.onExceptionRaiseExit(BaseException)
1978
+ return self, None, None
1979
+
1980
+ def collectVariableAccesses(self, emit_read, emit_write):
1981
+ """Collect variable reads and writes of child nodes."""
1982
+
1983
+ subnode_prompt = self.subnode_prompt
1984
+
1985
+ if subnode_prompt is not None:
1986
+ self.subnode_prompt.collectVariableAccesses(emit_read, emit_write)
1987
+
1988
+
1989
+ # Assign the names that are easier to import with a stable name.
1990
+ ExpressionBuiltinInputBase = ChildHavingPromptOptionalFinalMixin
1991
+
1992
+
1993
+ class ChildHavingValueFinalNoRaiseMixin(ExpressionBase):
1994
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
1995
+ __slots__ = ()
1996
+
1997
+ # This is generated for use in
1998
+ # ExpressionBuiltinClassmethod
1999
+ # ExpressionBuiltinStaticmethod
2000
+
2001
+ def __init__(self, value, source_ref):
2002
+ value.parent = self
2003
+
2004
+ self.subnode_value = value
2005
+
2006
+ ExpressionBase.__init__(self, source_ref)
2007
+
2008
+ def getVisitableNodes(self):
2009
+ """The visitable nodes, with tuple values flattened."""
2010
+
2011
+ return (self.subnode_value,)
2012
+
2013
+ def getVisitableNodesNamed(self):
2014
+ """Named children dictionary.
2015
+
2016
+ For use in cloning nodes, debugging and XML output.
2017
+ """
2018
+
2019
+ return (("value", self.subnode_value),)
2020
+
2021
+ def replaceChild(self, old_node, new_node):
2022
+ value = self.subnode_value
2023
+ if old_node is value:
2024
+ new_node.parent = self
2025
+
2026
+ self.subnode_value = new_node
2027
+
2028
+ return
2029
+
2030
+ raise AssertionError("Didn't find child", old_node, "in", self)
2031
+
2032
+ def getCloneArgs(self):
2033
+ """Get clones of all children to pass for a new node.
2034
+
2035
+ Needs to make clones of child nodes too.
2036
+ """
2037
+
2038
+ values = {
2039
+ "value": self.subnode_value.makeClone(),
2040
+ }
2041
+
2042
+ values.update(self.getDetails())
2043
+
2044
+ return values
2045
+
2046
+ def finalize(self):
2047
+ del self.parent
2048
+
2049
+ self.subnode_value.finalize()
2050
+ del self.subnode_value
2051
+
2052
+ def computeExpressionRaw(self, trace_collection):
2053
+ """Compute an expression.
2054
+
2055
+ Default behavior is to just visit the child expressions first, and
2056
+ then the node "computeExpression". For a few cases this needs to
2057
+ be overloaded, e.g. conditional expressions.
2058
+ """
2059
+
2060
+ # First apply the sub-expression, as they it's evaluated before.
2061
+ expression = trace_collection.onExpression(self.subnode_value)
2062
+
2063
+ if expression.willRaiseAnyException():
2064
+ return (
2065
+ expression,
2066
+ "new_raise",
2067
+ lambda: "For '%s' the child expression '%s' will raise."
2068
+ % (self.getChildNameNice(), expression.getChildNameNice()),
2069
+ )
2070
+
2071
+ return self, None, None
2072
+
2073
+ @staticmethod
2074
+ def mayRaiseExceptionOperation():
2075
+ return False
2076
+
2077
+ def mayRaiseException(self, exception_type):
2078
+ return self.subnode_value.mayRaiseException(exception_type)
2079
+
2080
+ def collectVariableAccesses(self, emit_read, emit_write):
2081
+ """Collect variable reads and writes of child nodes."""
2082
+
2083
+ self.subnode_value.collectVariableAccesses(emit_read, emit_write)
2084
+
2085
+
2086
+ # Assign the names that are easier to import with a stable name.
2087
+ ExpressionBuiltinClassmethodBase = ChildHavingValueFinalNoRaiseMixin
2088
+ ExpressionBuiltinStaticmethodBase = ChildHavingValueFinalNoRaiseMixin
2089
+
2090
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
2091
+ # integrates with CPython, but also works on its own.
2092
+ #
2093
+ # Licensed under the Apache License, Version 2.0 (the "License");
2094
+ # you may not use this file except in compliance with the License.
2095
+ # You may obtain a copy of the License at
2096
+ #
2097
+ # http://www.apache.org/licenses/LICENSE-2.0
2098
+ #
2099
+ # Unless required by applicable law or agreed to in writing, software
2100
+ # distributed under the License is distributed on an "AS IS" BASIS,
2101
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2102
+ # See the License for the specific language governing permissions and
2103
+ # limitations under the License.