Nuitka-winsvc 2.1.6__cp311-cp311-win_amd64.whl → 2.2.1__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 (232) hide show
  1. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/RECORD +232 -223
  3. nuitka/Errors.py +4 -0
  4. nuitka/HardImportRegistry.py +18 -1
  5. nuitka/MainControl.py +27 -30
  6. nuitka/OptionParsing.py +32 -30
  7. nuitka/Options.py +26 -13
  8. nuitka/OutputDirectories.py +7 -4
  9. nuitka/PostProcessing.py +9 -7
  10. nuitka/Progress.py +3 -3
  11. nuitka/PythonVersions.py +2 -2
  12. nuitka/TreeXML.py +1 -1
  13. nuitka/Version.py +1 -1
  14. nuitka/build/Backend.scons +2 -1
  15. nuitka/build/DataComposerInterface.py +1 -0
  16. nuitka/build/Onefile.scons +2 -1
  17. nuitka/build/SconsCaching.py +64 -46
  18. nuitka/build/SconsCompilerSettings.py +19 -6
  19. nuitka/build/SconsHacks.py +0 -1
  20. nuitka/build/SconsInterface.py +84 -5
  21. nuitka/build/SconsProgress.py +0 -1
  22. nuitka/build/SconsUtils.py +8 -4
  23. nuitka/build/include/nuitka/allocator.h +8 -3
  24. nuitka/build/include/nuitka/compiled_cell.h +8 -0
  25. nuitka/build/include/nuitka/exceptions.h +554 -179
  26. nuitka/build/include/nuitka/helper/dictionaries.h +1 -1
  27. nuitka/build/include/nuitka/helper/import_hard.h +3 -0
  28. nuitka/build/include/nuitka/helper/ints.h +15 -2
  29. nuitka/build/include/nuitka/helper/lists.h +4 -1
  30. nuitka/build/include/nuitka/helper/raising.h +12 -0
  31. nuitka/build/include/nuitka/helper/tuples.h +5 -1
  32. nuitka/build/include/nuitka/helpers.h +4 -0
  33. nuitka/build/include/nuitka/importing.h +3 -4
  34. nuitka/build/include/nuitka/jit_sources.h +25 -0
  35. nuitka/build/include/nuitka/prelude.h +38 -11
  36. nuitka/build/include/nuitka/printing.h +3 -0
  37. nuitka/build/include/nuitka/threading.h +2 -6
  38. nuitka/build/include/nuitka/type_aliases.h +27 -0
  39. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  40. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -4
  41. nuitka/build/static_src/CompiledAsyncgenType.c +99 -114
  42. nuitka/build/static_src/CompiledCodeHelpers.c +24 -14
  43. nuitka/build/static_src/CompiledCoroutineType.c +96 -114
  44. nuitka/build/static_src/CompiledFrameType.c +14 -11
  45. nuitka/build/static_src/CompiledFunctionType.c +34 -7
  46. nuitka/build/static_src/CompiledGeneratorType.c +248 -142
  47. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +60 -70
  48. nuitka/build/static_src/CompiledMethodType.c +8 -7
  49. nuitka/build/static_src/HelpersAttributes.c +2 -19
  50. nuitka/build/static_src/HelpersBuiltin.c +2 -1
  51. nuitka/build/static_src/HelpersComparisonEq.c +32 -18
  52. nuitka/build/static_src/HelpersComparisonGe.c +50 -36
  53. nuitka/build/static_src/HelpersComparisonGt.c +50 -36
  54. nuitka/build/static_src/HelpersComparisonLe.c +50 -36
  55. nuitka/build/static_src/HelpersComparisonLt.c +50 -36
  56. nuitka/build/static_src/HelpersComparisonNe.c +32 -18
  57. nuitka/build/static_src/HelpersDeepcopy.c +6 -8
  58. nuitka/build/static_src/HelpersDictionaries.c +8 -3
  59. nuitka/build/static_src/HelpersExceptions.c +36 -22
  60. nuitka/build/static_src/HelpersFilesystemPaths.c +7 -7
  61. nuitka/build/static_src/HelpersImportHard.c +15 -0
  62. nuitka/build/static_src/HelpersJitSources.c +46 -0
  63. nuitka/build/static_src/HelpersLists.c +40 -0
  64. nuitka/build/static_src/HelpersOperationBinaryAdd.c +66 -66
  65. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +80 -33
  66. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +16 -13
  67. nuitka/build/static_src/HelpersOperationBinarySub.c +39 -39
  68. nuitka/build/static_src/HelpersOperationInplaceAdd.c +54 -54
  69. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +1 -1
  70. nuitka/build/static_src/HelpersOperationInplaceSub.c +50 -50
  71. nuitka/build/static_src/HelpersProfiling.c +3 -4
  72. nuitka/build/static_src/HelpersRaising.c +62 -1
  73. nuitka/build/static_src/HelpersStrings.c +203 -8
  74. nuitka/build/static_src/HelpersTypes.c +42 -0
  75. nuitka/build/static_src/MainProgram.c +1 -1
  76. nuitka/build/static_src/MetaPathBasedLoader.c +2 -1
  77. nuitka/build/static_src/OnefileBootstrap.c +3 -3
  78. nuitka/code_generation/BinaryOperationHelperDefinitions.py +5 -3
  79. nuitka/code_generation/BuiltinCodes.py +1 -0
  80. nuitka/code_generation/CodeGeneration.py +11 -0
  81. nuitka/code_generation/CodeHelpers.py +5 -3
  82. nuitka/code_generation/CodeObjectCodes.py +10 -6
  83. nuitka/code_generation/ComparisonCodes.py +19 -3
  84. nuitka/code_generation/ConstantCodes.py +5 -0
  85. nuitka/code_generation/Contexts.py +22 -6
  86. nuitka/code_generation/Emission.py +1 -0
  87. nuitka/code_generation/ErrorCodes.py +8 -16
  88. nuitka/code_generation/EvalCodes.py +5 -3
  89. nuitka/code_generation/ExceptionCodes.py +8 -1
  90. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +1 -0
  91. nuitka/code_generation/FrameCodes.py +5 -3
  92. nuitka/code_generation/FunctionCodes.py +0 -1
  93. nuitka/code_generation/GeneratorCodes.py +3 -3
  94. nuitka/code_generation/GlobalConstants.py +0 -2
  95. nuitka/code_generation/ImportCodes.py +2 -0
  96. nuitka/code_generation/JitCodes.py +44 -0
  97. nuitka/code_generation/ListCodes.py +11 -17
  98. nuitka/code_generation/MatchCodes.py +0 -1
  99. nuitka/code_generation/ModuleCodes.py +2 -1
  100. nuitka/code_generation/Namify.py +0 -1
  101. nuitka/code_generation/NetworkxCodes.py +51 -0
  102. nuitka/code_generation/OperationCodes.py +8 -6
  103. nuitka/code_generation/PackageResourceCodes.py +7 -5
  104. nuitka/code_generation/TensorflowCodes.py +54 -0
  105. nuitka/code_generation/TypeAliasCodes.py +71 -0
  106. nuitka/code_generation/VariableCodes.py +7 -5
  107. nuitka/code_generation/VariableDeclarations.py +1 -0
  108. nuitka/code_generation/c_types/CTypeCLongs.py +0 -1
  109. nuitka/code_generation/c_types/CTypeNuitkaInts.py +0 -1
  110. nuitka/code_generation/c_types/CTypeVoids.py +1 -0
  111. nuitka/code_generation/templates/CodeTemplatesConstants.py +14 -0
  112. nuitka/code_generation/templates/CodeTemplatesExceptions.py +1 -1
  113. nuitka/code_generation/templates/CodeTemplatesIterators.py +0 -1
  114. nuitka/code_generation/templates/CodeTemplatesLoader.py +0 -1
  115. nuitka/code_generation/templates/CodeTemplatesModules.py +4 -1
  116. nuitka/code_generation/templates/CodeTemplatesVariables.py +8 -8
  117. nuitka/code_generation/templates/TemplateDebugWrapper.py +0 -1
  118. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +4 -0
  119. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +9 -7
  120. nuitka/containers/Namedtuples.py +0 -1
  121. nuitka/finalizations/Finalization.py +1 -0
  122. nuitka/finalizations/FinalizeMarkups.py +0 -1
  123. nuitka/freezer/DllDependenciesMacOS.py +60 -13
  124. nuitka/freezer/DllDependenciesPosix.py +0 -1
  125. nuitka/freezer/IncludedDataFiles.py +46 -15
  126. nuitka/freezer/IncludedEntryPoints.py +5 -3
  127. nuitka/freezer/Standalone.py +6 -1
  128. nuitka/importing/ImportCache.py +2 -2
  129. nuitka/importing/ImportResolving.py +80 -78
  130. nuitka/importing/Importing.py +34 -1
  131. nuitka/nodes/AttributeNodesGenerated.py +21 -6
  132. nuitka/nodes/BuiltinComplexNodes.py +1 -0
  133. nuitka/nodes/BuiltinFormatNodes.py +1 -0
  134. nuitka/nodes/BuiltinIteratorNodes.py +5 -3
  135. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +21 -6
  136. nuitka/nodes/BuiltinRefNodes.py +8 -1
  137. nuitka/nodes/BuiltinVarsNodes.py +0 -1
  138. nuitka/nodes/ChildrenHavingMixins.py +906 -186
  139. nuitka/nodes/CodeObjectSpecs.py +1 -1
  140. nuitka/nodes/ConstantRefNodes.py +38 -0
  141. nuitka/nodes/CtypesNodes.py +0 -1
  142. nuitka/nodes/DictionaryNodes.py +0 -1
  143. nuitka/nodes/ExceptionNodes.py +10 -0
  144. nuitka/nodes/ExpressionBases.py +15 -9
  145. nuitka/nodes/ExpressionBasesGenerated.py +32 -15
  146. nuitka/nodes/FunctionNodes.py +50 -5
  147. nuitka/nodes/HardImportNodesGenerated.py +245 -60
  148. nuitka/nodes/ImportHardNodes.py +27 -13
  149. nuitka/nodes/ImportNodes.py +90 -70
  150. nuitka/nodes/InjectCNodes.py +0 -1
  151. nuitka/nodes/ModuleNodes.py +10 -5
  152. nuitka/nodes/NetworkxNodes.py +45 -0
  153. nuitka/nodes/OperatorNodesUnary.py +1 -0
  154. nuitka/nodes/OsSysNodes.py +0 -1
  155. nuitka/nodes/PackageMetadataNodes.py +0 -1
  156. nuitka/nodes/PackageResourceNodes.py +10 -6
  157. nuitka/nodes/StatementBasesGenerated.py +107 -60
  158. nuitka/nodes/StringConcatenationNodes.py +1 -0
  159. nuitka/nodes/TensorflowNodes.py +38 -0
  160. nuitka/nodes/TypeNodes.py +21 -0
  161. nuitka/nodes/VariableRefNodes.py +1 -0
  162. nuitka/nodes/shapes/BuiltinTypeShapes.py +25 -15
  163. nuitka/optimizations/Optimization.py +7 -6
  164. nuitka/optimizations/OptimizeBuiltinCalls.py +11 -9
  165. nuitka/optimizations/Tags.py +0 -1
  166. nuitka/optimizations/TraceCollections.py +6 -55
  167. nuitka/optimizations/ValueTraces.py +49 -1
  168. nuitka/plugins/PluginBase.py +26 -4
  169. nuitka/plugins/Plugins.py +49 -12
  170. nuitka/plugins/standard/AntiBloatPlugin.py +12 -2
  171. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +0 -1
  172. nuitka/plugins/standard/DataFilesPlugin.py +2 -6
  173. nuitka/plugins/standard/DillPlugin.py +3 -3
  174. nuitka/plugins/standard/DllFilesPlugin.py +29 -23
  175. nuitka/plugins/standard/GiPlugin.py +1 -0
  176. nuitka/plugins/standard/ImplicitImports.py +8 -7
  177. nuitka/plugins/standard/MatplotlibPlugin.py +1 -0
  178. nuitka/plugins/standard/OptionsNannyPlugin.py +3 -7
  179. nuitka/plugins/standard/PkgResourcesPlugin.py +0 -1
  180. nuitka/plugins/standard/PmwPlugin.py +10 -9
  181. nuitka/plugins/standard/PySidePyQtPlugin.py +0 -28
  182. nuitka/plugins/standard/TensorflowPlugin.py +1 -0
  183. nuitka/plugins/standard/TorchPlugin.py +1 -0
  184. nuitka/plugins/standard/TrioPlugin.py +1 -0
  185. nuitka/plugins/standard/standard.nuitka-package.config.yml +242 -34
  186. nuitka/reports/CompilationReportReader.py +0 -1
  187. nuitka/reports/Reports.py +49 -5
  188. nuitka/specs/BuiltinParameterSpecs.py +10 -2
  189. nuitka/specs/BuiltinStrOperationSpecs.py +1 -1
  190. nuitka/specs/BuiltinTypeOperationSpecs.py +0 -1
  191. nuitka/specs/HardImportSpecs.py +34 -1
  192. nuitka/specs/ParameterSpecs.py +11 -9
  193. nuitka/tools/environments/Virtualenv.py +0 -1
  194. nuitka/tools/specialize/CTypeDescriptions.py +15 -11
  195. nuitka/tools/specialize/SpecializeC.py +11 -9
  196. nuitka/tools/specialize/SpecializePython.py +57 -30
  197. nuitka/tools/testing/Common.py +24 -7
  198. nuitka/tools/testing/OutputComparison.py +4 -0
  199. nuitka/tools/testing/Pythons.py +0 -1
  200. nuitka/tools/testing/compare_with_cpython/__main__.py +0 -4
  201. nuitka/tools/watch/GitHub.py +4 -1
  202. nuitka/tools/watch/__main__.py +22 -1
  203. nuitka/tree/Building.py +3 -0
  204. nuitka/tree/InternalModule.py +0 -1
  205. nuitka/tree/ReformulationAssertStatements.py +1 -0
  206. nuitka/tree/ReformulationAssignmentStatements.py +26 -3
  207. nuitka/tree/ReformulationClasses3.py +23 -26
  208. nuitka/tree/ReformulationContractionExpressions.py +5 -3
  209. nuitka/tree/ReformulationDictionaryCreation.py +6 -5
  210. nuitka/tree/ReformulationExecStatements.py +8 -6
  211. nuitka/tree/ReformulationFunctionStatements.py +10 -6
  212. nuitka/tree/SourceHandling.py +8 -0
  213. nuitka/tree/TreeHelpers.py +6 -3
  214. nuitka/utils/AppDirs.py +6 -2
  215. nuitka/utils/CStrings.py +1 -1
  216. nuitka/utils/CommandLineOptions.py +0 -1
  217. nuitka/utils/Distributions.py +3 -3
  218. nuitka/utils/Download.py +5 -1
  219. nuitka/utils/Execution.py +6 -3
  220. nuitka/utils/FileOperations.py +61 -34
  221. nuitka/utils/Importing.py +4 -4
  222. nuitka/utils/InstanceCounters.py +1 -0
  223. nuitka/utils/MacOSApp.py +1 -0
  224. nuitka/utils/Shebang.py +1 -0
  225. nuitka/utils/Utils.py +39 -1
  226. nuitka/utils/WindowsFileUsage.py +4 -3
  227. {Nuitka_winsvc-2.1.6.data → Nuitka_winsvc-2.2.1.data}/scripts/nuitka-run.bat +0 -0
  228. {Nuitka_winsvc-2.1.6.data → Nuitka_winsvc-2.2.1.data}/scripts/nuitka.bat +0 -0
  229. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/LICENSE.txt +0 -0
  230. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/WHEEL +0 -0
  231. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/entry_points.txt +0 -0
  232. {Nuitka_winsvc-2.1.6.dist-info → Nuitka_winsvc-2.2.1.dist-info}/top_level.txt +0 -0
