Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__cp311-cp311-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 (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,33 +1,34 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
3
- # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- # integrates with CPython, but also works on its own.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
18
4
  # We are not avoiding these in generated code at all
19
- # pylint: disable=I0021,too-many-lines
20
- # pylint: disable=I0021,line-too-long
21
- # pylint: disable=I0021,too-many-instance-attributes
22
- # pylint: disable=I0021,too-many-return-statements
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
23
7
 
24
8
 
25
9
  """Children having mixins
26
10
 
27
11
  WARNING, this code is GENERATED. Modify the template ChildrenHavingMixin.py.j2 instead!
28
12
 
29
- spell-checker: ignore append capitalize casefold center clear copy count decode encode endswith expandtabs extend find format formatmap fromkeys get haskey index insert isalnum isalpha isascii isdecimal isdigit isidentifier islower isnumeric isprintable isspace istitle isupper items iteritems iterkeys itervalues join keys ljust lower lstrip maketrans partition pop popitem prepare remove replace reverse rfind rindex rjust rpartition rsplit rstrip setdefault sort split splitlines startswith strip swapcase title translate update upper values viewitems viewkeys viewvalues zfill
30
- spell-checker: ignore args chars count default delete encoding end errors fillchar index item iterable keepends key kwargs maxsplit new old pairs prefix sep start stop sub suffix table tabsize value width
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
31
32
  """
32
33
 
33
34
 
@@ -47,6 +48,7 @@ class ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin(object
47
48
 
48
49
  # This is generated for use in
49
50
  # CompiledPythonModule
51
+ # CompiledPythonNamespacePackage
50
52
  # CompiledPythonPackage
51
53
  # PythonMainModule
52
54
 
@@ -141,9 +143,9 @@ class ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin(object
141
143
  """
142
144
 
143
145
  values = {
144
- "body": self.subnode_body.makeClone()
145
- if self.subnode_body is not None
146
- else None,
146
+ "body": (
147
+ self.subnode_body.makeClone() if self.subnode_body is not None else None
148
+ ),
147
149
  "functions": tuple(v.makeClone() for v in self.subnode_functions),
148
150
  }
149
151
 
@@ -176,6 +178,9 @@ class ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin(object
176
178
  ChildrenCompiledPythonModuleMixin = (
177
179
  ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin
178
180
  )
181
+ ChildrenCompiledPythonNamespacePackageMixin = (
182
+ ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin
183
+ )
179
184
  ChildrenCompiledPythonPackageMixin = (
180
185
  ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin
181
186
  )
@@ -281,8 +286,9 @@ class ChildHavingBodyOptionalMixin(object):
281
286
 
282
287
  # This is generated for use in
283
288
  # ExpressionAsyncgenObjectBody
284
- # ExpressionClassBodyP2
285
- # ExpressionClassBodyP3
289
+ # ExpressionClassDictBody
290
+ # ExpressionClassDictBodyP2
291
+ # ExpressionClassMappingBody
286
292
  # ExpressionCoroutineObjectBody
287
293
  # ExpressionFunctionBody
288
294
  # ExpressionFunctionPureBody
@@ -343,9 +349,9 @@ class ChildHavingBodyOptionalMixin(object):
343
349
  """
344
350
 
345
351
  values = {
346
- "body": self.subnode_body.makeClone()
347
- if self.subnode_body is not None
348
- else None,
352
+ "body": (
353
+ self.subnode_body.makeClone() if self.subnode_body is not None else None
354
+ ),
349
355
  }
350
356
 
351
357
  values.update(self.getDetails())
@@ -395,8 +401,9 @@ class ChildHavingBodyOptionalMixin(object):
395
401
 
396
402
  # Assign the names that are easier to import with a stable name.
397
403
  ChildrenExpressionAsyncgenObjectBodyMixin = ChildHavingBodyOptionalMixin
398
- ChildrenExpressionClassBodyP2Mixin = ChildHavingBodyOptionalMixin
399
- ChildrenExpressionClassBodyP3Mixin = ChildHavingBodyOptionalMixin
404
+ ChildrenExpressionClassDictBodyMixin = ChildHavingBodyOptionalMixin
405
+ ChildrenExpressionClassDictBodyP2Mixin = ChildHavingBodyOptionalMixin
406
+ ChildrenExpressionClassMappingBodyMixin = ChildHavingBodyOptionalMixin
400
407
  ChildrenExpressionCoroutineObjectBodyMixin = ChildHavingBodyOptionalMixin
401
408
  ChildrenExpressionFunctionBodyMixin = ChildHavingBodyOptionalMixin
402
409
  ChildrenExpressionFunctionPureBodyMixin = ChildHavingBodyOptionalMixin
@@ -4828,12 +4835,16 @@ class ChildrenHavingDefaultsTupleKwDefaultsOptionalAnnotationsOptionalFunctionRe
4828
4835
 
4829
4836
  values = {
4830
4837
  "defaults": tuple(v.makeClone() for v in self.subnode_defaults),
4831
- "kw_defaults": self.subnode_kw_defaults.makeClone()
4832
- if self.subnode_kw_defaults is not None
4833
- else None,
4834
- "annotations": self.subnode_annotations.makeClone()
4835
- if self.subnode_annotations is not None
4836
- else None,
4838
+ "kw_defaults": (
4839
+ self.subnode_kw_defaults.makeClone()
4840
+ if self.subnode_kw_defaults is not None
4841
+ else None
4842
+ ),
4843
+ "annotations": (
4844
+ self.subnode_annotations.makeClone()
4845
+ if self.subnode_annotations is not None
4846
+ else None
4847
+ ),
4837
4848
  "function_ref": self.subnode_function_ref.makeClone(),
4838
4849
  }
4839
4850
 
@@ -6192,6 +6203,115 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
6192
6203
  ChildrenExpressionRaiseExceptionMixin = ChildrenHavingExceptionTypeExceptionValueMixin
6193
6204
 
6194
6205
 
6206
+ class ChildHavingExitCodeOptionalMixin(object):
6207
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
6208
+ __slots__ = ()
6209
+
6210
+ # This is generated for use in
6211
+ # ExpressionSysExit
6212
+
6213
+ def __init__(
6214
+ self,
6215
+ exit_code,
6216
+ ):
6217
+ if exit_code is not None:
6218
+ exit_code.parent = self
6219
+
6220
+ self.subnode_exit_code = exit_code
6221
+
6222
+ def getVisitableNodes(self):
6223
+ """The visitable nodes, with tuple values flattened."""
6224
+
6225
+ value = self.subnode_exit_code
6226
+
6227
+ if value is None:
6228
+ return ()
6229
+ else:
6230
+ return (value,)
6231
+
6232
+ def getVisitableNodesNamed(self):
6233
+ """Named children dictionary.
6234
+
6235
+ For use in cloning nodes, debugging and XML output.
6236
+ """
6237
+
6238
+ return (("exit_code", self.subnode_exit_code),)
6239
+
6240
+ def replaceChild(self, old_node, new_node):
6241
+ value = self.subnode_exit_code
6242
+ if old_node is value:
6243
+ if new_node is not None:
6244
+ new_node.parent = self
6245
+
6246
+ self.subnode_exit_code = new_node
6247
+
6248
+ return
6249
+
6250
+ raise AssertionError("Didn't find child", old_node, "in", self)
6251
+
6252
+ def getCloneArgs(self):
6253
+ """Get clones of all children to pass for a new node.
6254
+
6255
+ Needs to make clones of child nodes too.
6256
+ """
6257
+
6258
+ values = {
6259
+ "exit_code": (
6260
+ self.subnode_exit_code.makeClone()
6261
+ if self.subnode_exit_code is not None
6262
+ else None
6263
+ ),
6264
+ }
6265
+
6266
+ values.update(self.getDetails())
6267
+
6268
+ return values
6269
+
6270
+ def finalize(self):
6271
+ del self.parent
6272
+
6273
+ if self.subnode_exit_code is not None:
6274
+ self.subnode_exit_code.finalize()
6275
+ del self.subnode_exit_code
6276
+
6277
+ def computeExpressionRaw(self, trace_collection):
6278
+ """Compute an expression.
6279
+
6280
+ Default behavior is to just visit the child expressions first, and
6281
+ then the node "computeExpression". For a few cases this needs to
6282
+ be overloaded, e.g. conditional expressions.
6283
+ """
6284
+
6285
+ # First apply the sub-expression, as they it's evaluated before.
6286
+ expression = self.subnode_exit_code
6287
+
6288
+ if expression is not None:
6289
+ expression = trace_collection.onExpression(expression)
6290
+
6291
+ if expression.willRaiseAnyException():
6292
+ return (
6293
+ expression,
6294
+ "new_raise",
6295
+ lambda: "For '%s' the child expression '%s' will raise."
6296
+ % (self.getChildNameNice(), expression.getChildNameNice()),
6297
+ )
6298
+
6299
+ # Then ask ourselves to work on it.
6300
+ return self.computeExpression(trace_collection)
6301
+
6302
+ def collectVariableAccesses(self, emit_read, emit_write):
6303
+ """Collect variable reads and writes of child nodes."""
6304
+
6305
+ subnode_exit_code = self.subnode_exit_code
6306
+
6307
+ if subnode_exit_code is not None:
6308
+ self.subnode_exit_code.collectVariableAccesses(emit_read, emit_write)
6309
+
6310
+
6311
+ # Assign the names that are easier to import with a stable name.
6312
+ ChildrenExpressionSysExitMixin = ChildHavingExitCodeOptionalMixin
6313
+
6314
+
6195
6315
  class ChildHavingExpressionMixin(object):
6196
6316
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
6197
6317
  __slots__ = ()
@@ -6384,10 +6504,9 @@ class ChildHavingExpressionMixin(object):
6384
6504
  # ExpressionAttributeLookupStrUpper
6385
6505
  # ExpressionAttributeLookupStrZfill
6386
6506
  # ExpressionAttributeLookupTypePrepare
6387
- # ExpressionMatchArgs
6388
6507
  # ExpressionYield
6389
6508
  # ExpressionYieldFrom
6390
- # ExpressionYieldFromWaitable
6509
+ # ExpressionYieldFromAwaitable
6391
6510
 
6392
6511
  def __init__(
6393
6512
  self,
@@ -6657,10 +6776,9 @@ ChildrenExpressionAttributeLookupStrTranslateMixin = ChildHavingExpressionMixin
6657
6776
  ChildrenExpressionAttributeLookupStrUpperMixin = ChildHavingExpressionMixin
6658
6777
  ChildrenExpressionAttributeLookupStrZfillMixin = ChildHavingExpressionMixin
6659
6778
  ChildrenExpressionAttributeLookupTypePrepareMixin = ChildHavingExpressionMixin
6660
- ChildrenExpressionMatchArgsMixin = ChildHavingExpressionMixin
6661
6779
  ChildrenExpressionYieldMixin = ChildHavingExpressionMixin
6662
6780
  ChildrenExpressionYieldFromMixin = ChildHavingExpressionMixin
6663
- ChildrenExpressionYieldFromWaitableMixin = ChildHavingExpressionMixin
6781
+ ChildrenExpressionYieldFromAwaitableMixin = ChildHavingExpressionMixin
6664
6782
 
6665
6783
 
6666
6784
  class ChildrenHavingExpressionLowerAutoNoneUpperAutoNoneMixin(object):
@@ -6760,12 +6878,16 @@ class ChildrenHavingExpressionLowerAutoNoneUpperAutoNoneMixin(object):
6760
6878
 
6761
6879
  values = {
6762
6880
  "expression": self.subnode_expression.makeClone(),
6763
- "lower": self.subnode_lower.makeClone()
6764
- if self.subnode_lower is not None
6765
- else None,
6766
- "upper": self.subnode_upper.makeClone()
6767
- if self.subnode_upper is not None
6768
- else None,
6881
+ "lower": (
6882
+ self.subnode_lower.makeClone()
6883
+ if self.subnode_lower is not None
6884
+ else None
6885
+ ),
6886
+ "upper": (
6887
+ self.subnode_upper.makeClone()
6888
+ if self.subnode_upper is not None
6889
+ else None
6890
+ ),
6769
6891
  }
6770
6892
 
6771
6893
  values.update(self.getDetails())
@@ -6836,6 +6958,130 @@ ChildrenExpressionSliceLookupMixin = (
6836
6958
  )
6837
6959
 
6838
6960
 
6961
+ class ChildrenHavingExpressionMatchTypeMixin(object):
6962
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
6963
+ __slots__ = ()
6964
+
6965
+ # This is generated for use in
6966
+ # ExpressionMatchArgs
6967
+
6968
+ def __init__(
6969
+ self,
6970
+ expression,
6971
+ match_type,
6972
+ ):
6973
+ expression.parent = self
6974
+
6975
+ self.subnode_expression = expression
6976
+
6977
+ match_type.parent = self
6978
+
6979
+ self.subnode_match_type = match_type
6980
+
6981
+ def getVisitableNodes(self):
6982
+ """The visitable nodes, with tuple values flattened."""
6983
+
6984
+ return (
6985
+ self.subnode_expression,
6986
+ self.subnode_match_type,
6987
+ )
6988
+
6989
+ def getVisitableNodesNamed(self):
6990
+ """Named children dictionary.
6991
+
6992
+ For use in cloning nodes, debugging and XML output.
6993
+ """
6994
+
6995
+ return (
6996
+ ("expression", self.subnode_expression),
6997
+ ("match_type", self.subnode_match_type),
6998
+ )
6999
+
7000
+ def replaceChild(self, old_node, new_node):
7001
+ value = self.subnode_expression
7002
+ if old_node is value:
7003
+ new_node.parent = self
7004
+
7005
+ self.subnode_expression = new_node
7006
+
7007
+ return
7008
+
7009
+ value = self.subnode_match_type
7010
+ if old_node is value:
7011
+ new_node.parent = self
7012
+
7013
+ self.subnode_match_type = new_node
7014
+
7015
+ return
7016
+
7017
+ raise AssertionError("Didn't find child", old_node, "in", self)
7018
+
7019
+ def getCloneArgs(self):
7020
+ """Get clones of all children to pass for a new node.
7021
+
7022
+ Needs to make clones of child nodes too.
7023
+ """
7024
+
7025
+ values = {
7026
+ "expression": self.subnode_expression.makeClone(),
7027
+ "match_type": self.subnode_match_type.makeClone(),
7028
+ }
7029
+
7030
+ values.update(self.getDetails())
7031
+
7032
+ return values
7033
+
7034
+ def finalize(self):
7035
+ del self.parent
7036
+
7037
+ self.subnode_expression.finalize()
7038
+ del self.subnode_expression
7039
+ self.subnode_match_type.finalize()
7040
+ del self.subnode_match_type
7041
+
7042
+ def computeExpressionRaw(self, trace_collection):
7043
+ """Compute an expression.
7044
+
7045
+ Default behavior is to just visit the child expressions first, and
7046
+ then the node "computeExpression". For a few cases this needs to
7047
+ be overloaded, e.g. conditional expressions.
7048
+ """
7049
+
7050
+ # First apply the sub-expressions, as they are evaluated before
7051
+ # the actual operation.
7052
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
7053
+ expression = trace_collection.onExpression(sub_expression)
7054
+
7055
+ if expression.willRaiseAnyException():
7056
+ sub_expressions = self.getVisitableNodes()
7057
+
7058
+ wrapped_expression = wrapExpressionWithSideEffects(
7059
+ side_effects=sub_expressions[:count],
7060
+ old_node=sub_expression,
7061
+ new_node=expression,
7062
+ )
7063
+
7064
+ return (
7065
+ wrapped_expression,
7066
+ "new_raise",
7067
+ lambda: "For '%s' the child expression '%s' will raise."
7068
+ % (self.getChildNameNice(), expression.getChildNameNice()),
7069
+ )
7070
+
7071
+ # Then ask ourselves to work on it.
7072
+ return self.computeExpression(trace_collection)
7073
+
7074
+ def collectVariableAccesses(self, emit_read, emit_write):
7075
+ """Collect variable reads and writes of child nodes."""
7076
+
7077
+ self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
7078
+ self.subnode_match_type.collectVariableAccesses(emit_read, emit_write)
7079
+
7080
+
7081
+ # Assign the names that are easier to import with a stable name.
7082
+ ChildrenExpressionMatchArgsMixin = ChildrenHavingExpressionMatchTypeMixin
7083
+
7084
+
6839
7085
  class ChildrenHavingExpressionNameDefaultOptionalMixin(object):
6840
7086
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
6841
7087
  __slots__ = ()
@@ -6924,9 +7170,11 @@ class ChildrenHavingExpressionNameDefaultOptionalMixin(object):
6924
7170
  values = {
6925
7171
  "expression": self.subnode_expression.makeClone(),
6926
7172
  "name": self.subnode_name.makeClone(),
6927
- "default": self.subnode_default.makeClone()
6928
- if self.subnode_default is not None
6929
- else None,
7173
+ "default": (
7174
+ self.subnode_default.makeClone()
7175
+ if self.subnode_default is not None
7176
+ else None
7177
+ ),
6930
7178
  }
6931
7179
 
6932
7180
  values.update(self.getDetails())
@@ -7139,7 +7387,7 @@ class ChildrenHavingExpressionSubscriptMixin(object):
7139
7387
  __slots__ = ()
7140
7388
 
7141
7389
  # This is generated for use in
7142
- # ExpressionSubscriptCheck
7390
+ # ExpressionMatchSubscriptCheck
7143
7391
  # ExpressionSubscriptLookup
7144
7392
  # ExpressionSubscriptLookupForUnpack
7145
7393
 
@@ -7257,7 +7505,7 @@ class ChildrenHavingExpressionSubscriptMixin(object):
7257
7505
 
7258
7506
 
7259
7507
  # Assign the names that are easier to import with a stable name.
7260
- ChildrenExpressionSubscriptCheckMixin = ChildrenHavingExpressionSubscriptMixin
7508
+ ChildrenExpressionMatchSubscriptCheckMixin = ChildrenHavingExpressionSubscriptMixin
7261
7509
  ChildrenExpressionSubscriptLookupMixin = ChildrenHavingExpressionSubscriptMixin
7262
7510
  ChildrenExpressionSubscriptLookupForUnpackMixin = ChildrenHavingExpressionSubscriptMixin
7263
7511
 
@@ -7448,12 +7696,14 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalMixin(object):
7448
7696
 
7449
7697
  values = {
7450
7698
  "filename": self.subnode_filename.makeClone(),
7451
- "mode": self.subnode_mode.makeClone()
7452
- if self.subnode_mode is not None
7453
- else None,
7454
- "buffering": self.subnode_buffering.makeClone()
7455
- if self.subnode_buffering is not None
7456
- else None,
7699
+ "mode": (
7700
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
7701
+ ),
7702
+ "buffering": (
7703
+ self.subnode_buffering.makeClone()
7704
+ if self.subnode_buffering is not None
7705
+ else None
7706
+ ),
7457
7707
  }
7458
7708
 
7459
7709
  values.update(self.getDetails())
@@ -7581,44 +7831,419 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
7581
7831
  if opener is not None:
7582
7832
  opener.parent = self
7583
7833
 
7584
- self.subnode_opener = opener
7834
+ self.subnode_opener = opener
7835
+
7836
+ def getVisitableNodes(self):
7837
+ """The visitable nodes, with tuple values flattened."""
7838
+
7839
+ result = []
7840
+ result.append(self.subnode_filename)
7841
+ value = self.subnode_mode
7842
+ if value is None:
7843
+ pass
7844
+ else:
7845
+ result.append(value)
7846
+ value = self.subnode_buffering
7847
+ if value is None:
7848
+ pass
7849
+ else:
7850
+ result.append(value)
7851
+ value = self.subnode_encoding
7852
+ if value is None:
7853
+ pass
7854
+ else:
7855
+ result.append(value)
7856
+ value = self.subnode_errors
7857
+ if value is None:
7858
+ pass
7859
+ else:
7860
+ result.append(value)
7861
+ value = self.subnode_newline
7862
+ if value is None:
7863
+ pass
7864
+ else:
7865
+ result.append(value)
7866
+ value = self.subnode_closefd
7867
+ if value is None:
7868
+ pass
7869
+ else:
7870
+ result.append(value)
7871
+ value = self.subnode_opener
7872
+ if value is None:
7873
+ pass
7874
+ else:
7875
+ result.append(value)
7876
+ return tuple(result)
7877
+
7878
+ def getVisitableNodesNamed(self):
7879
+ """Named children dictionary.
7880
+
7881
+ For use in cloning nodes, debugging and XML output.
7882
+ """
7883
+
7884
+ return (
7885
+ ("filename", self.subnode_filename),
7886
+ ("mode", self.subnode_mode),
7887
+ ("buffering", self.subnode_buffering),
7888
+ ("encoding", self.subnode_encoding),
7889
+ ("errors", self.subnode_errors),
7890
+ ("newline", self.subnode_newline),
7891
+ ("closefd", self.subnode_closefd),
7892
+ ("opener", self.subnode_opener),
7893
+ )
7894
+
7895
+ def replaceChild(self, old_node, new_node):
7896
+ value = self.subnode_filename
7897
+ if old_node is value:
7898
+ new_node.parent = self
7899
+
7900
+ self.subnode_filename = new_node
7901
+
7902
+ return
7903
+
7904
+ value = self.subnode_mode
7905
+ if old_node is value:
7906
+ if new_node is not None:
7907
+ new_node.parent = self
7908
+
7909
+ self.subnode_mode = new_node
7910
+
7911
+ return
7912
+
7913
+ value = self.subnode_buffering
7914
+ if old_node is value:
7915
+ if new_node is not None:
7916
+ new_node.parent = self
7917
+
7918
+ self.subnode_buffering = new_node
7919
+
7920
+ return
7921
+
7922
+ value = self.subnode_encoding
7923
+ if old_node is value:
7924
+ if new_node is not None:
7925
+ new_node.parent = self
7926
+
7927
+ self.subnode_encoding = new_node
7928
+
7929
+ return
7930
+
7931
+ value = self.subnode_errors
7932
+ if old_node is value:
7933
+ if new_node is not None:
7934
+ new_node.parent = self
7935
+
7936
+ self.subnode_errors = new_node
7937
+
7938
+ return
7939
+
7940
+ value = self.subnode_newline
7941
+ if old_node is value:
7942
+ if new_node is not None:
7943
+ new_node.parent = self
7944
+
7945
+ self.subnode_newline = new_node
7946
+
7947
+ return
7948
+
7949
+ value = self.subnode_closefd
7950
+ if old_node is value:
7951
+ if new_node is not None:
7952
+ new_node.parent = self
7953
+
7954
+ self.subnode_closefd = new_node
7955
+
7956
+ return
7957
+
7958
+ value = self.subnode_opener
7959
+ if old_node is value:
7960
+ if new_node is not None:
7961
+ new_node.parent = self
7962
+
7963
+ self.subnode_opener = new_node
7964
+
7965
+ return
7966
+
7967
+ raise AssertionError("Didn't find child", old_node, "in", self)
7968
+
7969
+ def getCloneArgs(self):
7970
+ """Get clones of all children to pass for a new node.
7971
+
7972
+ Needs to make clones of child nodes too.
7973
+ """
7974
+
7975
+ values = {
7976
+ "filename": self.subnode_filename.makeClone(),
7977
+ "mode": (
7978
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
7979
+ ),
7980
+ "buffering": (
7981
+ self.subnode_buffering.makeClone()
7982
+ if self.subnode_buffering is not None
7983
+ else None
7984
+ ),
7985
+ "encoding": (
7986
+ self.subnode_encoding.makeClone()
7987
+ if self.subnode_encoding is not None
7988
+ else None
7989
+ ),
7990
+ "errors": (
7991
+ self.subnode_errors.makeClone()
7992
+ if self.subnode_errors is not None
7993
+ else None
7994
+ ),
7995
+ "newline": (
7996
+ self.subnode_newline.makeClone()
7997
+ if self.subnode_newline is not None
7998
+ else None
7999
+ ),
8000
+ "closefd": (
8001
+ self.subnode_closefd.makeClone()
8002
+ if self.subnode_closefd is not None
8003
+ else None
8004
+ ),
8005
+ "opener": (
8006
+ self.subnode_opener.makeClone()
8007
+ if self.subnode_opener is not None
8008
+ else None
8009
+ ),
8010
+ }
8011
+
8012
+ values.update(self.getDetails())
8013
+
8014
+ return values
8015
+
8016
+ def finalize(self):
8017
+ del self.parent
8018
+
8019
+ self.subnode_filename.finalize()
8020
+ del self.subnode_filename
8021
+ if self.subnode_mode is not None:
8022
+ self.subnode_mode.finalize()
8023
+ del self.subnode_mode
8024
+ if self.subnode_buffering is not None:
8025
+ self.subnode_buffering.finalize()
8026
+ del self.subnode_buffering
8027
+ if self.subnode_encoding is not None:
8028
+ self.subnode_encoding.finalize()
8029
+ del self.subnode_encoding
8030
+ if self.subnode_errors is not None:
8031
+ self.subnode_errors.finalize()
8032
+ del self.subnode_errors
8033
+ if self.subnode_newline is not None:
8034
+ self.subnode_newline.finalize()
8035
+ del self.subnode_newline
8036
+ if self.subnode_closefd is not None:
8037
+ self.subnode_closefd.finalize()
8038
+ del self.subnode_closefd
8039
+ if self.subnode_opener is not None:
8040
+ self.subnode_opener.finalize()
8041
+ del self.subnode_opener
8042
+
8043
+ def computeExpressionRaw(self, trace_collection):
8044
+ """Compute an expression.
8045
+
8046
+ Default behavior is to just visit the child expressions first, and
8047
+ then the node "computeExpression". For a few cases this needs to
8048
+ be overloaded, e.g. conditional expressions.
8049
+ """
8050
+
8051
+ # First apply the sub-expressions, as they are evaluated before
8052
+ # the actual operation.
8053
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
8054
+ expression = trace_collection.onExpression(sub_expression)
8055
+
8056
+ if expression.willRaiseAnyException():
8057
+ sub_expressions = self.getVisitableNodes()
8058
+
8059
+ wrapped_expression = wrapExpressionWithSideEffects(
8060
+ side_effects=sub_expressions[:count],
8061
+ old_node=sub_expression,
8062
+ new_node=expression,
8063
+ )
8064
+
8065
+ return (
8066
+ wrapped_expression,
8067
+ "new_raise",
8068
+ lambda: "For '%s' the child expression '%s' will raise."
8069
+ % (self.getChildNameNice(), expression.getChildNameNice()),
8070
+ )
8071
+
8072
+ # Then ask ourselves to work on it.
8073
+ return self.computeExpression(trace_collection)
8074
+
8075
+ def collectVariableAccesses(self, emit_read, emit_write):
8076
+ """Collect variable reads and writes of child nodes."""
8077
+
8078
+ self.subnode_filename.collectVariableAccesses(emit_read, emit_write)
8079
+ subnode_mode = self.subnode_mode
8080
+
8081
+ if subnode_mode is not None:
8082
+ self.subnode_mode.collectVariableAccesses(emit_read, emit_write)
8083
+ subnode_buffering = self.subnode_buffering
8084
+
8085
+ if subnode_buffering is not None:
8086
+ self.subnode_buffering.collectVariableAccesses(emit_read, emit_write)
8087
+ subnode_encoding = self.subnode_encoding
8088
+
8089
+ if subnode_encoding is not None:
8090
+ self.subnode_encoding.collectVariableAccesses(emit_read, emit_write)
8091
+ subnode_errors = self.subnode_errors
8092
+
8093
+ if subnode_errors is not None:
8094
+ self.subnode_errors.collectVariableAccesses(emit_read, emit_write)
8095
+ subnode_newline = self.subnode_newline
8096
+
8097
+ if subnode_newline is not None:
8098
+ self.subnode_newline.collectVariableAccesses(emit_read, emit_write)
8099
+ subnode_closefd = self.subnode_closefd
8100
+
8101
+ if subnode_closefd is not None:
8102
+ self.subnode_closefd.collectVariableAccesses(emit_read, emit_write)
8103
+ subnode_opener = self.subnode_opener
8104
+
8105
+ if subnode_opener is not None:
8106
+ self.subnode_opener.collectVariableAccesses(emit_read, emit_write)
8107
+
8108
+
8109
+ # Assign the names that are easier to import with a stable name.
8110
+ ChildrenExpressionBuiltinOpenP3Mixin = ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsOptionalNewlineOptionalClosefdOptionalOpenerOptionalMixin
8111
+
8112
+
8113
+ class ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin(
8114
+ object
8115
+ ):
8116
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
8117
+ __slots__ = ()
8118
+
8119
+ # This is generated for use in
8120
+ # ExpressionTensorflowFunction
8121
+ # ExpressionTensorflowFunctionCall
8122
+
8123
+ def __init__(
8124
+ self,
8125
+ func,
8126
+ input_signature,
8127
+ autograph,
8128
+ jit_compile,
8129
+ reduce_retracing,
8130
+ experimental_implements,
8131
+ experimental_autograph_options,
8132
+ experimental_attributes,
8133
+ experimental_relax_shapes,
8134
+ experimental_compile,
8135
+ experimental_follow_type_hints,
8136
+ ):
8137
+ if func is not None:
8138
+ func.parent = self
8139
+
8140
+ self.subnode_func = func
8141
+
8142
+ if input_signature is not None:
8143
+ input_signature.parent = self
8144
+
8145
+ self.subnode_input_signature = input_signature
8146
+
8147
+ if autograph is not None:
8148
+ autograph.parent = self
8149
+
8150
+ self.subnode_autograph = autograph
8151
+
8152
+ if jit_compile is not None:
8153
+ jit_compile.parent = self
8154
+
8155
+ self.subnode_jit_compile = jit_compile
8156
+
8157
+ if reduce_retracing is not None:
8158
+ reduce_retracing.parent = self
8159
+
8160
+ self.subnode_reduce_retracing = reduce_retracing
8161
+
8162
+ if experimental_implements is not None:
8163
+ experimental_implements.parent = self
8164
+
8165
+ self.subnode_experimental_implements = experimental_implements
8166
+
8167
+ if experimental_autograph_options is not None:
8168
+ experimental_autograph_options.parent = self
8169
+
8170
+ self.subnode_experimental_autograph_options = experimental_autograph_options
8171
+
8172
+ if experimental_attributes is not None:
8173
+ experimental_attributes.parent = self
8174
+
8175
+ self.subnode_experimental_attributes = experimental_attributes
8176
+
8177
+ if experimental_relax_shapes is not None:
8178
+ experimental_relax_shapes.parent = self
8179
+
8180
+ self.subnode_experimental_relax_shapes = experimental_relax_shapes
8181
+
8182
+ if experimental_compile is not None:
8183
+ experimental_compile.parent = self
8184
+
8185
+ self.subnode_experimental_compile = experimental_compile
8186
+
8187
+ if experimental_follow_type_hints is not None:
8188
+ experimental_follow_type_hints.parent = self
8189
+
8190
+ self.subnode_experimental_follow_type_hints = experimental_follow_type_hints
7585
8191
 
7586
8192
  def getVisitableNodes(self):
7587
8193
  """The visitable nodes, with tuple values flattened."""
7588
8194
 
7589
8195
  result = []
7590
- result.append(self.subnode_filename)
7591
- value = self.subnode_mode
8196
+ value = self.subnode_func
7592
8197
  if value is None:
7593
8198
  pass
7594
8199
  else:
7595
8200
  result.append(value)
7596
- value = self.subnode_buffering
8201
+ value = self.subnode_input_signature
7597
8202
  if value is None:
7598
8203
  pass
7599
8204
  else:
7600
8205
  result.append(value)
7601
- value = self.subnode_encoding
8206
+ value = self.subnode_autograph
7602
8207
  if value is None:
7603
8208
  pass
7604
8209
  else:
7605
8210
  result.append(value)
7606
- value = self.subnode_errors
8211
+ value = self.subnode_jit_compile
7607
8212
  if value is None:
7608
8213
  pass
7609
8214
  else:
7610
8215
  result.append(value)
7611
- value = self.subnode_newline
8216
+ value = self.subnode_reduce_retracing
7612
8217
  if value is None:
7613
8218
  pass
7614
8219
  else:
7615
8220
  result.append(value)
7616
- value = self.subnode_closefd
8221
+ value = self.subnode_experimental_implements
7617
8222
  if value is None:
7618
8223
  pass
7619
8224
  else:
7620
8225
  result.append(value)
7621
- value = self.subnode_opener
8226
+ value = self.subnode_experimental_autograph_options
8227
+ if value is None:
8228
+ pass
8229
+ else:
8230
+ result.append(value)
8231
+ value = self.subnode_experimental_attributes
8232
+ if value is None:
8233
+ pass
8234
+ else:
8235
+ result.append(value)
8236
+ value = self.subnode_experimental_relax_shapes
8237
+ if value is None:
8238
+ pass
8239
+ else:
8240
+ result.append(value)
8241
+ value = self.subnode_experimental_compile
8242
+ if value is None:
8243
+ pass
8244
+ else:
8245
+ result.append(value)
8246
+ value = self.subnode_experimental_follow_type_hints
7622
8247
  if value is None:
7623
8248
  pass
7624
8249
  else:
@@ -7632,85 +8257,122 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
7632
8257
  """
7633
8258
 
7634
8259
  return (
7635
- ("filename", self.subnode_filename),
7636
- ("mode", self.subnode_mode),
7637
- ("buffering", self.subnode_buffering),
7638
- ("encoding", self.subnode_encoding),
7639
- ("errors", self.subnode_errors),
7640
- ("newline", self.subnode_newline),
7641
- ("closefd", self.subnode_closefd),
7642
- ("opener", self.subnode_opener),
8260
+ ("func", self.subnode_func),
8261
+ ("input_signature", self.subnode_input_signature),
8262
+ ("autograph", self.subnode_autograph),
8263
+ ("jit_compile", self.subnode_jit_compile),
8264
+ ("reduce_retracing", self.subnode_reduce_retracing),
8265
+ ("experimental_implements", self.subnode_experimental_implements),
8266
+ (
8267
+ "experimental_autograph_options",
8268
+ self.subnode_experimental_autograph_options,
8269
+ ),
8270
+ ("experimental_attributes", self.subnode_experimental_attributes),
8271
+ ("experimental_relax_shapes", self.subnode_experimental_relax_shapes),
8272
+ ("experimental_compile", self.subnode_experimental_compile),
8273
+ (
8274
+ "experimental_follow_type_hints",
8275
+ self.subnode_experimental_follow_type_hints,
8276
+ ),
7643
8277
  )
7644
8278
 
7645
8279
  def replaceChild(self, old_node, new_node):
7646
- value = self.subnode_filename
8280
+ value = self.subnode_func
7647
8281
  if old_node is value:
7648
- new_node.parent = self
8282
+ if new_node is not None:
8283
+ new_node.parent = self
7649
8284
 
7650
- self.subnode_filename = new_node
8285
+ self.subnode_func = new_node
7651
8286
 
7652
8287
  return
7653
8288
 
7654
- value = self.subnode_mode
8289
+ value = self.subnode_input_signature
7655
8290
  if old_node is value:
7656
8291
  if new_node is not None:
7657
8292
  new_node.parent = self
7658
8293
 
7659
- self.subnode_mode = new_node
8294
+ self.subnode_input_signature = new_node
7660
8295
 
7661
8296
  return
7662
8297
 
7663
- value = self.subnode_buffering
8298
+ value = self.subnode_autograph
7664
8299
  if old_node is value:
7665
8300
  if new_node is not None:
7666
8301
  new_node.parent = self
7667
8302
 
7668
- self.subnode_buffering = new_node
8303
+ self.subnode_autograph = new_node
7669
8304
 
7670
8305
  return
7671
8306
 
7672
- value = self.subnode_encoding
8307
+ value = self.subnode_jit_compile
7673
8308
  if old_node is value:
7674
8309
  if new_node is not None:
7675
8310
  new_node.parent = self
7676
8311
 
7677
- self.subnode_encoding = new_node
8312
+ self.subnode_jit_compile = new_node
7678
8313
 
7679
8314
  return
7680
8315
 
7681
- value = self.subnode_errors
8316
+ value = self.subnode_reduce_retracing
7682
8317
  if old_node is value:
7683
8318
  if new_node is not None:
7684
8319
  new_node.parent = self
7685
8320
 
7686
- self.subnode_errors = new_node
8321
+ self.subnode_reduce_retracing = new_node
7687
8322
 
7688
8323
  return
7689
8324
 
7690
- value = self.subnode_newline
8325
+ value = self.subnode_experimental_implements
7691
8326
  if old_node is value:
7692
8327
  if new_node is not None:
7693
8328
  new_node.parent = self
7694
8329
 
7695
- self.subnode_newline = new_node
8330
+ self.subnode_experimental_implements = new_node
7696
8331
 
7697
8332
  return
7698
8333
 
7699
- value = self.subnode_closefd
8334
+ value = self.subnode_experimental_autograph_options
7700
8335
  if old_node is value:
7701
8336
  if new_node is not None:
7702
8337
  new_node.parent = self
7703
8338
 
7704
- self.subnode_closefd = new_node
8339
+ self.subnode_experimental_autograph_options = new_node
7705
8340
 
7706
8341
  return
7707
8342
 
7708
- value = self.subnode_opener
8343
+ value = self.subnode_experimental_attributes
7709
8344
  if old_node is value:
7710
8345
  if new_node is not None:
7711
8346
  new_node.parent = self
7712
8347
 
7713
- self.subnode_opener = new_node
8348
+ self.subnode_experimental_attributes = new_node
8349
+
8350
+ return
8351
+
8352
+ value = self.subnode_experimental_relax_shapes
8353
+ if old_node is value:
8354
+ if new_node is not None:
8355
+ new_node.parent = self
8356
+
8357
+ self.subnode_experimental_relax_shapes = new_node
8358
+
8359
+ return
8360
+
8361
+ value = self.subnode_experimental_compile
8362
+ if old_node is value:
8363
+ if new_node is not None:
8364
+ new_node.parent = self
8365
+
8366
+ self.subnode_experimental_compile = new_node
8367
+
8368
+ return
8369
+
8370
+ value = self.subnode_experimental_follow_type_hints
8371
+ if old_node is value:
8372
+ if new_node is not None:
8373
+ new_node.parent = self
8374
+
8375
+ self.subnode_experimental_follow_type_hints = new_node
7714
8376
 
7715
8377
  return
7716
8378
 
@@ -7723,28 +8385,59 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
7723
8385
  """
7724
8386
 
7725
8387
  values = {
7726
- "filename": self.subnode_filename.makeClone(),
7727
- "mode": self.subnode_mode.makeClone()
7728
- if self.subnode_mode is not None
7729
- else None,
7730
- "buffering": self.subnode_buffering.makeClone()
7731
- if self.subnode_buffering is not None
7732
- else None,
7733
- "encoding": self.subnode_encoding.makeClone()
7734
- if self.subnode_encoding is not None
7735
- else None,
7736
- "errors": self.subnode_errors.makeClone()
7737
- if self.subnode_errors is not None
7738
- else None,
7739
- "newline": self.subnode_newline.makeClone()
7740
- if self.subnode_newline is not None
7741
- else None,
7742
- "closefd": self.subnode_closefd.makeClone()
7743
- if self.subnode_closefd is not None
7744
- else None,
7745
- "opener": self.subnode_opener.makeClone()
7746
- if self.subnode_opener is not None
7747
- else None,
8388
+ "func": (
8389
+ self.subnode_func.makeClone() if self.subnode_func is not None else None
8390
+ ),
8391
+ "input_signature": (
8392
+ self.subnode_input_signature.makeClone()
8393
+ if self.subnode_input_signature is not None
8394
+ else None
8395
+ ),
8396
+ "autograph": (
8397
+ self.subnode_autograph.makeClone()
8398
+ if self.subnode_autograph is not None
8399
+ else None
8400
+ ),
8401
+ "jit_compile": (
8402
+ self.subnode_jit_compile.makeClone()
8403
+ if self.subnode_jit_compile is not None
8404
+ else None
8405
+ ),
8406
+ "reduce_retracing": (
8407
+ self.subnode_reduce_retracing.makeClone()
8408
+ if self.subnode_reduce_retracing is not None
8409
+ else None
8410
+ ),
8411
+ "experimental_implements": (
8412
+ self.subnode_experimental_implements.makeClone()
8413
+ if self.subnode_experimental_implements is not None
8414
+ else None
8415
+ ),
8416
+ "experimental_autograph_options": (
8417
+ self.subnode_experimental_autograph_options.makeClone()
8418
+ if self.subnode_experimental_autograph_options is not None
8419
+ else None
8420
+ ),
8421
+ "experimental_attributes": (
8422
+ self.subnode_experimental_attributes.makeClone()
8423
+ if self.subnode_experimental_attributes is not None
8424
+ else None
8425
+ ),
8426
+ "experimental_relax_shapes": (
8427
+ self.subnode_experimental_relax_shapes.makeClone()
8428
+ if self.subnode_experimental_relax_shapes is not None
8429
+ else None
8430
+ ),
8431
+ "experimental_compile": (
8432
+ self.subnode_experimental_compile.makeClone()
8433
+ if self.subnode_experimental_compile is not None
8434
+ else None
8435
+ ),
8436
+ "experimental_follow_type_hints": (
8437
+ self.subnode_experimental_follow_type_hints.makeClone()
8438
+ if self.subnode_experimental_follow_type_hints is not None
8439
+ else None
8440
+ ),
7748
8441
  }
7749
8442
 
7750
8443
  values.update(self.getDetails())
@@ -7754,29 +8447,39 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
7754
8447
  def finalize(self):
7755
8448
  del self.parent
7756
8449
 
7757
- self.subnode_filename.finalize()
7758
- del self.subnode_filename
7759
- if self.subnode_mode is not None:
7760
- self.subnode_mode.finalize()
7761
- del self.subnode_mode
7762
- if self.subnode_buffering is not None:
7763
- self.subnode_buffering.finalize()
7764
- del self.subnode_buffering
7765
- if self.subnode_encoding is not None:
7766
- self.subnode_encoding.finalize()
7767
- del self.subnode_encoding
7768
- if self.subnode_errors is not None:
7769
- self.subnode_errors.finalize()
7770
- del self.subnode_errors
7771
- if self.subnode_newline is not None:
7772
- self.subnode_newline.finalize()
7773
- del self.subnode_newline
7774
- if self.subnode_closefd is not None:
7775
- self.subnode_closefd.finalize()
7776
- del self.subnode_closefd
7777
- if self.subnode_opener is not None:
7778
- self.subnode_opener.finalize()
7779
- del self.subnode_opener
8450
+ if self.subnode_func is not None:
8451
+ self.subnode_func.finalize()
8452
+ del self.subnode_func
8453
+ if self.subnode_input_signature is not None:
8454
+ self.subnode_input_signature.finalize()
8455
+ del self.subnode_input_signature
8456
+ if self.subnode_autograph is not None:
8457
+ self.subnode_autograph.finalize()
8458
+ del self.subnode_autograph
8459
+ if self.subnode_jit_compile is not None:
8460
+ self.subnode_jit_compile.finalize()
8461
+ del self.subnode_jit_compile
8462
+ if self.subnode_reduce_retracing is not None:
8463
+ self.subnode_reduce_retracing.finalize()
8464
+ del self.subnode_reduce_retracing
8465
+ if self.subnode_experimental_implements is not None:
8466
+ self.subnode_experimental_implements.finalize()
8467
+ del self.subnode_experimental_implements
8468
+ if self.subnode_experimental_autograph_options is not None:
8469
+ self.subnode_experimental_autograph_options.finalize()
8470
+ del self.subnode_experimental_autograph_options
8471
+ if self.subnode_experimental_attributes is not None:
8472
+ self.subnode_experimental_attributes.finalize()
8473
+ del self.subnode_experimental_attributes
8474
+ if self.subnode_experimental_relax_shapes is not None:
8475
+ self.subnode_experimental_relax_shapes.finalize()
8476
+ del self.subnode_experimental_relax_shapes
8477
+ if self.subnode_experimental_compile is not None:
8478
+ self.subnode_experimental_compile.finalize()
8479
+ del self.subnode_experimental_compile
8480
+ if self.subnode_experimental_follow_type_hints is not None:
8481
+ self.subnode_experimental_follow_type_hints.finalize()
8482
+ del self.subnode_experimental_follow_type_hints
7780
8483
 
7781
8484
  def computeExpressionRaw(self, trace_collection):
7782
8485
  """Compute an expression.
@@ -7813,39 +8516,71 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
7813
8516
  def collectVariableAccesses(self, emit_read, emit_write):
7814
8517
  """Collect variable reads and writes of child nodes."""
7815
8518
 
7816
- self.subnode_filename.collectVariableAccesses(emit_read, emit_write)
7817
- subnode_mode = self.subnode_mode
8519
+ subnode_func = self.subnode_func
7818
8520
 
7819
- if subnode_mode is not None:
7820
- self.subnode_mode.collectVariableAccesses(emit_read, emit_write)
7821
- subnode_buffering = self.subnode_buffering
8521
+ if subnode_func is not None:
8522
+ self.subnode_func.collectVariableAccesses(emit_read, emit_write)
8523
+ subnode_input_signature = self.subnode_input_signature
7822
8524
 
7823
- if subnode_buffering is not None:
7824
- self.subnode_buffering.collectVariableAccesses(emit_read, emit_write)
7825
- subnode_encoding = self.subnode_encoding
8525
+ if subnode_input_signature is not None:
8526
+ self.subnode_input_signature.collectVariableAccesses(emit_read, emit_write)
8527
+ subnode_autograph = self.subnode_autograph
7826
8528
 
7827
- if subnode_encoding is not None:
7828
- self.subnode_encoding.collectVariableAccesses(emit_read, emit_write)
7829
- subnode_errors = self.subnode_errors
8529
+ if subnode_autograph is not None:
8530
+ self.subnode_autograph.collectVariableAccesses(emit_read, emit_write)
8531
+ subnode_jit_compile = self.subnode_jit_compile
7830
8532
 
7831
- if subnode_errors is not None:
7832
- self.subnode_errors.collectVariableAccesses(emit_read, emit_write)
7833
- subnode_newline = self.subnode_newline
8533
+ if subnode_jit_compile is not None:
8534
+ self.subnode_jit_compile.collectVariableAccesses(emit_read, emit_write)
8535
+ subnode_reduce_retracing = self.subnode_reduce_retracing
7834
8536
 
7835
- if subnode_newline is not None:
7836
- self.subnode_newline.collectVariableAccesses(emit_read, emit_write)
7837
- subnode_closefd = self.subnode_closefd
8537
+ if subnode_reduce_retracing is not None:
8538
+ self.subnode_reduce_retracing.collectVariableAccesses(emit_read, emit_write)
8539
+ subnode_experimental_implements = self.subnode_experimental_implements
7838
8540
 
7839
- if subnode_closefd is not None:
7840
- self.subnode_closefd.collectVariableAccesses(emit_read, emit_write)
7841
- subnode_opener = self.subnode_opener
8541
+ if subnode_experimental_implements is not None:
8542
+ self.subnode_experimental_implements.collectVariableAccesses(
8543
+ emit_read, emit_write
8544
+ )
8545
+ subnode_experimental_autograph_options = (
8546
+ self.subnode_experimental_autograph_options
8547
+ )
7842
8548
 
7843
- if subnode_opener is not None:
7844
- self.subnode_opener.collectVariableAccesses(emit_read, emit_write)
8549
+ if subnode_experimental_autograph_options is not None:
8550
+ self.subnode_experimental_autograph_options.collectVariableAccesses(
8551
+ emit_read, emit_write
8552
+ )
8553
+ subnode_experimental_attributes = self.subnode_experimental_attributes
8554
+
8555
+ if subnode_experimental_attributes is not None:
8556
+ self.subnode_experimental_attributes.collectVariableAccesses(
8557
+ emit_read, emit_write
8558
+ )
8559
+ subnode_experimental_relax_shapes = self.subnode_experimental_relax_shapes
8560
+
8561
+ if subnode_experimental_relax_shapes is not None:
8562
+ self.subnode_experimental_relax_shapes.collectVariableAccesses(
8563
+ emit_read, emit_write
8564
+ )
8565
+ subnode_experimental_compile = self.subnode_experimental_compile
8566
+
8567
+ if subnode_experimental_compile is not None:
8568
+ self.subnode_experimental_compile.collectVariableAccesses(
8569
+ emit_read, emit_write
8570
+ )
8571
+ subnode_experimental_follow_type_hints = (
8572
+ self.subnode_experimental_follow_type_hints
8573
+ )
8574
+
8575
+ if subnode_experimental_follow_type_hints is not None:
8576
+ self.subnode_experimental_follow_type_hints.collectVariableAccesses(
8577
+ emit_read, emit_write
8578
+ )
7845
8579
 
7846
8580
 
7847
8581
  # Assign the names that are easier to import with a stable name.
7848
- ChildrenExpressionBuiltinOpenP3Mixin = ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsOptionalNewlineOptionalClosefdOptionalOpenerOptionalMixin
8582
+ ChildrenExpressionTensorflowFunctionMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
8583
+ ChildrenExpressionTensorflowFunctionCallMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
7849
8584
 
7850
8585
 
7851
8586
  class ChildrenHavingFunctionValuesTupleMixin(object):
@@ -8146,9 +8881,9 @@ class ChildrenHavingGroupNameOptionalMixin(object):
8146
8881
 
8147
8882
  values = {
8148
8883
  "group": self.subnode_group.makeClone(),
8149
- "name": self.subnode_name.makeClone()
8150
- if self.subnode_name is not None
8151
- else None,
8884
+ "name": (
8885
+ self.subnode_name.makeClone() if self.subnode_name is not None else None
8886
+ ),
8152
8887
  }
8153
8888
 
8154
8889
  values.update(self.getDetails())
@@ -9047,13 +9782,17 @@ class ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRe
9047
9782
  """
9048
9783
 
9049
9784
  values = {
9050
- "kw_defaults": self.subnode_kw_defaults.makeClone()
9051
- if self.subnode_kw_defaults is not None
9052
- else None,
9785
+ "kw_defaults": (
9786
+ self.subnode_kw_defaults.makeClone()
9787
+ if self.subnode_kw_defaults is not None
9788
+ else None
9789
+ ),
9053
9790
  "defaults": tuple(v.makeClone() for v in self.subnode_defaults),
9054
- "annotations": self.subnode_annotations.makeClone()
9055
- if self.subnode_annotations is not None
9056
- else None,
9791
+ "annotations": (
9792
+ self.subnode_annotations.makeClone()
9793
+ if self.subnode_annotations is not None
9794
+ else None
9795
+ ),
9057
9796
  "function_ref": self.subnode_function_ref.makeClone(),
9058
9797
  }
9059
9798
 
@@ -9907,9 +10646,9 @@ class ChildrenHavingListArgKeyOptionalReverseMixin(object):
9907
10646
 
9908
10647
  values = {
9909
10648
  "list_arg": self.subnode_list_arg.makeClone(),
9910
- "key": self.subnode_key.makeClone()
9911
- if self.subnode_key is not None
9912
- else None,
10649
+ "key": (
10650
+ self.subnode_key.makeClone() if self.subnode_key is not None else None
10651
+ ),
9913
10652
  "reverse": self.subnode_reverse.makeClone(),
9914
10653
  }
9915
10654
 
@@ -11131,18 +11870,26 @@ class ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevel
11131
11870
 
11132
11871
  values = {
11133
11872
  "name": self.subnode_name.makeClone(),
11134
- "globals_arg": self.subnode_globals_arg.makeClone()
11135
- if self.subnode_globals_arg is not None
11136
- else None,
11137
- "locals_arg": self.subnode_locals_arg.makeClone()
11138
- if self.subnode_locals_arg is not None
11139
- else None,
11140
- "fromlist": self.subnode_fromlist.makeClone()
11141
- if self.subnode_fromlist is not None
11142
- else None,
11143
- "level": self.subnode_level.makeClone()
11144
- if self.subnode_level is not None
11145
- else None,
11873
+ "globals_arg": (
11874
+ self.subnode_globals_arg.makeClone()
11875
+ if self.subnode_globals_arg is not None
11876
+ else None
11877
+ ),
11878
+ "locals_arg": (
11879
+ self.subnode_locals_arg.makeClone()
11880
+ if self.subnode_locals_arg is not None
11881
+ else None
11882
+ ),
11883
+ "fromlist": (
11884
+ self.subnode_fromlist.makeClone()
11885
+ if self.subnode_fromlist is not None
11886
+ else None
11887
+ ),
11888
+ "level": (
11889
+ self.subnode_level.makeClone()
11890
+ if self.subnode_level is not None
11891
+ else None
11892
+ ),
11146
11893
  }
11147
11894
 
11148
11895
  values.update(self.getDetails())
@@ -11225,7 +11972,7 @@ class ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevel
11225
11972
  ChildrenExpressionBuiltinImportMixin = ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevelOptionalMixin
11226
11973
 
11227
11974
 
11228
- class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOptionalMixin(
11975
+ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalMixin(
11229
11976
  object
11230
11977
  ):
11231
11978
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
@@ -11240,7 +11987,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11240
11987
  mode,
11241
11988
  handle,
11242
11989
  use_errno,
11243
- use_lasterror,
11990
+ use_last_error,
11244
11991
  ):
11245
11992
  name.parent = self
11246
11993
 
@@ -11261,10 +12008,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11261
12008
 
11262
12009
  self.subnode_use_errno = use_errno
11263
12010
 
11264
- if use_lasterror is not None:
11265
- use_lasterror.parent = self
12011
+ if use_last_error is not None:
12012
+ use_last_error.parent = self
11266
12013
 
11267
- self.subnode_use_lasterror = use_lasterror
12014
+ self.subnode_use_last_error = use_last_error
11268
12015
 
11269
12016
  def getVisitableNodes(self):
11270
12017
  """The visitable nodes, with tuple values flattened."""
@@ -11286,7 +12033,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11286
12033
  pass
11287
12034
  else:
11288
12035
  result.append(value)
11289
- value = self.subnode_use_lasterror
12036
+ value = self.subnode_use_last_error
11290
12037
  if value is None:
11291
12038
  pass
11292
12039
  else:
@@ -11304,7 +12051,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11304
12051
  ("mode", self.subnode_mode),
11305
12052
  ("handle", self.subnode_handle),
11306
12053
  ("use_errno", self.subnode_use_errno),
11307
- ("use_lasterror", self.subnode_use_lasterror),
12054
+ ("use_last_error", self.subnode_use_last_error),
11308
12055
  )
11309
12056
 
11310
12057
  def replaceChild(self, old_node, new_node):
@@ -11343,12 +12090,12 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11343
12090
 
11344
12091
  return
11345
12092
 
11346
- value = self.subnode_use_lasterror
12093
+ value = self.subnode_use_last_error
11347
12094
  if old_node is value:
11348
12095
  if new_node is not None:
11349
12096
  new_node.parent = self
11350
12097
 
11351
- self.subnode_use_lasterror = new_node
12098
+ self.subnode_use_last_error = new_node
11352
12099
 
11353
12100
  return
11354
12101
 
@@ -11362,18 +12109,24 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11362
12109
 
11363
12110
  values = {
11364
12111
  "name": self.subnode_name.makeClone(),
11365
- "mode": self.subnode_mode.makeClone()
11366
- if self.subnode_mode is not None
11367
- else None,
11368
- "handle": self.subnode_handle.makeClone()
11369
- if self.subnode_handle is not None
11370
- else None,
11371
- "use_errno": self.subnode_use_errno.makeClone()
11372
- if self.subnode_use_errno is not None
11373
- else None,
11374
- "use_lasterror": self.subnode_use_lasterror.makeClone()
11375
- if self.subnode_use_lasterror is not None
11376
- else None,
12112
+ "mode": (
12113
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
12114
+ ),
12115
+ "handle": (
12116
+ self.subnode_handle.makeClone()
12117
+ if self.subnode_handle is not None
12118
+ else None
12119
+ ),
12120
+ "use_errno": (
12121
+ self.subnode_use_errno.makeClone()
12122
+ if self.subnode_use_errno is not None
12123
+ else None
12124
+ ),
12125
+ "use_last_error": (
12126
+ self.subnode_use_last_error.makeClone()
12127
+ if self.subnode_use_last_error is not None
12128
+ else None
12129
+ ),
11377
12130
  }
11378
12131
 
11379
12132
  values.update(self.getDetails())
@@ -11394,9 +12147,9 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11394
12147
  if self.subnode_use_errno is not None:
11395
12148
  self.subnode_use_errno.finalize()
11396
12149
  del self.subnode_use_errno
11397
- if self.subnode_use_lasterror is not None:
11398
- self.subnode_use_lasterror.finalize()
11399
- del self.subnode_use_lasterror
12150
+ if self.subnode_use_last_error is not None:
12151
+ self.subnode_use_last_error.finalize()
12152
+ del self.subnode_use_last_error
11400
12153
 
11401
12154
  def computeExpressionRaw(self, trace_collection):
11402
12155
  """Compute an expression.
@@ -11446,17 +12199,17 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11446
12199
 
11447
12200
  if subnode_use_errno is not None:
11448
12201
  self.subnode_use_errno.collectVariableAccesses(emit_read, emit_write)
11449
- subnode_use_lasterror = self.subnode_use_lasterror
12202
+ subnode_use_last_error = self.subnode_use_last_error
11450
12203
 
11451
- if subnode_use_lasterror is not None:
11452
- self.subnode_use_lasterror.collectVariableAccesses(emit_read, emit_write)
12204
+ if subnode_use_last_error is not None:
12205
+ self.subnode_use_last_error.collectVariableAccesses(emit_read, emit_write)
11453
12206
 
11454
12207
 
11455
12208
  # Assign the names that are easier to import with a stable name.
11456
- ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOptionalMixin
12209
+ ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalMixin
11457
12210
 
11458
12211
 
11459
- class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOptionalWinmodeOptionalMixin(
12212
+ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalWinmodeOptionalMixin(
11460
12213
  object
11461
12214
  ):
11462
12215
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
@@ -11471,7 +12224,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11471
12224
  mode,
11472
12225
  handle,
11473
12226
  use_errno,
11474
- use_lasterror,
12227
+ use_last_error,
11475
12228
  winmode,
11476
12229
  ):
11477
12230
  name.parent = self
@@ -11493,10 +12246,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11493
12246
 
11494
12247
  self.subnode_use_errno = use_errno
11495
12248
 
11496
- if use_lasterror is not None:
11497
- use_lasterror.parent = self
12249
+ if use_last_error is not None:
12250
+ use_last_error.parent = self
11498
12251
 
11499
- self.subnode_use_lasterror = use_lasterror
12252
+ self.subnode_use_last_error = use_last_error
11500
12253
 
11501
12254
  if winmode is not None:
11502
12255
  winmode.parent = self
@@ -11523,7 +12276,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11523
12276
  pass
11524
12277
  else:
11525
12278
  result.append(value)
11526
- value = self.subnode_use_lasterror
12279
+ value = self.subnode_use_last_error
11527
12280
  if value is None:
11528
12281
  pass
11529
12282
  else:
@@ -11546,7 +12299,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11546
12299
  ("mode", self.subnode_mode),
11547
12300
  ("handle", self.subnode_handle),
11548
12301
  ("use_errno", self.subnode_use_errno),
11549
- ("use_lasterror", self.subnode_use_lasterror),
12302
+ ("use_last_error", self.subnode_use_last_error),
11550
12303
  ("winmode", self.subnode_winmode),
11551
12304
  )
11552
12305
 
@@ -11586,12 +12339,12 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11586
12339
 
11587
12340
  return
11588
12341
 
11589
- value = self.subnode_use_lasterror
12342
+ value = self.subnode_use_last_error
11590
12343
  if old_node is value:
11591
12344
  if new_node is not None:
11592
12345
  new_node.parent = self
11593
12346
 
11594
- self.subnode_use_lasterror = new_node
12347
+ self.subnode_use_last_error = new_node
11595
12348
 
11596
12349
  return
11597
12350
 
@@ -11614,21 +12367,29 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11614
12367
 
11615
12368
  values = {
11616
12369
  "name": self.subnode_name.makeClone(),
11617
- "mode": self.subnode_mode.makeClone()
11618
- if self.subnode_mode is not None
11619
- else None,
11620
- "handle": self.subnode_handle.makeClone()
11621
- if self.subnode_handle is not None
11622
- else None,
11623
- "use_errno": self.subnode_use_errno.makeClone()
11624
- if self.subnode_use_errno is not None
11625
- else None,
11626
- "use_lasterror": self.subnode_use_lasterror.makeClone()
11627
- if self.subnode_use_lasterror is not None
11628
- else None,
11629
- "winmode": self.subnode_winmode.makeClone()
11630
- if self.subnode_winmode is not None
11631
- else None,
12370
+ "mode": (
12371
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
12372
+ ),
12373
+ "handle": (
12374
+ self.subnode_handle.makeClone()
12375
+ if self.subnode_handle is not None
12376
+ else None
12377
+ ),
12378
+ "use_errno": (
12379
+ self.subnode_use_errno.makeClone()
12380
+ if self.subnode_use_errno is not None
12381
+ else None
12382
+ ),
12383
+ "use_last_error": (
12384
+ self.subnode_use_last_error.makeClone()
12385
+ if self.subnode_use_last_error is not None
12386
+ else None
12387
+ ),
12388
+ "winmode": (
12389
+ self.subnode_winmode.makeClone()
12390
+ if self.subnode_winmode is not None
12391
+ else None
12392
+ ),
11632
12393
  }
11633
12394
 
11634
12395
  values.update(self.getDetails())
@@ -11649,9 +12410,9 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11649
12410
  if self.subnode_use_errno is not None:
11650
12411
  self.subnode_use_errno.finalize()
11651
12412
  del self.subnode_use_errno
11652
- if self.subnode_use_lasterror is not None:
11653
- self.subnode_use_lasterror.finalize()
11654
- del self.subnode_use_lasterror
12413
+ if self.subnode_use_last_error is not None:
12414
+ self.subnode_use_last_error.finalize()
12415
+ del self.subnode_use_last_error
11655
12416
  if self.subnode_winmode is not None:
11656
12417
  self.subnode_winmode.finalize()
11657
12418
  del self.subnode_winmode
@@ -11704,10 +12465,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11704
12465
 
11705
12466
  if subnode_use_errno is not None:
11706
12467
  self.subnode_use_errno.collectVariableAccesses(emit_read, emit_write)
11707
- subnode_use_lasterror = self.subnode_use_lasterror
12468
+ subnode_use_last_error = self.subnode_use_last_error
11708
12469
 
11709
- if subnode_use_lasterror is not None:
11710
- self.subnode_use_lasterror.collectVariableAccesses(emit_read, emit_write)
12470
+ if subnode_use_last_error is not None:
12471
+ self.subnode_use_last_error.collectVariableAccesses(emit_read, emit_write)
11711
12472
  subnode_winmode = self.subnode_winmode
11712
12473
 
11713
12474
  if subnode_winmode is not None:
@@ -11715,7 +12476,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
11715
12476
 
11716
12477
 
11717
12478
  # Assign the names that are easier to import with a stable name.
11718
- ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOptionalWinmodeOptionalMixin
12479
+ ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalWinmodeOptionalMixin
11719
12480
 
11720
12481
 
11721
12482
  class ChildrenHavingNamePackageOptionalMixin(object):
@@ -11790,9 +12551,11 @@ class ChildrenHavingNamePackageOptionalMixin(object):
11790
12551
 
11791
12552
  values = {
11792
12553
  "name": self.subnode_name.makeClone(),
11793
- "package": self.subnode_package.makeClone()
11794
- if self.subnode_package is not None
11795
- else None,
12554
+ "package": (
12555
+ self.subnode_package.makeClone()
12556
+ if self.subnode_package is not None
12557
+ else None
12558
+ ),
11796
12559
  }
11797
12560
 
11798
12561
  values.update(self.getDetails())
@@ -11963,6 +12726,7 @@ class ChildHavingPMixin(object):
11963
12726
 
11964
12727
  # This is generated for use in
11965
12728
  # ExpressionOsPathBasename
12729
+ # ExpressionOsPathDirname
11966
12730
 
11967
12731
  def __init__(
11968
12732
  self,
@@ -12046,6 +12810,7 @@ class ChildHavingPMixin(object):
12046
12810
 
12047
12811
  # Assign the names that are easier to import with a stable name.
12048
12812
  ChildrenExpressionOsPathBasenameMixin = ChildHavingPMixin
12813
+ ChildrenExpressionOsPathDirnameMixin = ChildHavingPMixin
12049
12814
 
12050
12815
 
12051
12816
  class ChildHavingPackageMixin(object):
@@ -12397,12 +13162,16 @@ class ChildrenHavingPackageResourceEncodingOptionalErrorsOptionalMixin(object):
12397
13162
  values = {
12398
13163
  "package": self.subnode_package.makeClone(),
12399
13164
  "resource": self.subnode_resource.makeClone(),
12400
- "encoding": self.subnode_encoding.makeClone()
12401
- if self.subnode_encoding is not None
12402
- else None,
12403
- "errors": self.subnode_errors.makeClone()
12404
- if self.subnode_errors is not None
12405
- else None,
13165
+ "encoding": (
13166
+ self.subnode_encoding.makeClone()
13167
+ if self.subnode_encoding is not None
13168
+ else None
13169
+ ),
13170
+ "errors": (
13171
+ self.subnode_errors.makeClone()
13172
+ if self.subnode_errors is not None
13173
+ else None
13174
+ ),
12406
13175
  }
12407
13176
 
12408
13177
  values.update(self.getDetails())
@@ -12872,6 +13641,7 @@ class ChildHavingPathMixin(object):
12872
13641
  # ExpressionOsPathExists
12873
13642
  # ExpressionOsPathIsdir
12874
13643
  # ExpressionOsPathIsfile
13644
+ # ExpressionOsPathNormpath
12875
13645
 
12876
13646
  def __init__(
12877
13647
  self,
@@ -12958,6 +13728,7 @@ ChildrenExpressionOsPathAbspathMixin = ChildHavingPathMixin
12958
13728
  ChildrenExpressionOsPathExistsMixin = ChildHavingPathMixin
12959
13729
  ChildrenExpressionOsPathIsdirMixin = ChildHavingPathMixin
12960
13730
  ChildrenExpressionOsPathIsfileMixin = ChildHavingPathMixin
13731
+ ChildrenExpressionOsPathNormpathMixin = ChildHavingPathMixin
12961
13732
 
12962
13733
 
12963
13734
  class ChildHavingPathOptionalMixin(object):
@@ -13013,9 +13784,9 @@ class ChildHavingPathOptionalMixin(object):
13013
13784
  """
13014
13785
 
13015
13786
  values = {
13016
- "path": self.subnode_path.makeClone()
13017
- if self.subnode_path is not None
13018
- else None,
13787
+ "path": (
13788
+ self.subnode_path.makeClone() if self.subnode_path is not None else None
13789
+ ),
13019
13790
  }
13020
13791
 
13021
13792
  values.update(self.getDetails())
@@ -13146,9 +13917,11 @@ class ChildrenHavingPosArgOptionalPairsTupleMixin(object):
13146
13917
  """
13147
13918
 
13148
13919
  values = {
13149
- "pos_arg": self.subnode_pos_arg.makeClone()
13150
- if self.subnode_pos_arg is not None
13151
- else None,
13920
+ "pos_arg": (
13921
+ self.subnode_pos_arg.makeClone()
13922
+ if self.subnode_pos_arg is not None
13923
+ else None
13924
+ ),
13152
13925
  "pairs": tuple(v.makeClone() for v in self.subnode_pairs),
13153
13926
  }
13154
13927
 
@@ -13284,9 +14057,9 @@ class ChildrenHavingRealOptionalImagMixin(object):
13284
14057
  """
13285
14058
 
13286
14059
  values = {
13287
- "real": self.subnode_real.makeClone()
13288
- if self.subnode_real is not None
13289
- else None,
14060
+ "real": (
14061
+ self.subnode_real.makeClone() if self.subnode_real is not None else None
14062
+ ),
13290
14063
  "imag": self.subnode_imag.makeClone(),
13291
14064
  }
13292
14065
 
@@ -14284,15 +15057,21 @@ class ChildrenHavingSourceFilenameModeFlagsOptionalDontInheritOptionalOptimizeOp
14284
15057
  "source": self.subnode_source.makeClone(),
14285
15058
  "filename": self.subnode_filename.makeClone(),
14286
15059
  "mode": self.subnode_mode.makeClone(),
14287
- "flags": self.subnode_flags.makeClone()
14288
- if self.subnode_flags is not None
14289
- else None,
14290
- "dont_inherit": self.subnode_dont_inherit.makeClone()
14291
- if self.subnode_dont_inherit is not None
14292
- else None,
14293
- "optimize": self.subnode_optimize.makeClone()
14294
- if self.subnode_optimize is not None
14295
- else None,
15060
+ "flags": (
15061
+ self.subnode_flags.makeClone()
15062
+ if self.subnode_flags is not None
15063
+ else None
15064
+ ),
15065
+ "dont_inherit": (
15066
+ self.subnode_dont_inherit.makeClone()
15067
+ if self.subnode_dont_inherit is not None
15068
+ else None
15069
+ ),
15070
+ "optimize": (
15071
+ self.subnode_optimize.makeClone()
15072
+ if self.subnode_optimize is not None
15073
+ else None
15074
+ ),
14296
15075
  }
14297
15076
 
14298
15077
  values.update(self.getDetails())
@@ -14625,9 +15404,11 @@ class ChildrenHavingSourceCodeGlobalsArgLocalsArgClosureOptionalMixin(object):
14625
15404
  "source_code": self.subnode_source_code.makeClone(),
14626
15405
  "globals_arg": self.subnode_globals_arg.makeClone(),
14627
15406
  "locals_arg": self.subnode_locals_arg.makeClone(),
14628
- "closure": self.subnode_closure.makeClone()
14629
- if self.subnode_closure is not None
14630
- else None,
15407
+ "closure": (
15408
+ self.subnode_closure.makeClone()
15409
+ if self.subnode_closure is not None
15410
+ else None
15411
+ ),
14631
15412
  }
14632
15413
 
14633
15414
  values.update(self.getDetails())
@@ -18535,12 +19316,16 @@ class ChildrenHavingStringEncodingOptionalErrorsOptionalMixin(object):
18535
19316
 
18536
19317
  values = {
18537
19318
  "string": self.subnode_string.makeClone(),
18538
- "encoding": self.subnode_encoding.makeClone()
18539
- if self.subnode_encoding is not None
18540
- else None,
18541
- "errors": self.subnode_errors.makeClone()
18542
- if self.subnode_errors is not None
18543
- else None,
19319
+ "encoding": (
19320
+ self.subnode_encoding.makeClone()
19321
+ if self.subnode_encoding is not None
19322
+ else None
19323
+ ),
19324
+ "errors": (
19325
+ self.subnode_errors.makeClone()
19326
+ if self.subnode_errors is not None
19327
+ else None
19328
+ ),
18544
19329
  }
18545
19330
 
18546
19331
  values.update(self.getDetails())
@@ -18795,12 +19580,14 @@ class ChildrenHavingTypeArgArgsOptionalKwargsOptionalMixin(object):
18795
19580
 
18796
19581
  values = {
18797
19582
  "type_arg": self.subnode_type_arg.makeClone(),
18798
- "args": self.subnode_args.makeClone()
18799
- if self.subnode_args is not None
18800
- else None,
18801
- "kwargs": self.subnode_kwargs.makeClone()
18802
- if self.subnode_kwargs is not None
18803
- else None,
19583
+ "args": (
19584
+ self.subnode_args.makeClone() if self.subnode_args is not None else None
19585
+ ),
19586
+ "kwargs": (
19587
+ self.subnode_kwargs.makeClone()
19588
+ if self.subnode_kwargs is not None
19589
+ else None
19590
+ ),
18804
19591
  }
18805
19592
 
18806
19593
  values.update(self.getDetails())
@@ -19140,6 +19927,142 @@ class ChildrenHavingTypeNameBasesDictArgMixin(object):
19140
19927
  ChildrenExpressionBuiltinType3Mixin = ChildrenHavingTypeNameBasesDictArgMixin
19141
19928
 
19142
19929
 
19930
+ class ChildrenHavingTypeParamsTupleComputeValueMixin(object):
19931
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
19932
+ __slots__ = ()
19933
+
19934
+ # This is generated for use in
19935
+ # ExpressionTypeAlias
19936
+
19937
+ def __init__(
19938
+ self,
19939
+ type_params,
19940
+ compute_value,
19941
+ ):
19942
+ assert type(type_params) is tuple
19943
+
19944
+ for val in type_params:
19945
+ val.parent = self
19946
+
19947
+ self.subnode_type_params = type_params
19948
+
19949
+ compute_value.parent = self
19950
+
19951
+ self.subnode_compute_value = compute_value
19952
+
19953
+ def getVisitableNodes(self):
19954
+ """The visitable nodes, with tuple values flattened."""
19955
+
19956
+ result = []
19957
+ result.extend(self.subnode_type_params)
19958
+ result.append(self.subnode_compute_value)
19959
+ return tuple(result)
19960
+
19961
+ def getVisitableNodesNamed(self):
19962
+ """Named children dictionary.
19963
+
19964
+ For use in cloning nodes, debugging and XML output.
19965
+ """
19966
+
19967
+ return (
19968
+ ("type_params", self.subnode_type_params),
19969
+ ("compute_value", self.subnode_compute_value),
19970
+ )
19971
+
19972
+ def replaceChild(self, old_node, new_node):
19973
+ value = self.subnode_type_params
19974
+ if old_node in value:
19975
+ if new_node is not None:
19976
+ new_node.parent = self
19977
+
19978
+ self.subnode_type_params = tuple(
19979
+ (val if val is not old_node else new_node) for val in value
19980
+ )
19981
+ else:
19982
+ self.subnode_type_params = tuple(
19983
+ val for val in value if val is not old_node
19984
+ )
19985
+
19986
+ return
19987
+
19988
+ value = self.subnode_compute_value
19989
+ if old_node is value:
19990
+ new_node.parent = self
19991
+
19992
+ self.subnode_compute_value = new_node
19993
+
19994
+ return
19995
+
19996
+ raise AssertionError("Didn't find child", old_node, "in", self)
19997
+
19998
+ def getCloneArgs(self):
19999
+ """Get clones of all children to pass for a new node.
20000
+
20001
+ Needs to make clones of child nodes too.
20002
+ """
20003
+
20004
+ values = {
20005
+ "type_params": tuple(v.makeClone() for v in self.subnode_type_params),
20006
+ "compute_value": self.subnode_compute_value.makeClone(),
20007
+ }
20008
+
20009
+ values.update(self.getDetails())
20010
+
20011
+ return values
20012
+
20013
+ def finalize(self):
20014
+ del self.parent
20015
+
20016
+ for c in self.subnode_type_params:
20017
+ c.finalize()
20018
+ del self.subnode_type_params
20019
+ self.subnode_compute_value.finalize()
20020
+ del self.subnode_compute_value
20021
+
20022
+ def computeExpressionRaw(self, trace_collection):
20023
+ """Compute an expression.
20024
+
20025
+ Default behavior is to just visit the child expressions first, and
20026
+ then the node "computeExpression". For a few cases this needs to
20027
+ be overloaded, e.g. conditional expressions.
20028
+ """
20029
+
20030
+ # First apply the sub-expressions, as they are evaluated before
20031
+ # the actual operation.
20032
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
20033
+ expression = trace_collection.onExpression(sub_expression)
20034
+
20035
+ if expression.willRaiseAnyException():
20036
+ sub_expressions = self.getVisitableNodes()
20037
+
20038
+ wrapped_expression = wrapExpressionWithSideEffects(
20039
+ side_effects=sub_expressions[:count],
20040
+ old_node=sub_expression,
20041
+ new_node=expression,
20042
+ )
20043
+
20044
+ return (
20045
+ wrapped_expression,
20046
+ "new_raise",
20047
+ lambda: "For '%s' the child expression '%s' will raise."
20048
+ % (self.getChildNameNice(), expression.getChildNameNice()),
20049
+ )
20050
+
20051
+ # Then ask ourselves to work on it.
20052
+ return self.computeExpression(trace_collection)
20053
+
20054
+ def collectVariableAccesses(self, emit_read, emit_write):
20055
+ """Collect variable reads and writes of child nodes."""
20056
+
20057
+ for element in self.subnode_type_params:
20058
+ element.collectVariableAccesses(emit_read, emit_write)
20059
+ self.subnode_compute_value.collectVariableAccesses(emit_read, emit_write)
20060
+
20061
+
20062
+ # Assign the names that are easier to import with a stable name.
20063
+ ChildrenExpressionTypeAliasMixin = ChildrenHavingTypeParamsTupleComputeValueMixin
20064
+
20065
+
19143
20066
  class ChildHavingValueMixin(object):
19144
20067
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
19145
20068
  __slots__ = ()
@@ -19371,9 +20294,11 @@ class ChildrenHavingValueOptionalBaseMixin(object):
19371
20294
  """
19372
20295
 
19373
20296
  values = {
19374
- "value": self.subnode_value.makeClone()
19375
- if self.subnode_value is not None
19376
- else None,
20297
+ "value": (
20298
+ self.subnode_value.makeClone()
20299
+ if self.subnode_value is not None
20300
+ else None
20301
+ ),
19377
20302
  "base": self.subnode_base.makeClone(),
19378
20303
  }
19379
20304
 
@@ -19537,15 +20462,21 @@ class ChildrenHavingValueOptionalEncodingOptionalErrorsOptionalMixin(object):
19537
20462
  """
19538
20463
 
19539
20464
  values = {
19540
- "value": self.subnode_value.makeClone()
19541
- if self.subnode_value is not None
19542
- else None,
19543
- "encoding": self.subnode_encoding.makeClone()
19544
- if self.subnode_encoding is not None
19545
- else None,
19546
- "errors": self.subnode_errors.makeClone()
19547
- if self.subnode_errors is not None
19548
- else None,
20465
+ "value": (
20466
+ self.subnode_value.makeClone()
20467
+ if self.subnode_value is not None
20468
+ else None
20469
+ ),
20470
+ "encoding": (
20471
+ self.subnode_encoding.makeClone()
20472
+ if self.subnode_encoding is not None
20473
+ else None
20474
+ ),
20475
+ "errors": (
20476
+ self.subnode_errors.makeClone()
20477
+ if self.subnode_errors is not None
20478
+ else None
20479
+ ),
19549
20480
  }
19550
20481
 
19551
20482
  values.update(self.getDetails())
@@ -19700,9 +20631,11 @@ class ChildrenHavingValueFormatSpecOptionalAutoNoneEmptyStrMixin(object):
19700
20631
 
19701
20632
  values = {
19702
20633
  "value": self.subnode_value.makeClone(),
19703
- "format_spec": self.subnode_format_spec.makeClone()
19704
- if self.subnode_format_spec is not None
19705
- else None,
20634
+ "format_spec": (
20635
+ self.subnode_format_spec.makeClone()
20636
+ if self.subnode_format_spec is not None
20637
+ else None
20638
+ ),
19706
20639
  }
19707
20640
 
19708
20641
  values.update(self.getDetails())
@@ -20009,3 +20942,18 @@ class ChildHavingValuesTupleMixin(object):
20009
20942
 
20010
20943
  # Assign the names that are easier to import with a stable name.
20011
20944
  ChildrenExpressionStringConcatenationMixin = ChildHavingValuesTupleMixin
20945
+
20946
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
20947
+ # integrates with CPython, but also works on its own.
20948
+ #
20949
+ # Licensed under the Apache License, Version 2.0 (the "License");
20950
+ # you may not use this file except in compliance with the License.
20951
+ # You may obtain a copy of the License at
20952
+ #
20953
+ # http://www.apache.org/licenses/LICENSE-2.0
20954
+ #
20955
+ # Unless required by applicable law or agreed to in writing, software
20956
+ # distributed under the License is distributed on an "AS IS" BASIS,
20957
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20958
+ # See the License for the specific language governing permissions and
20959
+ # limitations under the License.