@@ -2,18 +2,33 @@
2
2
 
3
3
 
4
4
  # We are not avoiding these in generated code at all
5
- # pylint: disable=I0021,too-many-lines
6
- # pylint: disable=I0021,line-too-long
7
- # pylint: disable=I0021,too-many-instance-attributes
8
- # 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
9
7
 
10
8
 
11
9
  """Children having mixins
12
10
 
13
11
  WARNING, this code is GENERATED. Modify the template ChildrenHavingMixin.py.j2 instead!
14
12
 
15
- 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
16
- 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 buffering capitalize casefold
14
+ spell-checker: ignore center chars clear closefd copy count decode default delete dist
15
+ spell-checker: ignore distribution_name encode encoding end endswith errors exit_code
16
+ spell-checker: ignore expandtabs 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 file
19
+ spell-checker: ignore fillchar find format format_map formatmap fromkeys func get group
20
+ spell-checker: ignore handle has_key haskey index input_signature insert isalnum isalpha
21
+ spell-checker: ignore isascii isdecimal isdigit isidentifier islower isnumeric isprintable
22
+ spell-checker: ignore isspace istitle isupper item items iterable iteritems iterkeys
23
+ spell-checker: ignore itervalues jit_compile join keepends key keys kwargs ljust lower
24
+ spell-checker: ignore lstrip maketrans maxsplit mode name new newline old opener 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
17
32
  """
18
33
 
19
34
 
@@ -128,9 +143,9 @@ class ModuleChildrenHavingBodyOptionalStatementsOrNoneFunctionsTupleMixin(object
128
143
  """
129
144
 
130
145
  values = {
131
- "body": self.subnode_body.makeClone()
132
- if self.subnode_body is not None
133
- else None,
146
+ "body": (
147
+ self.subnode_body.makeClone() if self.subnode_body is not None else None
148
+ ),
134
149
  "functions": tuple(v.makeClone() for v in self.subnode_functions),
135
150
  }
136
151
 
@@ -333,9 +348,9 @@ class ChildHavingBodyOptionalMixin(object):
333
348
  """
334
349
 
335
350
  values = {
336
- "body": self.subnode_body.makeClone()
337
- if self.subnode_body is not None
338
- else None,
351
+ "body": (
352
+ self.subnode_body.makeClone() if self.subnode_body is not None else None
353
+ ),
339
354
  }
340
355
 
341
356
  values.update(self.getDetails())
@@ -4818,12 +4833,16 @@ class ChildrenHavingDefaultsTupleKwDefaultsOptionalAnnotationsOptionalFunctionRe
4818
4833
 
4819
4834
  values = {
4820
4835
  "defaults": tuple(v.makeClone() for v in self.subnode_defaults),
4821
- "kw_defaults": self.subnode_kw_defaults.makeClone()
4822
- if self.subnode_kw_defaults is not None
4823
- else None,
4824
- "annotations": self.subnode_annotations.makeClone()
4825
- if self.subnode_annotations is not None
4826
- else None,
4836
+ "kw_defaults": (
4837
+ self.subnode_kw_defaults.makeClone()
4838
+ if self.subnode_kw_defaults is not None
4839
+ else None
4840
+ ),
4841
+ "annotations": (
4842
+ self.subnode_annotations.makeClone()
4843
+ if self.subnode_annotations is not None
4844
+ else None
4845
+ ),
4827
4846
  "function_ref": self.subnode_function_ref.makeClone(),
4828
4847
  }
4829
4848
 
@@ -6235,9 +6254,11 @@ class ChildHavingExitCodeOptionalMixin(object):
6235
6254
  """
6236
6255
 
6237
6256
  values = {
6238
- "exit_code": self.subnode_exit_code.makeClone()
6239
- if self.subnode_exit_code is not None
6240
- else None,
6257
+ "exit_code": (
6258
+ self.subnode_exit_code.makeClone()
6259
+ if self.subnode_exit_code is not None
6260
+ else None
6261
+ ),
6241
6262
  }
6242
6263
 
6243
6264
  values.update(self.getDetails())
@@ -6857,12 +6878,16 @@ class ChildrenHavingExpressionLowerAutoNoneUpperAutoNoneMixin(object):
6857
6878
 
6858
6879
  values = {
6859
6880
  "expression": self.subnode_expression.makeClone(),
6860
- "lower": self.subnode_lower.makeClone()
6861
- if self.subnode_lower is not None
6862
- else None,
6863
- "upper": self.subnode_upper.makeClone()
6864
- if self.subnode_upper is not None
6865
- 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
+ ),
6866
6891
  }
6867
6892
 
6868
6893
  values.update(self.getDetails())
@@ -7021,9 +7046,11 @@ class ChildrenHavingExpressionNameDefaultOptionalMixin(object):
7021
7046
  values = {
7022
7047
  "expression": self.subnode_expression.makeClone(),
7023
7048
  "name": self.subnode_name.makeClone(),
7024
- "default": self.subnode_default.makeClone()
7025
- if self.subnode_default is not None
7026
- else None,
7049
+ "default": (
7050
+ self.subnode_default.makeClone()
7051
+ if self.subnode_default is not None
7052
+ else None
7053
+ ),
7027
7054
  }
7028
7055
 
7029
7056
  values.update(self.getDetails())
@@ -7652,27 +7679,39 @@ class ChildrenHavingFileModeOptionalBufferingOptionalEncodingOptionalErrorsOptio
7652
7679
 
7653
7680
  values = {
7654
7681
  "file": self.subnode_file.makeClone(),
7655
- "mode": self.subnode_mode.makeClone()
7656
- if self.subnode_mode is not None
7657
- else None,
7658
- "buffering": self.subnode_buffering.makeClone()
7659
- if self.subnode_buffering is not None
7660
- else None,
7661
- "encoding": self.subnode_encoding.makeClone()
7662
- if self.subnode_encoding is not None
7663
- else None,
7664
- "errors": self.subnode_errors.makeClone()
7665
- if self.subnode_errors is not None
7666
- else None,
7667
- "newline": self.subnode_newline.makeClone()
7668
- if self.subnode_newline is not None
7669
- else None,
7670
- "closefd": self.subnode_closefd.makeClone()
7671
- if self.subnode_closefd is not None
7672
- else None,
7673
- "opener": self.subnode_opener.makeClone()
7674
- if self.subnode_opener is not None
7675
- else None,
7682
+ "mode": (
7683
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
7684
+ ),
7685
+ "buffering": (
7686
+ self.subnode_buffering.makeClone()
7687
+ if self.subnode_buffering is not None
7688
+ else None
7689
+ ),
7690
+ "encoding": (
7691
+ self.subnode_encoding.makeClone()
7692
+ if self.subnode_encoding is not None
7693
+ else None
7694
+ ),
7695
+ "errors": (
7696
+ self.subnode_errors.makeClone()
7697
+ if self.subnode_errors is not None
7698
+ else None
7699
+ ),
7700
+ "newline": (
7701
+ self.subnode_newline.makeClone()
7702
+ if self.subnode_newline is not None
7703
+ else None
7704
+ ),
7705
+ "closefd": (
7706
+ self.subnode_closefd.makeClone()
7707
+ if self.subnode_closefd is not None
7708
+ else None
7709
+ ),
7710
+ "opener": (
7711
+ self.subnode_opener.makeClone()
7712
+ if self.subnode_opener is not None
7713
+ else None
7714
+ ),
7676
7715
  }
7677
7716
 
7678
7717
  values.update(self.getDetails())
@@ -7869,12 +7908,14 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalMixin(object):
7869
7908
 
7870
7909
  values = {
7871
7910
  "filename": self.subnode_filename.makeClone(),
7872
- "mode": self.subnode_mode.makeClone()
7873
- if self.subnode_mode is not None
7874
- else None,
7875
- "buffering": self.subnode_buffering.makeClone()
7876
- if self.subnode_buffering is not None
7877
- else None,
7911
+ "mode": (
7912
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
7913
+ ),
7914
+ "buffering": (
7915
+ self.subnode_buffering.makeClone()
7916
+ if self.subnode_buffering is not None
7917
+ else None
7918
+ ),
7878
7919
  }
7879
7920
 
7880
7921
  values.update(self.getDetails())
@@ -8145,27 +8186,39 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
8145
8186
 
8146
8187
  values = {
8147
8188
  "filename": self.subnode_filename.makeClone(),
8148
- "mode": self.subnode_mode.makeClone()
8149
- if self.subnode_mode is not None
8150
- else None,
8151
- "buffering": self.subnode_buffering.makeClone()
8152
- if self.subnode_buffering is not None
8153
- else None,
8154
- "encoding": self.subnode_encoding.makeClone()
8155
- if self.subnode_encoding is not None
8156
- else None,
8157
- "errors": self.subnode_errors.makeClone()
8158
- if self.subnode_errors is not None
8159
- else None,
8160
- "newline": self.subnode_newline.makeClone()
8161
- if self.subnode_newline is not None
8162
- else None,
8163
- "closefd": self.subnode_closefd.makeClone()
8164
- if self.subnode_closefd is not None
8165
- else None,
8166
- "opener": self.subnode_opener.makeClone()
8167
- if self.subnode_opener is not None
8168
- else None,
8189
+ "mode": (
8190
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
8191
+ ),
8192
+ "buffering": (
8193
+ self.subnode_buffering.makeClone()
8194
+ if self.subnode_buffering is not None
8195
+ else None
8196
+ ),
8197
+ "encoding": (
8198
+ self.subnode_encoding.makeClone()
8199
+ if self.subnode_encoding is not None
8200
+ else None
8201
+ ),
8202
+ "errors": (
8203
+ self.subnode_errors.makeClone()
8204
+ if self.subnode_errors is not None
8205
+ else None
8206
+ ),
8207
+ "newline": (
8208
+ self.subnode_newline.makeClone()
8209
+ if self.subnode_newline is not None
8210
+ else None
8211
+ ),
8212
+ "closefd": (
8213
+ self.subnode_closefd.makeClone()
8214
+ if self.subnode_closefd is not None
8215
+ else None
8216
+ ),
8217
+ "opener": (
8218
+ self.subnode_opener.makeClone()
8219
+ if self.subnode_opener is not None
8220
+ else None
8221
+ ),
8169
8222
  }
8170
8223
 
8171
8224
  values.update(self.getDetails())
@@ -8269,6 +8322,479 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
8269
8322
  ChildrenExpressionBuiltinOpenP3Mixin = ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsOptionalNewlineOptionalClosefdOptionalOpenerOptionalMixin
8270
8323
 
8271
8324
 
8325
+ class ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin(
8326
+ object
8327
+ ):
8328
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
8329
+ __slots__ = ()
8330
+
8331
+ # This is generated for use in
8332
+ # ExpressionTensorflowFunction
8333
+ # ExpressionTensorflowFunctionCall
8334
+
8335
+ def __init__(
8336
+ self,
8337
+ func,
8338
+ input_signature,
8339
+ autograph,
8340
+ jit_compile,
8341
+ reduce_retracing,
8342
+ experimental_implements,
8343
+ experimental_autograph_options,
8344
+ experimental_attributes,
8345
+ experimental_relax_shapes,
8346
+ experimental_compile,
8347
+ experimental_follow_type_hints,
8348
+ ):
8349
+ if func is not None:
8350
+ func.parent = self
8351
+
8352
+ self.subnode_func = func
8353
+
8354
+ if input_signature is not None:
8355
+ input_signature.parent = self
8356
+
8357
+ self.subnode_input_signature = input_signature
8358
+
8359
+ if autograph is not None:
8360
+ autograph.parent = self
8361
+
8362
+ self.subnode_autograph = autograph
8363
+
8364
+ if jit_compile is not None:
8365
+ jit_compile.parent = self
8366
+
8367
+ self.subnode_jit_compile = jit_compile
8368
+
8369
+ if reduce_retracing is not None:
8370
+ reduce_retracing.parent = self
8371
+
8372
+ self.subnode_reduce_retracing = reduce_retracing
8373
+
8374
+ if experimental_implements is not None:
8375
+ experimental_implements.parent = self
8376
+
8377
+ self.subnode_experimental_implements = experimental_implements
8378
+
8379
+ if experimental_autograph_options is not None:
8380
+ experimental_autograph_options.parent = self
8381
+
8382
+ self.subnode_experimental_autograph_options = experimental_autograph_options
8383
+
8384
+ if experimental_attributes is not None:
8385
+ experimental_attributes.parent = self
8386
+
8387
+ self.subnode_experimental_attributes = experimental_attributes
8388
+
8389
+ if experimental_relax_shapes is not None:
8390
+ experimental_relax_shapes.parent = self
8391
+
8392
+ self.subnode_experimental_relax_shapes = experimental_relax_shapes
8393
+
8394
+ if experimental_compile is not None:
8395
+ experimental_compile.parent = self
8396
+
8397
+ self.subnode_experimental_compile = experimental_compile
8398
+
8399
+ if experimental_follow_type_hints is not None:
8400
+ experimental_follow_type_hints.parent = self
8401
+
8402
+ self.subnode_experimental_follow_type_hints = experimental_follow_type_hints
8403
+
8404
+ def getVisitableNodes(self):
8405
+ """The visitable nodes, with tuple values flattened."""
8406
+
8407
+ result = []
8408
+ value = self.subnode_func
8409
+ if value is None:
8410
+ pass
8411
+ else:
8412
+ result.append(value)
8413
+ value = self.subnode_input_signature
8414
+ if value is None:
8415
+ pass
8416
+ else:
8417
+ result.append(value)
8418
+ value = self.subnode_autograph
8419
+ if value is None:
8420
+ pass
8421
+ else:
8422
+ result.append(value)
8423
+ value = self.subnode_jit_compile
8424
+ if value is None:
8425
+ pass
8426
+ else:
8427
+ result.append(value)
8428
+ value = self.subnode_reduce_retracing
8429
+ if value is None:
8430
+ pass
8431
+ else:
8432
+ result.append(value)
8433
+ value = self.subnode_experimental_implements
8434
+ if value is None:
8435
+ pass
8436
+ else:
8437
+ result.append(value)
8438
+ value = self.subnode_experimental_autograph_options
8439
+ if value is None:
8440
+ pass
8441
+ else:
8442
+ result.append(value)
8443
+ value = self.subnode_experimental_attributes
8444
+ if value is None:
8445
+ pass
8446
+ else:
8447
+ result.append(value)
8448
+ value = self.subnode_experimental_relax_shapes
8449
+ if value is None:
8450
+ pass
8451
+ else:
8452
+ result.append(value)
8453
+ value = self.subnode_experimental_compile
8454
+ if value is None:
8455
+ pass
8456
+ else:
8457
+ result.append(value)
8458
+ value = self.subnode_experimental_follow_type_hints
8459
+ if value is None:
8460
+ pass
8461
+ else:
8462
+ result.append(value)
8463
+ return tuple(result)
8464
+
8465
+ def getVisitableNodesNamed(self):
8466
+ """Named children dictionary.
8467
+
8468
+ For use in cloning nodes, debugging and XML output.
8469
+ """
8470
+
8471
+ return (
8472
+ ("func", self.subnode_func),
8473
+ ("input_signature", self.subnode_input_signature),
8474
+ ("autograph", self.subnode_autograph),
8475
+ ("jit_compile", self.subnode_jit_compile),
8476
+ ("reduce_retracing", self.subnode_reduce_retracing),
8477
+ ("experimental_implements", self.subnode_experimental_implements),
8478
+ (
8479
+ "experimental_autograph_options",
8480
+ self.subnode_experimental_autograph_options,
8481
+ ),
8482
+ ("experimental_attributes", self.subnode_experimental_attributes),
8483
+ ("experimental_relax_shapes", self.subnode_experimental_relax_shapes),
8484
+ ("experimental_compile", self.subnode_experimental_compile),
8485
+ (
8486
+ "experimental_follow_type_hints",
8487
+ self.subnode_experimental_follow_type_hints,
8488
+ ),
8489
+ )
8490
+
8491
+ def replaceChild(self, old_node, new_node):
8492
+ value = self.subnode_func
8493
+ if old_node is value:
8494
+ if new_node is not None:
8495
+ new_node.parent = self
8496
+
8497
+ self.subnode_func = new_node
8498
+
8499
+ return
8500
+
8501
+ value = self.subnode_input_signature
8502
+ if old_node is value:
8503
+ if new_node is not None:
8504
+ new_node.parent = self
8505
+
8506
+ self.subnode_input_signature = new_node
8507
+
8508
+ return
8509
+
8510
+ value = self.subnode_autograph
8511
+ if old_node is value:
8512
+ if new_node is not None:
8513
+ new_node.parent = self
8514
+
8515
+ self.subnode_autograph = new_node
8516
+
8517
+ return
8518
+
8519
+ value = self.subnode_jit_compile
8520
+ if old_node is value:
8521
+ if new_node is not None:
8522
+ new_node.parent = self
8523
+
8524
+ self.subnode_jit_compile = new_node
8525
+
8526
+ return
8527
+
8528
+ value = self.subnode_reduce_retracing
8529
+ if old_node is value:
8530
+ if new_node is not None:
8531
+ new_node.parent = self
8532
+
8533
+ self.subnode_reduce_retracing = new_node
8534
+
8535
+ return
8536
+
8537
+ value = self.subnode_experimental_implements
8538
+ if old_node is value:
8539
+ if new_node is not None:
8540
+ new_node.parent = self
8541
+
8542
+ self.subnode_experimental_implements = new_node
8543
+
8544
+ return
8545
+
8546
+ value = self.subnode_experimental_autograph_options
8547
+ if old_node is value:
8548
+ if new_node is not None:
8549
+ new_node.parent = self
8550
+
8551
+ self.subnode_experimental_autograph_options = new_node
8552
+
8553
+ return
8554
+
8555
+ value = self.subnode_experimental_attributes
8556
+ if old_node is value:
8557
+ if new_node is not None:
8558
+ new_node.parent = self
8559
+
8560
+ self.subnode_experimental_attributes = new_node
8561
+
8562
+ return
8563
+
8564
+ value = self.subnode_experimental_relax_shapes
8565
+ if old_node is value:
8566
+ if new_node is not None:
8567
+ new_node.parent = self
8568
+
8569
+ self.subnode_experimental_relax_shapes = new_node
8570
+
8571
+ return
8572
+
8573
+ value = self.subnode_experimental_compile
8574
+ if old_node is value:
8575
+ if new_node is not None:
8576
+ new_node.parent = self
8577
+
8578
+ self.subnode_experimental_compile = new_node
8579
+
8580
+ return
8581
+
8582
+ value = self.subnode_experimental_follow_type_hints
8583
+ if old_node is value:
8584
+ if new_node is not None:
8585
+ new_node.parent = self
8586
+
8587
+ self.subnode_experimental_follow_type_hints = new_node
8588
+
8589
+ return
8590
+
8591
+ raise AssertionError("Didn't find child", old_node, "in", self)
8592
+
8593
+ def getCloneArgs(self):
8594
+ """Get clones of all children to pass for a new node.
8595
+
8596
+ Needs to make clones of child nodes too.
8597
+ """
8598
+
8599
+ values = {
8600
+ "func": (
8601
+ self.subnode_func.makeClone() if self.subnode_func is not None else None
8602
+ ),
8603
+ "input_signature": (
8604
+ self.subnode_input_signature.makeClone()
8605
+ if self.subnode_input_signature is not None
8606
+ else None
8607
+ ),
8608
+ "autograph": (
8609
+ self.subnode_autograph.makeClone()
8610
+ if self.subnode_autograph is not None
8611
+ else None
8612
+ ),
8613
+ "jit_compile": (
8614
+ self.subnode_jit_compile.makeClone()
8615
+ if self.subnode_jit_compile is not None
8616
+ else None
8617
+ ),
8618
+ "reduce_retracing": (
8619
+ self.subnode_reduce_retracing.makeClone()
8620
+ if self.subnode_reduce_retracing is not None
8621
+ else None
8622
+ ),
8623
+ "experimental_implements": (
8624
+ self.subnode_experimental_implements.makeClone()
8625
+ if self.subnode_experimental_implements is not None
8626
+ else None
8627
+ ),
8628
+ "experimental_autograph_options": (
8629
+ self.subnode_experimental_autograph_options.makeClone()
8630
+ if self.subnode_experimental_autograph_options is not None
8631
+ else None
8632
+ ),
8633
+ "experimental_attributes": (
8634
+ self.subnode_experimental_attributes.makeClone()
8635
+ if self.subnode_experimental_attributes is not None
8636
+ else None
8637
+ ),
8638
+ "experimental_relax_shapes": (
8639
+ self.subnode_experimental_relax_shapes.makeClone()
8640
+ if self.subnode_experimental_relax_shapes is not None
8641
+ else None
8642
+ ),
8643
+ "experimental_compile": (
8644
+ self.subnode_experimental_compile.makeClone()
8645
+ if self.subnode_experimental_compile is not None
8646
+ else None
8647
+ ),
8648
+ "experimental_follow_type_hints": (
8649
+ self.subnode_experimental_follow_type_hints.makeClone()
8650
+ if self.subnode_experimental_follow_type_hints is not None
8651
+ else None
8652
+ ),
8653
+ }
8654
+
8655
+ values.update(self.getDetails())
8656
+
8657
+ return values
8658
+
8659
+ def finalize(self):
8660
+ del self.parent
8661
+
8662
+ if self.subnode_func is not None:
8663
+ self.subnode_func.finalize()
8664
+ del self.subnode_func
8665
+ if self.subnode_input_signature is not None:
8666
+ self.subnode_input_signature.finalize()
8667
+ del self.subnode_input_signature
8668
+ if self.subnode_autograph is not None:
8669
+ self.subnode_autograph.finalize()
8670
+ del self.subnode_autograph
8671
+ if self.subnode_jit_compile is not None:
8672
+ self.subnode_jit_compile.finalize()
8673
+ del self.subnode_jit_compile
8674
+ if self.subnode_reduce_retracing is not None:
8675
+ self.subnode_reduce_retracing.finalize()
8676
+ del self.subnode_reduce_retracing
8677
+ if self.subnode_experimental_implements is not None:
8678
+ self.subnode_experimental_implements.finalize()
8679
+ del self.subnode_experimental_implements
8680
+ if self.subnode_experimental_autograph_options is not None:
8681
+ self.subnode_experimental_autograph_options.finalize()
8682
+ del self.subnode_experimental_autograph_options
8683
+ if self.subnode_experimental_attributes is not None:
8684
+ self.subnode_experimental_attributes.finalize()
8685
+ del self.subnode_experimental_attributes
8686
+ if self.subnode_experimental_relax_shapes is not None:
8687
+ self.subnode_experimental_relax_shapes.finalize()
8688
+ del self.subnode_experimental_relax_shapes
8689
+ if self.subnode_experimental_compile is not None:
8690
+ self.subnode_experimental_compile.finalize()
8691
+ del self.subnode_experimental_compile
8692
+ if self.subnode_experimental_follow_type_hints is not None:
8693
+ self.subnode_experimental_follow_type_hints.finalize()
8694
+ del self.subnode_experimental_follow_type_hints
8695
+
8696
+ def computeExpressionRaw(self, trace_collection):
8697
+ """Compute an expression.
8698
+
8699
+ Default behavior is to just visit the child expressions first, and
8700
+ then the node "computeExpression". For a few cases this needs to
8701
+ be overloaded, e.g. conditional expressions.
8702
+ """
8703
+
8704
+ # First apply the sub-expressions, as they are evaluated before
8705
+ # the actual operation.
8706
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
8707
+ expression = trace_collection.onExpression(sub_expression)
8708
+
8709
+ if expression.willRaiseAnyException():
8710
+ sub_expressions = self.getVisitableNodes()
8711
+
8712
+ wrapped_expression = wrapExpressionWithSideEffects(
8713
+ side_effects=sub_expressions[:count],
8714
+ old_node=sub_expression,
8715
+ new_node=expression,
8716
+ )
8717
+
8718
+ return (
8719
+ wrapped_expression,
8720
+ "new_raise",
8721
+ lambda: "For '%s' the child expression '%s' will raise."
8722
+ % (self.getChildNameNice(), expression.getChildNameNice()),
8723
+ )
8724
+
8725
+ # Then ask ourselves to work on it.
8726
+ return self.computeExpression(trace_collection)
8727
+
8728
+ def collectVariableAccesses(self, emit_read, emit_write):
8729
+ """Collect variable reads and writes of child nodes."""
8730
+
8731
+ subnode_func = self.subnode_func
8732
+
8733
+ if subnode_func is not None:
8734
+ self.subnode_func.collectVariableAccesses(emit_read, emit_write)
8735
+ subnode_input_signature = self.subnode_input_signature
8736
+
8737
+ if subnode_input_signature is not None:
8738
+ self.subnode_input_signature.collectVariableAccesses(emit_read, emit_write)
8739
+ subnode_autograph = self.subnode_autograph
8740
+
8741
+ if subnode_autograph is not None:
8742
+ self.subnode_autograph.collectVariableAccesses(emit_read, emit_write)
8743
+ subnode_jit_compile = self.subnode_jit_compile
8744
+
8745
+ if subnode_jit_compile is not None:
8746
+ self.subnode_jit_compile.collectVariableAccesses(emit_read, emit_write)
8747
+ subnode_reduce_retracing = self.subnode_reduce_retracing
8748
+
8749
+ if subnode_reduce_retracing is not None:
8750
+ self.subnode_reduce_retracing.collectVariableAccesses(emit_read, emit_write)
8751
+ subnode_experimental_implements = self.subnode_experimental_implements
8752
+
8753
+ if subnode_experimental_implements is not None:
8754
+ self.subnode_experimental_implements.collectVariableAccesses(
8755
+ emit_read, emit_write
8756
+ )
8757
+ subnode_experimental_autograph_options = (
8758
+ self.subnode_experimental_autograph_options
8759
+ )
8760
+
8761
+ if subnode_experimental_autograph_options is not None:
8762
+ self.subnode_experimental_autograph_options.collectVariableAccesses(
8763
+ emit_read, emit_write
8764
+ )
8765
+ subnode_experimental_attributes = self.subnode_experimental_attributes
8766
+
8767
+ if subnode_experimental_attributes is not None:
8768
+ self.subnode_experimental_attributes.collectVariableAccesses(
8769
+ emit_read, emit_write
8770
+ )
8771
+ subnode_experimental_relax_shapes = self.subnode_experimental_relax_shapes
8772
+
8773
+ if subnode_experimental_relax_shapes is not None:
8774
+ self.subnode_experimental_relax_shapes.collectVariableAccesses(
8775
+ emit_read, emit_write
8776
+ )
8777
+ subnode_experimental_compile = self.subnode_experimental_compile
8778
+
8779
+ if subnode_experimental_compile is not None:
8780
+ self.subnode_experimental_compile.collectVariableAccesses(
8781
+ emit_read, emit_write
8782
+ )
8783
+ subnode_experimental_follow_type_hints = (
8784
+ self.subnode_experimental_follow_type_hints
8785
+ )
8786
+
8787
+ if subnode_experimental_follow_type_hints is not None:
8788
+ self.subnode_experimental_follow_type_hints.collectVariableAccesses(
8789
+ emit_read, emit_write
8790
+ )
8791
+
8792
+
8793
+ # Assign the names that are easier to import with a stable name.
8794
+ ChildrenExpressionTensorflowFunctionMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
8795
+ ChildrenExpressionTensorflowFunctionCallMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
8796
+
8797
+
8272
8798
  class ChildrenHavingFunctionValuesTupleMixin(object):
8273
8799
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
8274
8800
  __slots__ = ()
@@ -8567,9 +9093,9 @@ class ChildrenHavingGroupNameOptionalMixin(object):
8567
9093
 
8568
9094
  values = {
8569
9095
  "group": self.subnode_group.makeClone(),
8570
- "name": self.subnode_name.makeClone()
8571
- if self.subnode_name is not None
8572
- else None,
9096
+ "name": (
9097
+ self.subnode_name.makeClone() if self.subnode_name is not None else None
9098
+ ),
8573
9099
  }
8574
9100
 
8575
9101
  values.update(self.getDetails())
@@ -9468,13 +9994,17 @@ class ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRe
9468
9994
  """
9469
9995
 
9470
9996
  values = {
9471
- "kw_defaults": self.subnode_kw_defaults.makeClone()
9472
- if self.subnode_kw_defaults is not None
9473
- else None,
9997
+ "kw_defaults": (
9998
+ self.subnode_kw_defaults.makeClone()
9999
+ if self.subnode_kw_defaults is not None
10000
+ else None
10001
+ ),
9474
10002
  "defaults": tuple(v.makeClone() for v in self.subnode_defaults),
9475
- "annotations": self.subnode_annotations.makeClone()
9476
- if self.subnode_annotations is not None
9477
- else None,
10003
+ "annotations": (
10004
+ self.subnode_annotations.makeClone()
10005
+ if self.subnode_annotations is not None
10006
+ else None
10007
+ ),
9478
10008
  "function_ref": self.subnode_function_ref.makeClone(),
9479
10009
  }
9480
10010
 
@@ -10328,9 +10858,9 @@ class ChildrenHavingListArgKeyOptionalReverseMixin(object):
10328
10858
 
10329
10859
  values = {
10330
10860
  "list_arg": self.subnode_list_arg.makeClone(),
10331
- "key": self.subnode_key.makeClone()
10332
- if self.subnode_key is not None
10333
- else None,
10861
+ "key": (
10862
+ self.subnode_key.makeClone() if self.subnode_key is not None else None
10863
+ ),
10334
10864
  "reverse": self.subnode_reverse.makeClone(),
10335
10865
  }
10336
10866
 
@@ -11552,18 +12082,26 @@ class ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevel
11552
12082
 
11553
12083
  values = {
11554
12084
  "name": self.subnode_name.makeClone(),
11555
- "globals_arg": self.subnode_globals_arg.makeClone()
11556
- if self.subnode_globals_arg is not None
11557
- else None,
11558
- "locals_arg": self.subnode_locals_arg.makeClone()
11559
- if self.subnode_locals_arg is not None
11560
- else None,
11561
- "fromlist": self.subnode_fromlist.makeClone()
11562
- if self.subnode_fromlist is not None
11563
- else None,
11564
- "level": self.subnode_level.makeClone()
11565
- if self.subnode_level is not None
11566
- else None,
12085
+ "globals_arg": (
12086
+ self.subnode_globals_arg.makeClone()
12087
+ if self.subnode_globals_arg is not None
12088
+ else None
12089
+ ),
12090
+ "locals_arg": (
12091
+ self.subnode_locals_arg.makeClone()
12092
+ if self.subnode_locals_arg is not None
12093
+ else None
12094
+ ),
12095
+ "fromlist": (
12096
+ self.subnode_fromlist.makeClone()
12097
+ if self.subnode_fromlist is not None
12098
+ else None
12099
+ ),
12100
+ "level": (
12101
+ self.subnode_level.makeClone()
12102
+ if self.subnode_level is not None
12103
+ else None
12104
+ ),
11567
12105
  }
11568
12106
 
11569
12107
  values.update(self.getDetails())
@@ -11783,18 +12321,24 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOp
11783
12321
 
11784
12322
  values = {
11785
12323
  "name": self.subnode_name.makeClone(),
11786
- "mode": self.subnode_mode.makeClone()
11787
- if self.subnode_mode is not None
11788
- else None,
11789
- "handle": self.subnode_handle.makeClone()
11790
- if self.subnode_handle is not None
11791
- else None,
11792
- "use_errno": self.subnode_use_errno.makeClone()
11793
- if self.subnode_use_errno is not None
11794
- else None,
11795
- "use_last_error": self.subnode_use_last_error.makeClone()
11796
- if self.subnode_use_last_error is not None
11797
- else None,
12324
+ "mode": (
12325
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
12326
+ ),
12327
+ "handle": (
12328
+ self.subnode_handle.makeClone()
12329
+ if self.subnode_handle is not None
12330
+ else None
12331
+ ),
12332
+ "use_errno": (
12333
+ self.subnode_use_errno.makeClone()
12334
+ if self.subnode_use_errno is not None
12335
+ else None
12336
+ ),
12337
+ "use_last_error": (
12338
+ self.subnode_use_last_error.makeClone()
12339
+ if self.subnode_use_last_error is not None
12340
+ else None
12341
+ ),
11798
12342
  }
11799
12343
 
11800
12344
  values.update(self.getDetails())
@@ -12035,21 +12579,29 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOp
12035
12579
 
12036
12580
  values = {
12037
12581
  "name": self.subnode_name.makeClone(),
12038
- "mode": self.subnode_mode.makeClone()
12039
- if self.subnode_mode is not None
12040
- else None,
12041
- "handle": self.subnode_handle.makeClone()
12042
- if self.subnode_handle is not None
12043
- else None,
12044
- "use_errno": self.subnode_use_errno.makeClone()
12045
- if self.subnode_use_errno is not None
12046
- else None,
12047
- "use_last_error": self.subnode_use_last_error.makeClone()
12048
- if self.subnode_use_last_error is not None
12049
- else None,
12050
- "winmode": self.subnode_winmode.makeClone()
12051
- if self.subnode_winmode is not None
12052
- else None,
12582
+ "mode": (
12583
+ self.subnode_mode.makeClone() if self.subnode_mode is not None else None
12584
+ ),
12585
+ "handle": (
12586
+ self.subnode_handle.makeClone()
12587
+ if self.subnode_handle is not None
12588
+ else None
12589
+ ),
12590
+ "use_errno": (
12591
+ self.subnode_use_errno.makeClone()
12592
+ if self.subnode_use_errno is not None
12593
+ else None
12594
+ ),
12595
+ "use_last_error": (
12596
+ self.subnode_use_last_error.makeClone()
12597
+ if self.subnode_use_last_error is not None
12598
+ else None
12599
+ ),
12600
+ "winmode": (
12601
+ self.subnode_winmode.makeClone()
12602
+ if self.subnode_winmode is not None
12603
+ else None
12604
+ ),
12053
12605
  }
12054
12606
 
12055
12607
  values.update(self.getDetails())
@@ -12211,9 +12763,11 @@ class ChildrenHavingNamePackageOptionalMixin(object):
12211
12763
 
12212
12764
  values = {
12213
12765
  "name": self.subnode_name.makeClone(),
12214
- "package": self.subnode_package.makeClone()
12215
- if self.subnode_package is not None
12216
- else None,
12766
+ "package": (
12767
+ self.subnode_package.makeClone()
12768
+ if self.subnode_package is not None
12769
+ else None
12770
+ ),
12217
12771
  }
12218
12772
 
12219
12773
  values.update(self.getDetails())
@@ -12820,12 +13374,16 @@ class ChildrenHavingPackageResourceEncodingOptionalErrorsOptionalMixin(object):
12820
13374
  values = {
12821
13375
  "package": self.subnode_package.makeClone(),
12822
13376
  "resource": self.subnode_resource.makeClone(),
12823
- "encoding": self.subnode_encoding.makeClone()
12824
- if self.subnode_encoding is not None
12825
- else None,
12826
- "errors": self.subnode_errors.makeClone()
12827
- if self.subnode_errors is not None
12828
- else None,
13377
+ "encoding": (
13378
+ self.subnode_encoding.makeClone()
13379
+ if self.subnode_encoding is not None
13380
+ else None
13381
+ ),
13382
+ "errors": (
13383
+ self.subnode_errors.makeClone()
13384
+ if self.subnode_errors is not None
13385
+ else None
13386
+ ),
12829
13387
  }
12830
13388
 
12831
13389
  values.update(self.getDetails())
@@ -13436,9 +13994,9 @@ class ChildHavingPathOptionalMixin(object):
13436
13994
  """
13437
13995
 
13438
13996
  values = {
13439
- "path": self.subnode_path.makeClone()
13440
- if self.subnode_path is not None
13441
- else None,
13997
+ "path": (
13998
+ self.subnode_path.makeClone() if self.subnode_path is not None else None
13999
+ ),
13442
14000
  }
13443
14001
 
13444
14002
  values.update(self.getDetails())
@@ -13569,9 +14127,11 @@ class ChildrenHavingPosArgOptionalPairsTupleMixin(object):
13569
14127
  """
13570
14128
 
13571
14129
  values = {
13572
- "pos_arg": self.subnode_pos_arg.makeClone()
13573
- if self.subnode_pos_arg is not None
13574
- else None,
14130
+ "pos_arg": (
14131
+ self.subnode_pos_arg.makeClone()
14132
+ if self.subnode_pos_arg is not None
14133
+ else None
14134
+ ),
13575
14135
  "pairs": tuple(v.makeClone() for v in self.subnode_pairs),
13576
14136
  }
13577
14137
 
@@ -13707,9 +14267,9 @@ class ChildrenHavingRealOptionalImagMixin(object):
13707
14267
  """
13708
14268
 
13709
14269
  values = {
13710
- "real": self.subnode_real.makeClone()
13711
- if self.subnode_real is not None
13712
- else None,
14270
+ "real": (
14271
+ self.subnode_real.makeClone() if self.subnode_real is not None else None
14272
+ ),
13713
14273
  "imag": self.subnode_imag.makeClone(),
13714
14274
  }
13715
14275
 
@@ -14707,15 +15267,21 @@ class ChildrenHavingSourceFilenameModeFlagsOptionalDontInheritOptionalOptimizeOp
14707
15267
  "source": self.subnode_source.makeClone(),
14708
15268
  "filename": self.subnode_filename.makeClone(),
14709
15269
  "mode": self.subnode_mode.makeClone(),
14710
- "flags": self.subnode_flags.makeClone()
14711
- if self.subnode_flags is not None
14712
- else None,
14713
- "dont_inherit": self.subnode_dont_inherit.makeClone()
14714
- if self.subnode_dont_inherit is not None
14715
- else None,
14716
- "optimize": self.subnode_optimize.makeClone()
14717
- if self.subnode_optimize is not None
14718
- else None,
15270
+ "flags": (
15271
+ self.subnode_flags.makeClone()
15272
+ if self.subnode_flags is not None
15273
+ else None
15274
+ ),
15275
+ "dont_inherit": (
15276
+ self.subnode_dont_inherit.makeClone()
15277
+ if self.subnode_dont_inherit is not None
15278
+ else None
15279
+ ),
15280
+ "optimize": (
15281
+ self.subnode_optimize.makeClone()
15282
+ if self.subnode_optimize is not None
15283
+ else None
15284
+ ),
14719
15285
  }
14720
15286
 
14721
15287
  values.update(self.getDetails())
@@ -15048,9 +15614,11 @@ class ChildrenHavingSourceCodeGlobalsArgLocalsArgClosureOptionalMixin(object):
15048
15614
  "source_code": self.subnode_source_code.makeClone(),
15049
15615
  "globals_arg": self.subnode_globals_arg.makeClone(),
15050
15616
  "locals_arg": self.subnode_locals_arg.makeClone(),
15051
- "closure": self.subnode_closure.makeClone()
15052
- if self.subnode_closure is not None
15053
- else None,
15617
+ "closure": (
15618
+ self.subnode_closure.makeClone()
15619
+ if self.subnode_closure is not None
15620
+ else None
15621
+ ),
15054
15622
  }
15055
15623
 
15056
15624
  values.update(self.getDetails())
@@ -18958,12 +19526,16 @@ class ChildrenHavingStringEncodingOptionalErrorsOptionalMixin(object):
18958
19526
 
18959
19527
  values = {
18960
19528
  "string": self.subnode_string.makeClone(),
18961
- "encoding": self.subnode_encoding.makeClone()
18962
- if self.subnode_encoding is not None
18963
- else None,
18964
- "errors": self.subnode_errors.makeClone()
18965
- if self.subnode_errors is not None
18966
- else None,
19529
+ "encoding": (
19530
+ self.subnode_encoding.makeClone()
19531
+ if self.subnode_encoding is not None
19532
+ else None
19533
+ ),
19534
+ "errors": (
19535
+ self.subnode_errors.makeClone()
19536
+ if self.subnode_errors is not None
19537
+ else None
19538
+ ),
18967
19539
  }
18968
19540
 
18969
19541
  values.update(self.getDetails())
@@ -19218,12 +19790,14 @@ class ChildrenHavingTypeArgArgsOptionalKwargsOptionalMixin(object):
19218
19790
 
19219
19791
  values = {
19220
19792
  "type_arg": self.subnode_type_arg.makeClone(),
19221
- "args": self.subnode_args.makeClone()
19222
- if self.subnode_args is not None
19223
- else None,
19224
- "kwargs": self.subnode_kwargs.makeClone()
19225
- if self.subnode_kwargs is not None
19226
- else None,
19793
+ "args": (
19794
+ self.subnode_args.makeClone() if self.subnode_args is not None else None
19795
+ ),
19796
+ "kwargs": (
19797
+ self.subnode_kwargs.makeClone()
19798
+ if self.subnode_kwargs is not None
19799
+ else None
19800
+ ),
19227
19801
  }
19228
19802
 
19229
19803
  values.update(self.getDetails())
@@ -19563,6 +20137,142 @@ class ChildrenHavingTypeNameBasesDictArgMixin(object):
19563
20137
  ChildrenExpressionBuiltinType3Mixin = ChildrenHavingTypeNameBasesDictArgMixin
19564
20138
 
19565
20139
 
20140
+ class ChildrenHavingTypeParamsTupleComputeValueMixin(object):
20141
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
20142
+ __slots__ = ()
20143
+
20144
+ # This is generated for use in
20145
+ # ExpressionTypeAlias
20146
+
20147
+ def __init__(
20148
+ self,
20149
+ type_params,
20150
+ compute_value,
20151
+ ):
20152
+ assert type(type_params) is tuple
20153
+
20154
+ for val in type_params:
20155
+ val.parent = self
20156
+
20157
+ self.subnode_type_params = type_params
20158
+
20159
+ compute_value.parent = self
20160
+
20161
+ self.subnode_compute_value = compute_value
20162
+
20163
+ def getVisitableNodes(self):
20164
+ """The visitable nodes, with tuple values flattened."""
20165
+
20166
+ result = []
20167
+ result.extend(self.subnode_type_params)
20168
+ result.append(self.subnode_compute_value)
20169
+ return tuple(result)
20170
+
20171
+ def getVisitableNodesNamed(self):
20172
+ """Named children dictionary.
20173
+
20174
+ For use in cloning nodes, debugging and XML output.
20175
+ """
20176
+
20177
+ return (
20178
+ ("type_params", self.subnode_type_params),
20179
+ ("compute_value", self.subnode_compute_value),
20180
+ )
20181
+
20182
+ def replaceChild(self, old_node, new_node):
20183
+ value = self.subnode_type_params
20184
+ if old_node in value:
20185
+ if new_node is not None:
20186
+ new_node.parent = self
20187
+
20188
+ self.subnode_type_params = tuple(
20189
+ (val if val is not old_node else new_node) for val in value
20190
+ )
20191
+ else:
20192
+ self.subnode_type_params = tuple(
20193
+ val for val in value if val is not old_node
20194
+ )
20195
+
20196
+ return
20197
+
20198
+ value = self.subnode_compute_value
20199
+ if old_node is value:
20200
+ new_node.parent = self
20201
+
20202
+ self.subnode_compute_value = new_node
20203
+
20204
+ return
20205
+
20206
+ raise AssertionError("Didn't find child", old_node, "in", self)
20207
+
20208
+ def getCloneArgs(self):
20209
+ """Get clones of all children to pass for a new node.
20210
+
20211
+ Needs to make clones of child nodes too.
20212
+ """
20213
+
20214
+ values = {
20215
+ "type_params": tuple(v.makeClone() for v in self.subnode_type_params),
20216
+ "compute_value": self.subnode_compute_value.makeClone(),
20217
+ }
20218
+
20219
+ values.update(self.getDetails())
20220
+
20221
+ return values
20222
+
20223
+ def finalize(self):
20224
+ del self.parent
20225
+
20226
+ for c in self.subnode_type_params:
20227
+ c.finalize()
20228
+ del self.subnode_type_params
20229
+ self.subnode_compute_value.finalize()
20230
+ del self.subnode_compute_value
20231
+
20232
+ def computeExpressionRaw(self, trace_collection):
20233
+ """Compute an expression.
20234
+
20235
+ Default behavior is to just visit the child expressions first, and
20236
+ then the node "computeExpression". For a few cases this needs to
20237
+ be overloaded, e.g. conditional expressions.
20238
+ """
20239
+
20240
+ # First apply the sub-expressions, as they are evaluated before
20241
+ # the actual operation.
20242
+ for count, sub_expression in enumerate(self.getVisitableNodes()):
20243
+ expression = trace_collection.onExpression(sub_expression)
20244
+
20245
+ if expression.willRaiseAnyException():
20246
+ sub_expressions = self.getVisitableNodes()
20247
+
20248
+ wrapped_expression = wrapExpressionWithSideEffects(
20249
+ side_effects=sub_expressions[:count],
20250
+ old_node=sub_expression,
20251
+ new_node=expression,
20252
+ )
20253
+
20254
+ return (
20255
+ wrapped_expression,
20256
+ "new_raise",
20257
+ lambda: "For '%s' the child expression '%s' will raise."
20258
+ % (self.getChildNameNice(), expression.getChildNameNice()),
20259
+ )
20260
+
20261
+ # Then ask ourselves to work on it.
20262
+ return self.computeExpression(trace_collection)
20263
+
20264
+ def collectVariableAccesses(self, emit_read, emit_write):
20265
+ """Collect variable reads and writes of child nodes."""
20266
+
20267
+ for element in self.subnode_type_params:
20268
+ element.collectVariableAccesses(emit_read, emit_write)
20269
+ self.subnode_compute_value.collectVariableAccesses(emit_read, emit_write)
20270
+
20271
+
20272
+ # Assign the names that are easier to import with a stable name.
20273
+ ChildrenExpressionTypeAliasMixin = ChildrenHavingTypeParamsTupleComputeValueMixin
20274
+
20275
+
19566
20276
  class ChildHavingValueMixin(object):
19567
20277
  # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
19568
20278
  __slots__ = ()
@@ -19794,9 +20504,11 @@ class ChildrenHavingValueOptionalBaseMixin(object):
19794
20504
  """
19795
20505
 
19796
20506
  values = {
19797
- "value": self.subnode_value.makeClone()
19798
- if self.subnode_value is not None
19799
- else None,
20507
+ "value": (
20508
+ self.subnode_value.makeClone()
20509
+ if self.subnode_value is not None
20510
+ else None
20511
+ ),
19800
20512
  "base": self.subnode_base.makeClone(),
19801
20513
  }
19802
20514
 
@@ -19960,15 +20672,21 @@ class ChildrenHavingValueOptionalEncodingOptionalErrorsOptionalMixin(object):
19960
20672
  """
19961
20673
 
19962
20674
  values = {
19963
- "value": self.subnode_value.makeClone()
19964
- if self.subnode_value is not None
19965
- else None,
19966
- "encoding": self.subnode_encoding.makeClone()
19967
- if self.subnode_encoding is not None
19968
- else None,
19969
- "errors": self.subnode_errors.makeClone()
19970
- if self.subnode_errors is not None
19971
- else None,
20675
+ "value": (
20676
+ self.subnode_value.makeClone()
20677
+ if self.subnode_value is not None
20678
+ else None
20679
+ ),
20680
+ "encoding": (
20681
+ self.subnode_encoding.makeClone()
20682
+ if self.subnode_encoding is not None
20683
+ else None
20684
+ ),
20685
+ "errors": (
20686
+ self.subnode_errors.makeClone()
20687
+ if self.subnode_errors is not None
20688
+ else None
20689
+ ),
19972
20690
  }
19973
20691
 
19974
20692
  values.update(self.getDetails())
@@ -20123,9 +20841,11 @@ class ChildrenHavingValueFormatSpecOptionalAutoNoneEmptyStrMixin(object):
20123
20841
 
20124
20842
  values = {
20125
20843
  "value": self.subnode_value.makeClone(),
20126
- "format_spec": self.subnode_format_spec.makeClone()
20127
- if self.subnode_format_spec is not None
20128
- else None,
20844
+ "format_spec": (
20845
+ self.subnode_format_spec.makeClone()
20846
+ if self.subnode_format_spec is not None
20847
+ else None
20848
+ ),
20129
20849
  }
20130
20850
 
20131
20851
  values.update(self.getDetails())