Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.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.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
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,
|
|
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
|
|
30
|
-
spell-checker: ignore
|
|
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":
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
#
|
|
285
|
-
#
|
|
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":
|
|
347
|
-
|
|
348
|
-
|
|
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
|
-
|
|
399
|
-
|
|
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":
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
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
|
|
|
@@ -6068,7 +6079,7 @@ ChildrenExpressionMakeSetLiteralMixin = ChildHavingElementsTupleMixin
|
|
|
6068
6079
|
ChildrenExpressionMakeTupleMixin = ChildHavingElementsTupleMixin
|
|
6069
6080
|
|
|
6070
6081
|
|
|
6071
|
-
class
|
|
6082
|
+
class ChildHavingExceptionTypeMixin(object):
|
|
6072
6083
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
6073
6084
|
__slots__ = ()
|
|
6074
6085
|
|
|
@@ -6078,23 +6089,15 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6078
6089
|
def __init__(
|
|
6079
6090
|
self,
|
|
6080
6091
|
exception_type,
|
|
6081
|
-
exception_value,
|
|
6082
6092
|
):
|
|
6083
6093
|
exception_type.parent = self
|
|
6084
6094
|
|
|
6085
6095
|
self.subnode_exception_type = exception_type
|
|
6086
6096
|
|
|
6087
|
-
exception_value.parent = self
|
|
6088
|
-
|
|
6089
|
-
self.subnode_exception_value = exception_value
|
|
6090
|
-
|
|
6091
6097
|
def getVisitableNodes(self):
|
|
6092
6098
|
"""The visitable nodes, with tuple values flattened."""
|
|
6093
6099
|
|
|
6094
|
-
return (
|
|
6095
|
-
self.subnode_exception_type,
|
|
6096
|
-
self.subnode_exception_value,
|
|
6097
|
-
)
|
|
6100
|
+
return (self.subnode_exception_type,)
|
|
6098
6101
|
|
|
6099
6102
|
def getVisitableNodesNamed(self):
|
|
6100
6103
|
"""Named children dictionary.
|
|
@@ -6102,10 +6105,7 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6102
6105
|
For use in cloning nodes, debugging and XML output.
|
|
6103
6106
|
"""
|
|
6104
6107
|
|
|
6105
|
-
return (
|
|
6106
|
-
("exception_type", self.subnode_exception_type),
|
|
6107
|
-
("exception_value", self.subnode_exception_value),
|
|
6108
|
-
)
|
|
6108
|
+
return (("exception_type", self.subnode_exception_type),)
|
|
6109
6109
|
|
|
6110
6110
|
def replaceChild(self, old_node, new_node):
|
|
6111
6111
|
value = self.subnode_exception_type
|
|
@@ -6116,11 +6116,101 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6116
6116
|
|
|
6117
6117
|
return
|
|
6118
6118
|
|
|
6119
|
-
|
|
6119
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
6120
|
+
|
|
6121
|
+
def getCloneArgs(self):
|
|
6122
|
+
"""Get clones of all children to pass for a new node.
|
|
6123
|
+
|
|
6124
|
+
Needs to make clones of child nodes too.
|
|
6125
|
+
"""
|
|
6126
|
+
|
|
6127
|
+
values = {
|
|
6128
|
+
"exception_type": self.subnode_exception_type.makeClone(),
|
|
6129
|
+
}
|
|
6130
|
+
|
|
6131
|
+
values.update(self.getDetails())
|
|
6132
|
+
|
|
6133
|
+
return values
|
|
6134
|
+
|
|
6135
|
+
def finalize(self):
|
|
6136
|
+
del self.parent
|
|
6137
|
+
|
|
6138
|
+
self.subnode_exception_type.finalize()
|
|
6139
|
+
del self.subnode_exception_type
|
|
6140
|
+
|
|
6141
|
+
def computeExpressionRaw(self, trace_collection):
|
|
6142
|
+
"""Compute an expression.
|
|
6143
|
+
|
|
6144
|
+
Default behavior is to just visit the child expressions first, and
|
|
6145
|
+
then the node "computeExpression". For a few cases this needs to
|
|
6146
|
+
be overloaded, e.g. conditional expressions.
|
|
6147
|
+
"""
|
|
6148
|
+
|
|
6149
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
6150
|
+
expression = trace_collection.onExpression(self.subnode_exception_type)
|
|
6151
|
+
|
|
6152
|
+
if expression.willRaiseAnyException():
|
|
6153
|
+
return (
|
|
6154
|
+
expression,
|
|
6155
|
+
"new_raise",
|
|
6156
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
6157
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
6158
|
+
)
|
|
6159
|
+
|
|
6160
|
+
# Then ask ourselves to work on it.
|
|
6161
|
+
return self.computeExpression(trace_collection)
|
|
6162
|
+
|
|
6163
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
6164
|
+
"""Collect variable reads and writes of child nodes."""
|
|
6165
|
+
|
|
6166
|
+
self.subnode_exception_type.collectVariableAccesses(emit_read, emit_write)
|
|
6167
|
+
|
|
6168
|
+
|
|
6169
|
+
# Assign the names that are easier to import with a stable name.
|
|
6170
|
+
ChildrenExpressionRaiseExceptionMixin = ChildHavingExceptionTypeMixin
|
|
6171
|
+
|
|
6172
|
+
|
|
6173
|
+
class ChildHavingExitCodeOptionalMixin(object):
|
|
6174
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
6175
|
+
__slots__ = ()
|
|
6176
|
+
|
|
6177
|
+
# This is generated for use in
|
|
6178
|
+
# ExpressionSysExit
|
|
6179
|
+
|
|
6180
|
+
def __init__(
|
|
6181
|
+
self,
|
|
6182
|
+
exit_code,
|
|
6183
|
+
):
|
|
6184
|
+
if exit_code is not None:
|
|
6185
|
+
exit_code.parent = self
|
|
6186
|
+
|
|
6187
|
+
self.subnode_exit_code = exit_code
|
|
6188
|
+
|
|
6189
|
+
def getVisitableNodes(self):
|
|
6190
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
6191
|
+
|
|
6192
|
+
value = self.subnode_exit_code
|
|
6193
|
+
|
|
6194
|
+
if value is None:
|
|
6195
|
+
return ()
|
|
6196
|
+
else:
|
|
6197
|
+
return (value,)
|
|
6198
|
+
|
|
6199
|
+
def getVisitableNodesNamed(self):
|
|
6200
|
+
"""Named children dictionary.
|
|
6201
|
+
|
|
6202
|
+
For use in cloning nodes, debugging and XML output.
|
|
6203
|
+
"""
|
|
6204
|
+
|
|
6205
|
+
return (("exit_code", self.subnode_exit_code),)
|
|
6206
|
+
|
|
6207
|
+
def replaceChild(self, old_node, new_node):
|
|
6208
|
+
value = self.subnode_exit_code
|
|
6120
6209
|
if old_node is value:
|
|
6121
|
-
new_node
|
|
6210
|
+
if new_node is not None:
|
|
6211
|
+
new_node.parent = self
|
|
6122
6212
|
|
|
6123
|
-
self.
|
|
6213
|
+
self.subnode_exit_code = new_node
|
|
6124
6214
|
|
|
6125
6215
|
return
|
|
6126
6216
|
|
|
@@ -6133,8 +6223,11 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6133
6223
|
"""
|
|
6134
6224
|
|
|
6135
6225
|
values = {
|
|
6136
|
-
"
|
|
6137
|
-
|
|
6226
|
+
"exit_code": (
|
|
6227
|
+
self.subnode_exit_code.makeClone()
|
|
6228
|
+
if self.subnode_exit_code is not None
|
|
6229
|
+
else None
|
|
6230
|
+
),
|
|
6138
6231
|
}
|
|
6139
6232
|
|
|
6140
6233
|
values.update(self.getDetails())
|
|
@@ -6144,10 +6237,9 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6144
6237
|
def finalize(self):
|
|
6145
6238
|
del self.parent
|
|
6146
6239
|
|
|
6147
|
-
self.
|
|
6148
|
-
|
|
6149
|
-
self.
|
|
6150
|
-
del self.subnode_exception_value
|
|
6240
|
+
if self.subnode_exit_code is not None:
|
|
6241
|
+
self.subnode_exit_code.finalize()
|
|
6242
|
+
del self.subnode_exit_code
|
|
6151
6243
|
|
|
6152
6244
|
def computeExpressionRaw(self, trace_collection):
|
|
6153
6245
|
"""Compute an expression.
|
|
@@ -6157,22 +6249,15 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6157
6249
|
be overloaded, e.g. conditional expressions.
|
|
6158
6250
|
"""
|
|
6159
6251
|
|
|
6160
|
-
# First apply the sub-
|
|
6161
|
-
|
|
6162
|
-
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
6163
|
-
expression = trace_collection.onExpression(sub_expression)
|
|
6164
|
-
|
|
6165
|
-
if expression.willRaiseAnyException():
|
|
6166
|
-
sub_expressions = self.getVisitableNodes()
|
|
6252
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
6253
|
+
expression = self.subnode_exit_code
|
|
6167
6254
|
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
old_node=sub_expression,
|
|
6171
|
-
new_node=expression,
|
|
6172
|
-
)
|
|
6255
|
+
if expression is not None:
|
|
6256
|
+
expression = trace_collection.onExpression(expression)
|
|
6173
6257
|
|
|
6258
|
+
if expression.willRaiseAnyException():
|
|
6174
6259
|
return (
|
|
6175
|
-
|
|
6260
|
+
expression,
|
|
6176
6261
|
"new_raise",
|
|
6177
6262
|
lambda: "For '%s' the child expression '%s' will raise."
|
|
6178
6263
|
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
@@ -6184,12 +6269,14 @@ class ChildrenHavingExceptionTypeExceptionValueMixin(object):
|
|
|
6184
6269
|
def collectVariableAccesses(self, emit_read, emit_write):
|
|
6185
6270
|
"""Collect variable reads and writes of child nodes."""
|
|
6186
6271
|
|
|
6187
|
-
self.
|
|
6188
|
-
|
|
6272
|
+
subnode_exit_code = self.subnode_exit_code
|
|
6273
|
+
|
|
6274
|
+
if subnode_exit_code is not None:
|
|
6275
|
+
self.subnode_exit_code.collectVariableAccesses(emit_read, emit_write)
|
|
6189
6276
|
|
|
6190
6277
|
|
|
6191
6278
|
# Assign the names that are easier to import with a stable name.
|
|
6192
|
-
|
|
6279
|
+
ChildrenExpressionSysExitMixin = ChildHavingExitCodeOptionalMixin
|
|
6193
6280
|
|
|
6194
6281
|
|
|
6195
6282
|
class ChildHavingExpressionMixin(object):
|
|
@@ -6384,10 +6471,9 @@ class ChildHavingExpressionMixin(object):
|
|
|
6384
6471
|
# ExpressionAttributeLookupStrUpper
|
|
6385
6472
|
# ExpressionAttributeLookupStrZfill
|
|
6386
6473
|
# ExpressionAttributeLookupTypePrepare
|
|
6387
|
-
# ExpressionMatchArgs
|
|
6388
6474
|
# ExpressionYield
|
|
6389
6475
|
# ExpressionYieldFrom
|
|
6390
|
-
#
|
|
6476
|
+
# ExpressionYieldFromAwaitable
|
|
6391
6477
|
|
|
6392
6478
|
def __init__(
|
|
6393
6479
|
self,
|
|
@@ -6657,10 +6743,9 @@ ChildrenExpressionAttributeLookupStrTranslateMixin = ChildHavingExpressionMixin
|
|
|
6657
6743
|
ChildrenExpressionAttributeLookupStrUpperMixin = ChildHavingExpressionMixin
|
|
6658
6744
|
ChildrenExpressionAttributeLookupStrZfillMixin = ChildHavingExpressionMixin
|
|
6659
6745
|
ChildrenExpressionAttributeLookupTypePrepareMixin = ChildHavingExpressionMixin
|
|
6660
|
-
ChildrenExpressionMatchArgsMixin = ChildHavingExpressionMixin
|
|
6661
6746
|
ChildrenExpressionYieldMixin = ChildHavingExpressionMixin
|
|
6662
6747
|
ChildrenExpressionYieldFromMixin = ChildHavingExpressionMixin
|
|
6663
|
-
|
|
6748
|
+
ChildrenExpressionYieldFromAwaitableMixin = ChildHavingExpressionMixin
|
|
6664
6749
|
|
|
6665
6750
|
|
|
6666
6751
|
class ChildrenHavingExpressionLowerAutoNoneUpperAutoNoneMixin(object):
|
|
@@ -6760,12 +6845,16 @@ class ChildrenHavingExpressionLowerAutoNoneUpperAutoNoneMixin(object):
|
|
|
6760
6845
|
|
|
6761
6846
|
values = {
|
|
6762
6847
|
"expression": self.subnode_expression.makeClone(),
|
|
6763
|
-
"lower":
|
|
6764
|
-
|
|
6765
|
-
|
|
6766
|
-
|
|
6767
|
-
|
|
6768
|
-
|
|
6848
|
+
"lower": (
|
|
6849
|
+
self.subnode_lower.makeClone()
|
|
6850
|
+
if self.subnode_lower is not None
|
|
6851
|
+
else None
|
|
6852
|
+
),
|
|
6853
|
+
"upper": (
|
|
6854
|
+
self.subnode_upper.makeClone()
|
|
6855
|
+
if self.subnode_upper is not None
|
|
6856
|
+
else None
|
|
6857
|
+
),
|
|
6769
6858
|
}
|
|
6770
6859
|
|
|
6771
6860
|
values.update(self.getDetails())
|
|
@@ -6836,6 +6925,130 @@ ChildrenExpressionSliceLookupMixin = (
|
|
|
6836
6925
|
)
|
|
6837
6926
|
|
|
6838
6927
|
|
|
6928
|
+
class ChildrenHavingExpressionMatchTypeMixin(object):
|
|
6929
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
6930
|
+
__slots__ = ()
|
|
6931
|
+
|
|
6932
|
+
# This is generated for use in
|
|
6933
|
+
# ExpressionMatchArgs
|
|
6934
|
+
|
|
6935
|
+
def __init__(
|
|
6936
|
+
self,
|
|
6937
|
+
expression,
|
|
6938
|
+
match_type,
|
|
6939
|
+
):
|
|
6940
|
+
expression.parent = self
|
|
6941
|
+
|
|
6942
|
+
self.subnode_expression = expression
|
|
6943
|
+
|
|
6944
|
+
match_type.parent = self
|
|
6945
|
+
|
|
6946
|
+
self.subnode_match_type = match_type
|
|
6947
|
+
|
|
6948
|
+
def getVisitableNodes(self):
|
|
6949
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
6950
|
+
|
|
6951
|
+
return (
|
|
6952
|
+
self.subnode_expression,
|
|
6953
|
+
self.subnode_match_type,
|
|
6954
|
+
)
|
|
6955
|
+
|
|
6956
|
+
def getVisitableNodesNamed(self):
|
|
6957
|
+
"""Named children dictionary.
|
|
6958
|
+
|
|
6959
|
+
For use in cloning nodes, debugging and XML output.
|
|
6960
|
+
"""
|
|
6961
|
+
|
|
6962
|
+
return (
|
|
6963
|
+
("expression", self.subnode_expression),
|
|
6964
|
+
("match_type", self.subnode_match_type),
|
|
6965
|
+
)
|
|
6966
|
+
|
|
6967
|
+
def replaceChild(self, old_node, new_node):
|
|
6968
|
+
value = self.subnode_expression
|
|
6969
|
+
if old_node is value:
|
|
6970
|
+
new_node.parent = self
|
|
6971
|
+
|
|
6972
|
+
self.subnode_expression = new_node
|
|
6973
|
+
|
|
6974
|
+
return
|
|
6975
|
+
|
|
6976
|
+
value = self.subnode_match_type
|
|
6977
|
+
if old_node is value:
|
|
6978
|
+
new_node.parent = self
|
|
6979
|
+
|
|
6980
|
+
self.subnode_match_type = new_node
|
|
6981
|
+
|
|
6982
|
+
return
|
|
6983
|
+
|
|
6984
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
6985
|
+
|
|
6986
|
+
def getCloneArgs(self):
|
|
6987
|
+
"""Get clones of all children to pass for a new node.
|
|
6988
|
+
|
|
6989
|
+
Needs to make clones of child nodes too.
|
|
6990
|
+
"""
|
|
6991
|
+
|
|
6992
|
+
values = {
|
|
6993
|
+
"expression": self.subnode_expression.makeClone(),
|
|
6994
|
+
"match_type": self.subnode_match_type.makeClone(),
|
|
6995
|
+
}
|
|
6996
|
+
|
|
6997
|
+
values.update(self.getDetails())
|
|
6998
|
+
|
|
6999
|
+
return values
|
|
7000
|
+
|
|
7001
|
+
def finalize(self):
|
|
7002
|
+
del self.parent
|
|
7003
|
+
|
|
7004
|
+
self.subnode_expression.finalize()
|
|
7005
|
+
del self.subnode_expression
|
|
7006
|
+
self.subnode_match_type.finalize()
|
|
7007
|
+
del self.subnode_match_type
|
|
7008
|
+
|
|
7009
|
+
def computeExpressionRaw(self, trace_collection):
|
|
7010
|
+
"""Compute an expression.
|
|
7011
|
+
|
|
7012
|
+
Default behavior is to just visit the child expressions first, and
|
|
7013
|
+
then the node "computeExpression". For a few cases this needs to
|
|
7014
|
+
be overloaded, e.g. conditional expressions.
|
|
7015
|
+
"""
|
|
7016
|
+
|
|
7017
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
7018
|
+
# the actual operation.
|
|
7019
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
7020
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
7021
|
+
|
|
7022
|
+
if expression.willRaiseAnyException():
|
|
7023
|
+
sub_expressions = self.getVisitableNodes()
|
|
7024
|
+
|
|
7025
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
7026
|
+
side_effects=sub_expressions[:count],
|
|
7027
|
+
old_node=sub_expression,
|
|
7028
|
+
new_node=expression,
|
|
7029
|
+
)
|
|
7030
|
+
|
|
7031
|
+
return (
|
|
7032
|
+
wrapped_expression,
|
|
7033
|
+
"new_raise",
|
|
7034
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
7035
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
7036
|
+
)
|
|
7037
|
+
|
|
7038
|
+
# Then ask ourselves to work on it.
|
|
7039
|
+
return self.computeExpression(trace_collection)
|
|
7040
|
+
|
|
7041
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
7042
|
+
"""Collect variable reads and writes of child nodes."""
|
|
7043
|
+
|
|
7044
|
+
self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
|
|
7045
|
+
self.subnode_match_type.collectVariableAccesses(emit_read, emit_write)
|
|
7046
|
+
|
|
7047
|
+
|
|
7048
|
+
# Assign the names that are easier to import with a stable name.
|
|
7049
|
+
ChildrenExpressionMatchArgsMixin = ChildrenHavingExpressionMatchTypeMixin
|
|
7050
|
+
|
|
7051
|
+
|
|
6839
7052
|
class ChildrenHavingExpressionNameDefaultOptionalMixin(object):
|
|
6840
7053
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
6841
7054
|
__slots__ = ()
|
|
@@ -6924,9 +7137,11 @@ class ChildrenHavingExpressionNameDefaultOptionalMixin(object):
|
|
|
6924
7137
|
values = {
|
|
6925
7138
|
"expression": self.subnode_expression.makeClone(),
|
|
6926
7139
|
"name": self.subnode_name.makeClone(),
|
|
6927
|
-
"default":
|
|
6928
|
-
|
|
6929
|
-
|
|
7140
|
+
"default": (
|
|
7141
|
+
self.subnode_default.makeClone()
|
|
7142
|
+
if self.subnode_default is not None
|
|
7143
|
+
else None
|
|
7144
|
+
),
|
|
6930
7145
|
}
|
|
6931
7146
|
|
|
6932
7147
|
values.update(self.getDetails())
|
|
@@ -7139,7 +7354,7 @@ class ChildrenHavingExpressionSubscriptMixin(object):
|
|
|
7139
7354
|
__slots__ = ()
|
|
7140
7355
|
|
|
7141
7356
|
# This is generated for use in
|
|
7142
|
-
#
|
|
7357
|
+
# ExpressionMatchSubscriptCheck
|
|
7143
7358
|
# ExpressionSubscriptLookup
|
|
7144
7359
|
# ExpressionSubscriptLookupForUnpack
|
|
7145
7360
|
|
|
@@ -7257,7 +7472,7 @@ class ChildrenHavingExpressionSubscriptMixin(object):
|
|
|
7257
7472
|
|
|
7258
7473
|
|
|
7259
7474
|
# Assign the names that are easier to import with a stable name.
|
|
7260
|
-
|
|
7475
|
+
ChildrenExpressionMatchSubscriptCheckMixin = ChildrenHavingExpressionSubscriptMixin
|
|
7261
7476
|
ChildrenExpressionSubscriptLookupMixin = ChildrenHavingExpressionSubscriptMixin
|
|
7262
7477
|
ChildrenExpressionSubscriptLookupForUnpackMixin = ChildrenHavingExpressionSubscriptMixin
|
|
7263
7478
|
|
|
@@ -7448,12 +7663,14 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalMixin(object):
|
|
|
7448
7663
|
|
|
7449
7664
|
values = {
|
|
7450
7665
|
"filename": self.subnode_filename.makeClone(),
|
|
7451
|
-
"mode":
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
"buffering":
|
|
7455
|
-
|
|
7456
|
-
|
|
7666
|
+
"mode": (
|
|
7667
|
+
self.subnode_mode.makeClone() if self.subnode_mode is not None else None
|
|
7668
|
+
),
|
|
7669
|
+
"buffering": (
|
|
7670
|
+
self.subnode_buffering.makeClone()
|
|
7671
|
+
if self.subnode_buffering is not None
|
|
7672
|
+
else None
|
|
7673
|
+
),
|
|
7457
7674
|
}
|
|
7458
7675
|
|
|
7459
7676
|
values.update(self.getDetails())
|
|
@@ -7724,27 +7941,39 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
|
|
|
7724
7941
|
|
|
7725
7942
|
values = {
|
|
7726
7943
|
"filename": self.subnode_filename.makeClone(),
|
|
7727
|
-
"mode":
|
|
7728
|
-
|
|
7729
|
-
|
|
7730
|
-
"buffering":
|
|
7731
|
-
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
|
|
7735
|
-
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
"
|
|
7746
|
-
|
|
7747
|
-
|
|
7944
|
+
"mode": (
|
|
7945
|
+
self.subnode_mode.makeClone() if self.subnode_mode is not None else None
|
|
7946
|
+
),
|
|
7947
|
+
"buffering": (
|
|
7948
|
+
self.subnode_buffering.makeClone()
|
|
7949
|
+
if self.subnode_buffering is not None
|
|
7950
|
+
else None
|
|
7951
|
+
),
|
|
7952
|
+
"encoding": (
|
|
7953
|
+
self.subnode_encoding.makeClone()
|
|
7954
|
+
if self.subnode_encoding is not None
|
|
7955
|
+
else None
|
|
7956
|
+
),
|
|
7957
|
+
"errors": (
|
|
7958
|
+
self.subnode_errors.makeClone()
|
|
7959
|
+
if self.subnode_errors is not None
|
|
7960
|
+
else None
|
|
7961
|
+
),
|
|
7962
|
+
"newline": (
|
|
7963
|
+
self.subnode_newline.makeClone()
|
|
7964
|
+
if self.subnode_newline is not None
|
|
7965
|
+
else None
|
|
7966
|
+
),
|
|
7967
|
+
"closefd": (
|
|
7968
|
+
self.subnode_closefd.makeClone()
|
|
7969
|
+
if self.subnode_closefd is not None
|
|
7970
|
+
else None
|
|
7971
|
+
),
|
|
7972
|
+
"opener": (
|
|
7973
|
+
self.subnode_opener.makeClone()
|
|
7974
|
+
if self.subnode_opener is not None
|
|
7975
|
+
else None
|
|
7976
|
+
),
|
|
7748
7977
|
}
|
|
7749
7978
|
|
|
7750
7979
|
values.update(self.getDetails())
|
|
@@ -7848,30 +8077,503 @@ class ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsO
|
|
|
7848
8077
|
ChildrenExpressionBuiltinOpenP3Mixin = ChildrenHavingFilenameModeOptionalBufferingOptionalEncodingOptionalErrorsOptionalNewlineOptionalClosefdOptionalOpenerOptionalMixin
|
|
7849
8078
|
|
|
7850
8079
|
|
|
7851
|
-
class
|
|
8080
|
+
class ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin(
|
|
8081
|
+
object
|
|
8082
|
+
):
|
|
7852
8083
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
7853
8084
|
__slots__ = ()
|
|
7854
8085
|
|
|
7855
8086
|
# This is generated for use in
|
|
7856
|
-
#
|
|
8087
|
+
# ExpressionTensorflowFunction
|
|
8088
|
+
# ExpressionTensorflowFunctionCall
|
|
7857
8089
|
|
|
7858
8090
|
def __init__(
|
|
7859
8091
|
self,
|
|
7860
|
-
|
|
7861
|
-
|
|
8092
|
+
func,
|
|
8093
|
+
input_signature,
|
|
8094
|
+
autograph,
|
|
8095
|
+
jit_compile,
|
|
8096
|
+
reduce_retracing,
|
|
8097
|
+
experimental_implements,
|
|
8098
|
+
experimental_autograph_options,
|
|
8099
|
+
experimental_attributes,
|
|
8100
|
+
experimental_relax_shapes,
|
|
8101
|
+
experimental_compile,
|
|
8102
|
+
experimental_follow_type_hints,
|
|
7862
8103
|
):
|
|
7863
|
-
|
|
8104
|
+
if func is not None:
|
|
8105
|
+
func.parent = self
|
|
7864
8106
|
|
|
7865
|
-
self.
|
|
8107
|
+
self.subnode_func = func
|
|
7866
8108
|
|
|
7867
|
-
|
|
8109
|
+
if input_signature is not None:
|
|
8110
|
+
input_signature.parent = self
|
|
7868
8111
|
|
|
7869
|
-
|
|
7870
|
-
val.parent = self
|
|
8112
|
+
self.subnode_input_signature = input_signature
|
|
7871
8113
|
|
|
7872
|
-
|
|
8114
|
+
if autograph is not None:
|
|
8115
|
+
autograph.parent = self
|
|
7873
8116
|
|
|
7874
|
-
|
|
8117
|
+
self.subnode_autograph = autograph
|
|
8118
|
+
|
|
8119
|
+
if jit_compile is not None:
|
|
8120
|
+
jit_compile.parent = self
|
|
8121
|
+
|
|
8122
|
+
self.subnode_jit_compile = jit_compile
|
|
8123
|
+
|
|
8124
|
+
if reduce_retracing is not None:
|
|
8125
|
+
reduce_retracing.parent = self
|
|
8126
|
+
|
|
8127
|
+
self.subnode_reduce_retracing = reduce_retracing
|
|
8128
|
+
|
|
8129
|
+
if experimental_implements is not None:
|
|
8130
|
+
experimental_implements.parent = self
|
|
8131
|
+
|
|
8132
|
+
self.subnode_experimental_implements = experimental_implements
|
|
8133
|
+
|
|
8134
|
+
if experimental_autograph_options is not None:
|
|
8135
|
+
experimental_autograph_options.parent = self
|
|
8136
|
+
|
|
8137
|
+
self.subnode_experimental_autograph_options = experimental_autograph_options
|
|
8138
|
+
|
|
8139
|
+
if experimental_attributes is not None:
|
|
8140
|
+
experimental_attributes.parent = self
|
|
8141
|
+
|
|
8142
|
+
self.subnode_experimental_attributes = experimental_attributes
|
|
8143
|
+
|
|
8144
|
+
if experimental_relax_shapes is not None:
|
|
8145
|
+
experimental_relax_shapes.parent = self
|
|
8146
|
+
|
|
8147
|
+
self.subnode_experimental_relax_shapes = experimental_relax_shapes
|
|
8148
|
+
|
|
8149
|
+
if experimental_compile is not None:
|
|
8150
|
+
experimental_compile.parent = self
|
|
8151
|
+
|
|
8152
|
+
self.subnode_experimental_compile = experimental_compile
|
|
8153
|
+
|
|
8154
|
+
if experimental_follow_type_hints is not None:
|
|
8155
|
+
experimental_follow_type_hints.parent = self
|
|
8156
|
+
|
|
8157
|
+
self.subnode_experimental_follow_type_hints = experimental_follow_type_hints
|
|
8158
|
+
|
|
8159
|
+
def getVisitableNodes(self):
|
|
8160
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
8161
|
+
|
|
8162
|
+
result = []
|
|
8163
|
+
value = self.subnode_func
|
|
8164
|
+
if value is None:
|
|
8165
|
+
pass
|
|
8166
|
+
else:
|
|
8167
|
+
result.append(value)
|
|
8168
|
+
value = self.subnode_input_signature
|
|
8169
|
+
if value is None:
|
|
8170
|
+
pass
|
|
8171
|
+
else:
|
|
8172
|
+
result.append(value)
|
|
8173
|
+
value = self.subnode_autograph
|
|
8174
|
+
if value is None:
|
|
8175
|
+
pass
|
|
8176
|
+
else:
|
|
8177
|
+
result.append(value)
|
|
8178
|
+
value = self.subnode_jit_compile
|
|
8179
|
+
if value is None:
|
|
8180
|
+
pass
|
|
8181
|
+
else:
|
|
8182
|
+
result.append(value)
|
|
8183
|
+
value = self.subnode_reduce_retracing
|
|
8184
|
+
if value is None:
|
|
8185
|
+
pass
|
|
8186
|
+
else:
|
|
8187
|
+
result.append(value)
|
|
8188
|
+
value = self.subnode_experimental_implements
|
|
8189
|
+
if value is None:
|
|
8190
|
+
pass
|
|
8191
|
+
else:
|
|
8192
|
+
result.append(value)
|
|
8193
|
+
value = self.subnode_experimental_autograph_options
|
|
8194
|
+
if value is None:
|
|
8195
|
+
pass
|
|
8196
|
+
else:
|
|
8197
|
+
result.append(value)
|
|
8198
|
+
value = self.subnode_experimental_attributes
|
|
8199
|
+
if value is None:
|
|
8200
|
+
pass
|
|
8201
|
+
else:
|
|
8202
|
+
result.append(value)
|
|
8203
|
+
value = self.subnode_experimental_relax_shapes
|
|
8204
|
+
if value is None:
|
|
8205
|
+
pass
|
|
8206
|
+
else:
|
|
8207
|
+
result.append(value)
|
|
8208
|
+
value = self.subnode_experimental_compile
|
|
8209
|
+
if value is None:
|
|
8210
|
+
pass
|
|
8211
|
+
else:
|
|
8212
|
+
result.append(value)
|
|
8213
|
+
value = self.subnode_experimental_follow_type_hints
|
|
8214
|
+
if value is None:
|
|
8215
|
+
pass
|
|
8216
|
+
else:
|
|
8217
|
+
result.append(value)
|
|
8218
|
+
return tuple(result)
|
|
8219
|
+
|
|
8220
|
+
def getVisitableNodesNamed(self):
|
|
8221
|
+
"""Named children dictionary.
|
|
8222
|
+
|
|
8223
|
+
For use in cloning nodes, debugging and XML output.
|
|
8224
|
+
"""
|
|
8225
|
+
|
|
8226
|
+
return (
|
|
8227
|
+
("func", self.subnode_func),
|
|
8228
|
+
("input_signature", self.subnode_input_signature),
|
|
8229
|
+
("autograph", self.subnode_autograph),
|
|
8230
|
+
("jit_compile", self.subnode_jit_compile),
|
|
8231
|
+
("reduce_retracing", self.subnode_reduce_retracing),
|
|
8232
|
+
("experimental_implements", self.subnode_experimental_implements),
|
|
8233
|
+
(
|
|
8234
|
+
"experimental_autograph_options",
|
|
8235
|
+
self.subnode_experimental_autograph_options,
|
|
8236
|
+
),
|
|
8237
|
+
("experimental_attributes", self.subnode_experimental_attributes),
|
|
8238
|
+
("experimental_relax_shapes", self.subnode_experimental_relax_shapes),
|
|
8239
|
+
("experimental_compile", self.subnode_experimental_compile),
|
|
8240
|
+
(
|
|
8241
|
+
"experimental_follow_type_hints",
|
|
8242
|
+
self.subnode_experimental_follow_type_hints,
|
|
8243
|
+
),
|
|
8244
|
+
)
|
|
8245
|
+
|
|
8246
|
+
def replaceChild(self, old_node, new_node):
|
|
8247
|
+
value = self.subnode_func
|
|
8248
|
+
if old_node is value:
|
|
8249
|
+
if new_node is not None:
|
|
8250
|
+
new_node.parent = self
|
|
8251
|
+
|
|
8252
|
+
self.subnode_func = new_node
|
|
8253
|
+
|
|
8254
|
+
return
|
|
8255
|
+
|
|
8256
|
+
value = self.subnode_input_signature
|
|
8257
|
+
if old_node is value:
|
|
8258
|
+
if new_node is not None:
|
|
8259
|
+
new_node.parent = self
|
|
8260
|
+
|
|
8261
|
+
self.subnode_input_signature = new_node
|
|
8262
|
+
|
|
8263
|
+
return
|
|
8264
|
+
|
|
8265
|
+
value = self.subnode_autograph
|
|
8266
|
+
if old_node is value:
|
|
8267
|
+
if new_node is not None:
|
|
8268
|
+
new_node.parent = self
|
|
8269
|
+
|
|
8270
|
+
self.subnode_autograph = new_node
|
|
8271
|
+
|
|
8272
|
+
return
|
|
8273
|
+
|
|
8274
|
+
value = self.subnode_jit_compile
|
|
8275
|
+
if old_node is value:
|
|
8276
|
+
if new_node is not None:
|
|
8277
|
+
new_node.parent = self
|
|
8278
|
+
|
|
8279
|
+
self.subnode_jit_compile = new_node
|
|
8280
|
+
|
|
8281
|
+
return
|
|
8282
|
+
|
|
8283
|
+
value = self.subnode_reduce_retracing
|
|
8284
|
+
if old_node is value:
|
|
8285
|
+
if new_node is not None:
|
|
8286
|
+
new_node.parent = self
|
|
8287
|
+
|
|
8288
|
+
self.subnode_reduce_retracing = new_node
|
|
8289
|
+
|
|
8290
|
+
return
|
|
8291
|
+
|
|
8292
|
+
value = self.subnode_experimental_implements
|
|
8293
|
+
if old_node is value:
|
|
8294
|
+
if new_node is not None:
|
|
8295
|
+
new_node.parent = self
|
|
8296
|
+
|
|
8297
|
+
self.subnode_experimental_implements = new_node
|
|
8298
|
+
|
|
8299
|
+
return
|
|
8300
|
+
|
|
8301
|
+
value = self.subnode_experimental_autograph_options
|
|
8302
|
+
if old_node is value:
|
|
8303
|
+
if new_node is not None:
|
|
8304
|
+
new_node.parent = self
|
|
8305
|
+
|
|
8306
|
+
self.subnode_experimental_autograph_options = new_node
|
|
8307
|
+
|
|
8308
|
+
return
|
|
8309
|
+
|
|
8310
|
+
value = self.subnode_experimental_attributes
|
|
8311
|
+
if old_node is value:
|
|
8312
|
+
if new_node is not None:
|
|
8313
|
+
new_node.parent = self
|
|
8314
|
+
|
|
8315
|
+
self.subnode_experimental_attributes = new_node
|
|
8316
|
+
|
|
8317
|
+
return
|
|
8318
|
+
|
|
8319
|
+
value = self.subnode_experimental_relax_shapes
|
|
8320
|
+
if old_node is value:
|
|
8321
|
+
if new_node is not None:
|
|
8322
|
+
new_node.parent = self
|
|
8323
|
+
|
|
8324
|
+
self.subnode_experimental_relax_shapes = new_node
|
|
8325
|
+
|
|
8326
|
+
return
|
|
8327
|
+
|
|
8328
|
+
value = self.subnode_experimental_compile
|
|
8329
|
+
if old_node is value:
|
|
8330
|
+
if new_node is not None:
|
|
8331
|
+
new_node.parent = self
|
|
8332
|
+
|
|
8333
|
+
self.subnode_experimental_compile = new_node
|
|
8334
|
+
|
|
8335
|
+
return
|
|
8336
|
+
|
|
8337
|
+
value = self.subnode_experimental_follow_type_hints
|
|
8338
|
+
if old_node is value:
|
|
8339
|
+
if new_node is not None:
|
|
8340
|
+
new_node.parent = self
|
|
8341
|
+
|
|
8342
|
+
self.subnode_experimental_follow_type_hints = new_node
|
|
8343
|
+
|
|
8344
|
+
return
|
|
8345
|
+
|
|
8346
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
8347
|
+
|
|
8348
|
+
def getCloneArgs(self):
|
|
8349
|
+
"""Get clones of all children to pass for a new node.
|
|
8350
|
+
|
|
8351
|
+
Needs to make clones of child nodes too.
|
|
8352
|
+
"""
|
|
8353
|
+
|
|
8354
|
+
values = {
|
|
8355
|
+
"func": (
|
|
8356
|
+
self.subnode_func.makeClone() if self.subnode_func is not None else None
|
|
8357
|
+
),
|
|
8358
|
+
"input_signature": (
|
|
8359
|
+
self.subnode_input_signature.makeClone()
|
|
8360
|
+
if self.subnode_input_signature is not None
|
|
8361
|
+
else None
|
|
8362
|
+
),
|
|
8363
|
+
"autograph": (
|
|
8364
|
+
self.subnode_autograph.makeClone()
|
|
8365
|
+
if self.subnode_autograph is not None
|
|
8366
|
+
else None
|
|
8367
|
+
),
|
|
8368
|
+
"jit_compile": (
|
|
8369
|
+
self.subnode_jit_compile.makeClone()
|
|
8370
|
+
if self.subnode_jit_compile is not None
|
|
8371
|
+
else None
|
|
8372
|
+
),
|
|
8373
|
+
"reduce_retracing": (
|
|
8374
|
+
self.subnode_reduce_retracing.makeClone()
|
|
8375
|
+
if self.subnode_reduce_retracing is not None
|
|
8376
|
+
else None
|
|
8377
|
+
),
|
|
8378
|
+
"experimental_implements": (
|
|
8379
|
+
self.subnode_experimental_implements.makeClone()
|
|
8380
|
+
if self.subnode_experimental_implements is not None
|
|
8381
|
+
else None
|
|
8382
|
+
),
|
|
8383
|
+
"experimental_autograph_options": (
|
|
8384
|
+
self.subnode_experimental_autograph_options.makeClone()
|
|
8385
|
+
if self.subnode_experimental_autograph_options is not None
|
|
8386
|
+
else None
|
|
8387
|
+
),
|
|
8388
|
+
"experimental_attributes": (
|
|
8389
|
+
self.subnode_experimental_attributes.makeClone()
|
|
8390
|
+
if self.subnode_experimental_attributes is not None
|
|
8391
|
+
else None
|
|
8392
|
+
),
|
|
8393
|
+
"experimental_relax_shapes": (
|
|
8394
|
+
self.subnode_experimental_relax_shapes.makeClone()
|
|
8395
|
+
if self.subnode_experimental_relax_shapes is not None
|
|
8396
|
+
else None
|
|
8397
|
+
),
|
|
8398
|
+
"experimental_compile": (
|
|
8399
|
+
self.subnode_experimental_compile.makeClone()
|
|
8400
|
+
if self.subnode_experimental_compile is not None
|
|
8401
|
+
else None
|
|
8402
|
+
),
|
|
8403
|
+
"experimental_follow_type_hints": (
|
|
8404
|
+
self.subnode_experimental_follow_type_hints.makeClone()
|
|
8405
|
+
if self.subnode_experimental_follow_type_hints is not None
|
|
8406
|
+
else None
|
|
8407
|
+
),
|
|
8408
|
+
}
|
|
8409
|
+
|
|
8410
|
+
values.update(self.getDetails())
|
|
8411
|
+
|
|
8412
|
+
return values
|
|
8413
|
+
|
|
8414
|
+
def finalize(self):
|
|
8415
|
+
del self.parent
|
|
8416
|
+
|
|
8417
|
+
if self.subnode_func is not None:
|
|
8418
|
+
self.subnode_func.finalize()
|
|
8419
|
+
del self.subnode_func
|
|
8420
|
+
if self.subnode_input_signature is not None:
|
|
8421
|
+
self.subnode_input_signature.finalize()
|
|
8422
|
+
del self.subnode_input_signature
|
|
8423
|
+
if self.subnode_autograph is not None:
|
|
8424
|
+
self.subnode_autograph.finalize()
|
|
8425
|
+
del self.subnode_autograph
|
|
8426
|
+
if self.subnode_jit_compile is not None:
|
|
8427
|
+
self.subnode_jit_compile.finalize()
|
|
8428
|
+
del self.subnode_jit_compile
|
|
8429
|
+
if self.subnode_reduce_retracing is not None:
|
|
8430
|
+
self.subnode_reduce_retracing.finalize()
|
|
8431
|
+
del self.subnode_reduce_retracing
|
|
8432
|
+
if self.subnode_experimental_implements is not None:
|
|
8433
|
+
self.subnode_experimental_implements.finalize()
|
|
8434
|
+
del self.subnode_experimental_implements
|
|
8435
|
+
if self.subnode_experimental_autograph_options is not None:
|
|
8436
|
+
self.subnode_experimental_autograph_options.finalize()
|
|
8437
|
+
del self.subnode_experimental_autograph_options
|
|
8438
|
+
if self.subnode_experimental_attributes is not None:
|
|
8439
|
+
self.subnode_experimental_attributes.finalize()
|
|
8440
|
+
del self.subnode_experimental_attributes
|
|
8441
|
+
if self.subnode_experimental_relax_shapes is not None:
|
|
8442
|
+
self.subnode_experimental_relax_shapes.finalize()
|
|
8443
|
+
del self.subnode_experimental_relax_shapes
|
|
8444
|
+
if self.subnode_experimental_compile is not None:
|
|
8445
|
+
self.subnode_experimental_compile.finalize()
|
|
8446
|
+
del self.subnode_experimental_compile
|
|
8447
|
+
if self.subnode_experimental_follow_type_hints is not None:
|
|
8448
|
+
self.subnode_experimental_follow_type_hints.finalize()
|
|
8449
|
+
del self.subnode_experimental_follow_type_hints
|
|
8450
|
+
|
|
8451
|
+
def computeExpressionRaw(self, trace_collection):
|
|
8452
|
+
"""Compute an expression.
|
|
8453
|
+
|
|
8454
|
+
Default behavior is to just visit the child expressions first, and
|
|
8455
|
+
then the node "computeExpression". For a few cases this needs to
|
|
8456
|
+
be overloaded, e.g. conditional expressions.
|
|
8457
|
+
"""
|
|
8458
|
+
|
|
8459
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
8460
|
+
# the actual operation.
|
|
8461
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
8462
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
8463
|
+
|
|
8464
|
+
if expression.willRaiseAnyException():
|
|
8465
|
+
sub_expressions = self.getVisitableNodes()
|
|
8466
|
+
|
|
8467
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
8468
|
+
side_effects=sub_expressions[:count],
|
|
8469
|
+
old_node=sub_expression,
|
|
8470
|
+
new_node=expression,
|
|
8471
|
+
)
|
|
8472
|
+
|
|
8473
|
+
return (
|
|
8474
|
+
wrapped_expression,
|
|
8475
|
+
"new_raise",
|
|
8476
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
8477
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
8478
|
+
)
|
|
8479
|
+
|
|
8480
|
+
# Then ask ourselves to work on it.
|
|
8481
|
+
return self.computeExpression(trace_collection)
|
|
8482
|
+
|
|
8483
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
8484
|
+
"""Collect variable reads and writes of child nodes."""
|
|
8485
|
+
|
|
8486
|
+
subnode_func = self.subnode_func
|
|
8487
|
+
|
|
8488
|
+
if subnode_func is not None:
|
|
8489
|
+
self.subnode_func.collectVariableAccesses(emit_read, emit_write)
|
|
8490
|
+
subnode_input_signature = self.subnode_input_signature
|
|
8491
|
+
|
|
8492
|
+
if subnode_input_signature is not None:
|
|
8493
|
+
self.subnode_input_signature.collectVariableAccesses(emit_read, emit_write)
|
|
8494
|
+
subnode_autograph = self.subnode_autograph
|
|
8495
|
+
|
|
8496
|
+
if subnode_autograph is not None:
|
|
8497
|
+
self.subnode_autograph.collectVariableAccesses(emit_read, emit_write)
|
|
8498
|
+
subnode_jit_compile = self.subnode_jit_compile
|
|
8499
|
+
|
|
8500
|
+
if subnode_jit_compile is not None:
|
|
8501
|
+
self.subnode_jit_compile.collectVariableAccesses(emit_read, emit_write)
|
|
8502
|
+
subnode_reduce_retracing = self.subnode_reduce_retracing
|
|
8503
|
+
|
|
8504
|
+
if subnode_reduce_retracing is not None:
|
|
8505
|
+
self.subnode_reduce_retracing.collectVariableAccesses(emit_read, emit_write)
|
|
8506
|
+
subnode_experimental_implements = self.subnode_experimental_implements
|
|
8507
|
+
|
|
8508
|
+
if subnode_experimental_implements is not None:
|
|
8509
|
+
self.subnode_experimental_implements.collectVariableAccesses(
|
|
8510
|
+
emit_read, emit_write
|
|
8511
|
+
)
|
|
8512
|
+
subnode_experimental_autograph_options = (
|
|
8513
|
+
self.subnode_experimental_autograph_options
|
|
8514
|
+
)
|
|
8515
|
+
|
|
8516
|
+
if subnode_experimental_autograph_options is not None:
|
|
8517
|
+
self.subnode_experimental_autograph_options.collectVariableAccesses(
|
|
8518
|
+
emit_read, emit_write
|
|
8519
|
+
)
|
|
8520
|
+
subnode_experimental_attributes = self.subnode_experimental_attributes
|
|
8521
|
+
|
|
8522
|
+
if subnode_experimental_attributes is not None:
|
|
8523
|
+
self.subnode_experimental_attributes.collectVariableAccesses(
|
|
8524
|
+
emit_read, emit_write
|
|
8525
|
+
)
|
|
8526
|
+
subnode_experimental_relax_shapes = self.subnode_experimental_relax_shapes
|
|
8527
|
+
|
|
8528
|
+
if subnode_experimental_relax_shapes is not None:
|
|
8529
|
+
self.subnode_experimental_relax_shapes.collectVariableAccesses(
|
|
8530
|
+
emit_read, emit_write
|
|
8531
|
+
)
|
|
8532
|
+
subnode_experimental_compile = self.subnode_experimental_compile
|
|
8533
|
+
|
|
8534
|
+
if subnode_experimental_compile is not None:
|
|
8535
|
+
self.subnode_experimental_compile.collectVariableAccesses(
|
|
8536
|
+
emit_read, emit_write
|
|
8537
|
+
)
|
|
8538
|
+
subnode_experimental_follow_type_hints = (
|
|
8539
|
+
self.subnode_experimental_follow_type_hints
|
|
8540
|
+
)
|
|
8541
|
+
|
|
8542
|
+
if subnode_experimental_follow_type_hints is not None:
|
|
8543
|
+
self.subnode_experimental_follow_type_hints.collectVariableAccesses(
|
|
8544
|
+
emit_read, emit_write
|
|
8545
|
+
)
|
|
8546
|
+
|
|
8547
|
+
|
|
8548
|
+
# Assign the names that are easier to import with a stable name.
|
|
8549
|
+
ChildrenExpressionTensorflowFunctionMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
|
|
8550
|
+
ChildrenExpressionTensorflowFunctionCallMixin = ChildrenHavingFuncOptionalInputSignatureOptionalAutographOptionalJitCompileOptionalReduceRetracingOptionalExperimentalImplementsOptionalExperimentalAutographOptionsOptionalExperimentalAttributesOptionalExperimentalRelaxShapesOptionalExperimentalCompileOptionalExperimentalFollowTypeHintsOptionalMixin
|
|
8551
|
+
|
|
8552
|
+
|
|
8553
|
+
class ChildrenHavingFunctionValuesTupleMixin(object):
|
|
8554
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
8555
|
+
__slots__ = ()
|
|
8556
|
+
|
|
8557
|
+
# This is generated for use in
|
|
8558
|
+
# ExpressionFunctionCall
|
|
8559
|
+
|
|
8560
|
+
def __init__(
|
|
8561
|
+
self,
|
|
8562
|
+
function,
|
|
8563
|
+
values,
|
|
8564
|
+
):
|
|
8565
|
+
function.parent = self
|
|
8566
|
+
|
|
8567
|
+
self.subnode_function = function
|
|
8568
|
+
|
|
8569
|
+
assert type(values) is tuple
|
|
8570
|
+
|
|
8571
|
+
for val in values:
|
|
8572
|
+
val.parent = self
|
|
8573
|
+
|
|
8574
|
+
self.subnode_values = values
|
|
8575
|
+
|
|
8576
|
+
def getVisitableNodes(self):
|
|
7875
8577
|
"""The visitable nodes, with tuple values flattened."""
|
|
7876
8578
|
|
|
7877
8579
|
result = []
|
|
@@ -8146,9 +8848,9 @@ class ChildrenHavingGroupNameOptionalMixin(object):
|
|
|
8146
8848
|
|
|
8147
8849
|
values = {
|
|
8148
8850
|
"group": self.subnode_group.makeClone(),
|
|
8149
|
-
"name":
|
|
8150
|
-
|
|
8151
|
-
|
|
8851
|
+
"name": (
|
|
8852
|
+
self.subnode_name.makeClone() if self.subnode_name is not None else None
|
|
8853
|
+
),
|
|
8152
8854
|
}
|
|
8153
8855
|
|
|
8154
8856
|
values.update(self.getDetails())
|
|
@@ -9047,13 +9749,17 @@ class ChildrenHavingKwDefaultsOptionalDefaultsTupleAnnotationsOptionalFunctionRe
|
|
|
9047
9749
|
"""
|
|
9048
9750
|
|
|
9049
9751
|
values = {
|
|
9050
|
-
"kw_defaults":
|
|
9051
|
-
|
|
9052
|
-
|
|
9752
|
+
"kw_defaults": (
|
|
9753
|
+
self.subnode_kw_defaults.makeClone()
|
|
9754
|
+
if self.subnode_kw_defaults is not None
|
|
9755
|
+
else None
|
|
9756
|
+
),
|
|
9053
9757
|
"defaults": tuple(v.makeClone() for v in self.subnode_defaults),
|
|
9054
|
-
"annotations":
|
|
9055
|
-
|
|
9056
|
-
|
|
9758
|
+
"annotations": (
|
|
9759
|
+
self.subnode_annotations.makeClone()
|
|
9760
|
+
if self.subnode_annotations is not None
|
|
9761
|
+
else None
|
|
9762
|
+
),
|
|
9057
9763
|
"function_ref": self.subnode_function_ref.makeClone(),
|
|
9058
9764
|
}
|
|
9059
9765
|
|
|
@@ -9907,9 +10613,9 @@ class ChildrenHavingListArgKeyOptionalReverseMixin(object):
|
|
|
9907
10613
|
|
|
9908
10614
|
values = {
|
|
9909
10615
|
"list_arg": self.subnode_list_arg.makeClone(),
|
|
9910
|
-
"key":
|
|
9911
|
-
|
|
9912
|
-
|
|
10616
|
+
"key": (
|
|
10617
|
+
self.subnode_key.makeClone() if self.subnode_key is not None else None
|
|
10618
|
+
),
|
|
9913
10619
|
"reverse": self.subnode_reverse.makeClone(),
|
|
9914
10620
|
}
|
|
9915
10621
|
|
|
@@ -11131,18 +11837,26 @@ class ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevel
|
|
|
11131
11837
|
|
|
11132
11838
|
values = {
|
|
11133
11839
|
"name": self.subnode_name.makeClone(),
|
|
11134
|
-
"globals_arg":
|
|
11135
|
-
|
|
11136
|
-
|
|
11137
|
-
|
|
11138
|
-
|
|
11139
|
-
|
|
11140
|
-
|
|
11141
|
-
|
|
11142
|
-
|
|
11143
|
-
|
|
11144
|
-
|
|
11145
|
-
|
|
11840
|
+
"globals_arg": (
|
|
11841
|
+
self.subnode_globals_arg.makeClone()
|
|
11842
|
+
if self.subnode_globals_arg is not None
|
|
11843
|
+
else None
|
|
11844
|
+
),
|
|
11845
|
+
"locals_arg": (
|
|
11846
|
+
self.subnode_locals_arg.makeClone()
|
|
11847
|
+
if self.subnode_locals_arg is not None
|
|
11848
|
+
else None
|
|
11849
|
+
),
|
|
11850
|
+
"fromlist": (
|
|
11851
|
+
self.subnode_fromlist.makeClone()
|
|
11852
|
+
if self.subnode_fromlist is not None
|
|
11853
|
+
else None
|
|
11854
|
+
),
|
|
11855
|
+
"level": (
|
|
11856
|
+
self.subnode_level.makeClone()
|
|
11857
|
+
if self.subnode_level is not None
|
|
11858
|
+
else None
|
|
11859
|
+
),
|
|
11146
11860
|
}
|
|
11147
11861
|
|
|
11148
11862
|
values.update(self.getDetails())
|
|
@@ -11225,7 +11939,7 @@ class ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevel
|
|
|
11225
11939
|
ChildrenExpressionBuiltinImportMixin = ChildrenHavingNameGlobalsArgOptionalLocalsArgOptionalFromlistOptionalLevelOptionalMixin
|
|
11226
11940
|
|
|
11227
11941
|
|
|
11228
|
-
class
|
|
11942
|
+
class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalMixin(
|
|
11229
11943
|
object
|
|
11230
11944
|
):
|
|
11231
11945
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
@@ -11240,7 +11954,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11240
11954
|
mode,
|
|
11241
11955
|
handle,
|
|
11242
11956
|
use_errno,
|
|
11243
|
-
|
|
11957
|
+
use_last_error,
|
|
11244
11958
|
):
|
|
11245
11959
|
name.parent = self
|
|
11246
11960
|
|
|
@@ -11261,10 +11975,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11261
11975
|
|
|
11262
11976
|
self.subnode_use_errno = use_errno
|
|
11263
11977
|
|
|
11264
|
-
if
|
|
11265
|
-
|
|
11978
|
+
if use_last_error is not None:
|
|
11979
|
+
use_last_error.parent = self
|
|
11266
11980
|
|
|
11267
|
-
self.
|
|
11981
|
+
self.subnode_use_last_error = use_last_error
|
|
11268
11982
|
|
|
11269
11983
|
def getVisitableNodes(self):
|
|
11270
11984
|
"""The visitable nodes, with tuple values flattened."""
|
|
@@ -11286,7 +12000,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11286
12000
|
pass
|
|
11287
12001
|
else:
|
|
11288
12002
|
result.append(value)
|
|
11289
|
-
value = self.
|
|
12003
|
+
value = self.subnode_use_last_error
|
|
11290
12004
|
if value is None:
|
|
11291
12005
|
pass
|
|
11292
12006
|
else:
|
|
@@ -11304,7 +12018,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11304
12018
|
("mode", self.subnode_mode),
|
|
11305
12019
|
("handle", self.subnode_handle),
|
|
11306
12020
|
("use_errno", self.subnode_use_errno),
|
|
11307
|
-
("
|
|
12021
|
+
("use_last_error", self.subnode_use_last_error),
|
|
11308
12022
|
)
|
|
11309
12023
|
|
|
11310
12024
|
def replaceChild(self, old_node, new_node):
|
|
@@ -11343,12 +12057,12 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11343
12057
|
|
|
11344
12058
|
return
|
|
11345
12059
|
|
|
11346
|
-
value = self.
|
|
12060
|
+
value = self.subnode_use_last_error
|
|
11347
12061
|
if old_node is value:
|
|
11348
12062
|
if new_node is not None:
|
|
11349
12063
|
new_node.parent = self
|
|
11350
12064
|
|
|
11351
|
-
self.
|
|
12065
|
+
self.subnode_use_last_error = new_node
|
|
11352
12066
|
|
|
11353
12067
|
return
|
|
11354
12068
|
|
|
@@ -11362,18 +12076,24 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11362
12076
|
|
|
11363
12077
|
values = {
|
|
11364
12078
|
"name": self.subnode_name.makeClone(),
|
|
11365
|
-
"mode":
|
|
11366
|
-
|
|
11367
|
-
|
|
11368
|
-
"handle":
|
|
11369
|
-
|
|
11370
|
-
|
|
11371
|
-
|
|
11372
|
-
|
|
11373
|
-
|
|
11374
|
-
|
|
11375
|
-
|
|
11376
|
-
|
|
12079
|
+
"mode": (
|
|
12080
|
+
self.subnode_mode.makeClone() if self.subnode_mode is not None else None
|
|
12081
|
+
),
|
|
12082
|
+
"handle": (
|
|
12083
|
+
self.subnode_handle.makeClone()
|
|
12084
|
+
if self.subnode_handle is not None
|
|
12085
|
+
else None
|
|
12086
|
+
),
|
|
12087
|
+
"use_errno": (
|
|
12088
|
+
self.subnode_use_errno.makeClone()
|
|
12089
|
+
if self.subnode_use_errno is not None
|
|
12090
|
+
else None
|
|
12091
|
+
),
|
|
12092
|
+
"use_last_error": (
|
|
12093
|
+
self.subnode_use_last_error.makeClone()
|
|
12094
|
+
if self.subnode_use_last_error is not None
|
|
12095
|
+
else None
|
|
12096
|
+
),
|
|
11377
12097
|
}
|
|
11378
12098
|
|
|
11379
12099
|
values.update(self.getDetails())
|
|
@@ -11394,9 +12114,9 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11394
12114
|
if self.subnode_use_errno is not None:
|
|
11395
12115
|
self.subnode_use_errno.finalize()
|
|
11396
12116
|
del self.subnode_use_errno
|
|
11397
|
-
if self.
|
|
11398
|
-
self.
|
|
11399
|
-
del self.
|
|
12117
|
+
if self.subnode_use_last_error is not None:
|
|
12118
|
+
self.subnode_use_last_error.finalize()
|
|
12119
|
+
del self.subnode_use_last_error
|
|
11400
12120
|
|
|
11401
12121
|
def computeExpressionRaw(self, trace_collection):
|
|
11402
12122
|
"""Compute an expression.
|
|
@@ -11446,17 +12166,17 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11446
12166
|
|
|
11447
12167
|
if subnode_use_errno is not None:
|
|
11448
12168
|
self.subnode_use_errno.collectVariableAccesses(emit_read, emit_write)
|
|
11449
|
-
|
|
12169
|
+
subnode_use_last_error = self.subnode_use_last_error
|
|
11450
12170
|
|
|
11451
|
-
if
|
|
11452
|
-
self.
|
|
12171
|
+
if subnode_use_last_error is not None:
|
|
12172
|
+
self.subnode_use_last_error.collectVariableAccesses(emit_read, emit_write)
|
|
11453
12173
|
|
|
11454
12174
|
|
|
11455
12175
|
# Assign the names that are easier to import with a stable name.
|
|
11456
|
-
ChildrenExpressionCtypesCdllMixin =
|
|
12176
|
+
ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalMixin
|
|
11457
12177
|
|
|
11458
12178
|
|
|
11459
|
-
class
|
|
12179
|
+
class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalWinmodeOptionalMixin(
|
|
11460
12180
|
object
|
|
11461
12181
|
):
|
|
11462
12182
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
@@ -11471,7 +12191,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11471
12191
|
mode,
|
|
11472
12192
|
handle,
|
|
11473
12193
|
use_errno,
|
|
11474
|
-
|
|
12194
|
+
use_last_error,
|
|
11475
12195
|
winmode,
|
|
11476
12196
|
):
|
|
11477
12197
|
name.parent = self
|
|
@@ -11493,10 +12213,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11493
12213
|
|
|
11494
12214
|
self.subnode_use_errno = use_errno
|
|
11495
12215
|
|
|
11496
|
-
if
|
|
11497
|
-
|
|
12216
|
+
if use_last_error is not None:
|
|
12217
|
+
use_last_error.parent = self
|
|
11498
12218
|
|
|
11499
|
-
self.
|
|
12219
|
+
self.subnode_use_last_error = use_last_error
|
|
11500
12220
|
|
|
11501
12221
|
if winmode is not None:
|
|
11502
12222
|
winmode.parent = self
|
|
@@ -11523,7 +12243,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11523
12243
|
pass
|
|
11524
12244
|
else:
|
|
11525
12245
|
result.append(value)
|
|
11526
|
-
value = self.
|
|
12246
|
+
value = self.subnode_use_last_error
|
|
11527
12247
|
if value is None:
|
|
11528
12248
|
pass
|
|
11529
12249
|
else:
|
|
@@ -11546,7 +12266,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11546
12266
|
("mode", self.subnode_mode),
|
|
11547
12267
|
("handle", self.subnode_handle),
|
|
11548
12268
|
("use_errno", self.subnode_use_errno),
|
|
11549
|
-
("
|
|
12269
|
+
("use_last_error", self.subnode_use_last_error),
|
|
11550
12270
|
("winmode", self.subnode_winmode),
|
|
11551
12271
|
)
|
|
11552
12272
|
|
|
@@ -11586,12 +12306,12 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11586
12306
|
|
|
11587
12307
|
return
|
|
11588
12308
|
|
|
11589
|
-
value = self.
|
|
12309
|
+
value = self.subnode_use_last_error
|
|
11590
12310
|
if old_node is value:
|
|
11591
12311
|
if new_node is not None:
|
|
11592
12312
|
new_node.parent = self
|
|
11593
12313
|
|
|
11594
|
-
self.
|
|
12314
|
+
self.subnode_use_last_error = new_node
|
|
11595
12315
|
|
|
11596
12316
|
return
|
|
11597
12317
|
|
|
@@ -11614,21 +12334,29 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11614
12334
|
|
|
11615
12335
|
values = {
|
|
11616
12336
|
"name": self.subnode_name.makeClone(),
|
|
11617
|
-
"mode":
|
|
11618
|
-
|
|
11619
|
-
|
|
11620
|
-
"handle":
|
|
11621
|
-
|
|
11622
|
-
|
|
11623
|
-
|
|
11624
|
-
|
|
11625
|
-
|
|
11626
|
-
|
|
11627
|
-
|
|
11628
|
-
|
|
11629
|
-
|
|
11630
|
-
|
|
11631
|
-
|
|
12337
|
+
"mode": (
|
|
12338
|
+
self.subnode_mode.makeClone() if self.subnode_mode is not None else None
|
|
12339
|
+
),
|
|
12340
|
+
"handle": (
|
|
12341
|
+
self.subnode_handle.makeClone()
|
|
12342
|
+
if self.subnode_handle is not None
|
|
12343
|
+
else None
|
|
12344
|
+
),
|
|
12345
|
+
"use_errno": (
|
|
12346
|
+
self.subnode_use_errno.makeClone()
|
|
12347
|
+
if self.subnode_use_errno is not None
|
|
12348
|
+
else None
|
|
12349
|
+
),
|
|
12350
|
+
"use_last_error": (
|
|
12351
|
+
self.subnode_use_last_error.makeClone()
|
|
12352
|
+
if self.subnode_use_last_error is not None
|
|
12353
|
+
else None
|
|
12354
|
+
),
|
|
12355
|
+
"winmode": (
|
|
12356
|
+
self.subnode_winmode.makeClone()
|
|
12357
|
+
if self.subnode_winmode is not None
|
|
12358
|
+
else None
|
|
12359
|
+
),
|
|
11632
12360
|
}
|
|
11633
12361
|
|
|
11634
12362
|
values.update(self.getDetails())
|
|
@@ -11649,9 +12377,9 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11649
12377
|
if self.subnode_use_errno is not None:
|
|
11650
12378
|
self.subnode_use_errno.finalize()
|
|
11651
12379
|
del self.subnode_use_errno
|
|
11652
|
-
if self.
|
|
11653
|
-
self.
|
|
11654
|
-
del self.
|
|
12380
|
+
if self.subnode_use_last_error is not None:
|
|
12381
|
+
self.subnode_use_last_error.finalize()
|
|
12382
|
+
del self.subnode_use_last_error
|
|
11655
12383
|
if self.subnode_winmode is not None:
|
|
11656
12384
|
self.subnode_winmode.finalize()
|
|
11657
12385
|
del self.subnode_winmode
|
|
@@ -11704,10 +12432,10 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11704
12432
|
|
|
11705
12433
|
if subnode_use_errno is not None:
|
|
11706
12434
|
self.subnode_use_errno.collectVariableAccesses(emit_read, emit_write)
|
|
11707
|
-
|
|
12435
|
+
subnode_use_last_error = self.subnode_use_last_error
|
|
11708
12436
|
|
|
11709
|
-
if
|
|
11710
|
-
self.
|
|
12437
|
+
if subnode_use_last_error is not None:
|
|
12438
|
+
self.subnode_use_last_error.collectVariableAccesses(emit_read, emit_write)
|
|
11711
12439
|
subnode_winmode = self.subnode_winmode
|
|
11712
12440
|
|
|
11713
12441
|
if subnode_winmode is not None:
|
|
@@ -11715,7 +12443,7 @@ class ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLasterrorOp
|
|
|
11715
12443
|
|
|
11716
12444
|
|
|
11717
12445
|
# Assign the names that are easier to import with a stable name.
|
|
11718
|
-
ChildrenExpressionCtypesCdllMixin =
|
|
12446
|
+
ChildrenExpressionCtypesCdllMixin = ChildrenHavingNameModeOptionalHandleOptionalUseErrnoOptionalUseLastErrorOptionalWinmodeOptionalMixin
|
|
11719
12447
|
|
|
11720
12448
|
|
|
11721
12449
|
class ChildrenHavingNamePackageOptionalMixin(object):
|
|
@@ -11790,9 +12518,11 @@ class ChildrenHavingNamePackageOptionalMixin(object):
|
|
|
11790
12518
|
|
|
11791
12519
|
values = {
|
|
11792
12520
|
"name": self.subnode_name.makeClone(),
|
|
11793
|
-
"package":
|
|
11794
|
-
|
|
11795
|
-
|
|
12521
|
+
"package": (
|
|
12522
|
+
self.subnode_package.makeClone()
|
|
12523
|
+
if self.subnode_package is not None
|
|
12524
|
+
else None
|
|
12525
|
+
),
|
|
11796
12526
|
}
|
|
11797
12527
|
|
|
11798
12528
|
values.update(self.getDetails())
|
|
@@ -11963,6 +12693,7 @@ class ChildHavingPMixin(object):
|
|
|
11963
12693
|
|
|
11964
12694
|
# This is generated for use in
|
|
11965
12695
|
# ExpressionOsPathBasename
|
|
12696
|
+
# ExpressionOsPathDirname
|
|
11966
12697
|
|
|
11967
12698
|
def __init__(
|
|
11968
12699
|
self,
|
|
@@ -12046,6 +12777,7 @@ class ChildHavingPMixin(object):
|
|
|
12046
12777
|
|
|
12047
12778
|
# Assign the names that are easier to import with a stable name.
|
|
12048
12779
|
ChildrenExpressionOsPathBasenameMixin = ChildHavingPMixin
|
|
12780
|
+
ChildrenExpressionOsPathDirnameMixin = ChildHavingPMixin
|
|
12049
12781
|
|
|
12050
12782
|
|
|
12051
12783
|
class ChildHavingPackageMixin(object):
|
|
@@ -12397,12 +13129,16 @@ class ChildrenHavingPackageResourceEncodingOptionalErrorsOptionalMixin(object):
|
|
|
12397
13129
|
values = {
|
|
12398
13130
|
"package": self.subnode_package.makeClone(),
|
|
12399
13131
|
"resource": self.subnode_resource.makeClone(),
|
|
12400
|
-
"encoding":
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
13132
|
+
"encoding": (
|
|
13133
|
+
self.subnode_encoding.makeClone()
|
|
13134
|
+
if self.subnode_encoding is not None
|
|
13135
|
+
else None
|
|
13136
|
+
),
|
|
13137
|
+
"errors": (
|
|
13138
|
+
self.subnode_errors.makeClone()
|
|
13139
|
+
if self.subnode_errors is not None
|
|
13140
|
+
else None
|
|
13141
|
+
),
|
|
12406
13142
|
}
|
|
12407
13143
|
|
|
12408
13144
|
values.update(self.getDetails())
|
|
@@ -12872,6 +13608,7 @@ class ChildHavingPathMixin(object):
|
|
|
12872
13608
|
# ExpressionOsPathExists
|
|
12873
13609
|
# ExpressionOsPathIsdir
|
|
12874
13610
|
# ExpressionOsPathIsfile
|
|
13611
|
+
# ExpressionOsPathNormpath
|
|
12875
13612
|
|
|
12876
13613
|
def __init__(
|
|
12877
13614
|
self,
|
|
@@ -12958,6 +13695,7 @@ ChildrenExpressionOsPathAbspathMixin = ChildHavingPathMixin
|
|
|
12958
13695
|
ChildrenExpressionOsPathExistsMixin = ChildHavingPathMixin
|
|
12959
13696
|
ChildrenExpressionOsPathIsdirMixin = ChildHavingPathMixin
|
|
12960
13697
|
ChildrenExpressionOsPathIsfileMixin = ChildHavingPathMixin
|
|
13698
|
+
ChildrenExpressionOsPathNormpathMixin = ChildHavingPathMixin
|
|
12961
13699
|
|
|
12962
13700
|
|
|
12963
13701
|
class ChildHavingPathOptionalMixin(object):
|
|
@@ -12974,17 +13712,297 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
12974
13712
|
if path is not None:
|
|
12975
13713
|
path.parent = self
|
|
12976
13714
|
|
|
12977
|
-
self.subnode_path = path
|
|
13715
|
+
self.subnode_path = path
|
|
13716
|
+
|
|
13717
|
+
def getVisitableNodes(self):
|
|
13718
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
13719
|
+
|
|
13720
|
+
value = self.subnode_path
|
|
13721
|
+
|
|
13722
|
+
if value is None:
|
|
13723
|
+
return ()
|
|
13724
|
+
else:
|
|
13725
|
+
return (value,)
|
|
13726
|
+
|
|
13727
|
+
def getVisitableNodesNamed(self):
|
|
13728
|
+
"""Named children dictionary.
|
|
13729
|
+
|
|
13730
|
+
For use in cloning nodes, debugging and XML output.
|
|
13731
|
+
"""
|
|
13732
|
+
|
|
13733
|
+
return (("path", self.subnode_path),)
|
|
13734
|
+
|
|
13735
|
+
def replaceChild(self, old_node, new_node):
|
|
13736
|
+
value = self.subnode_path
|
|
13737
|
+
if old_node is value:
|
|
13738
|
+
if new_node is not None:
|
|
13739
|
+
new_node.parent = self
|
|
13740
|
+
|
|
13741
|
+
self.subnode_path = new_node
|
|
13742
|
+
|
|
13743
|
+
return
|
|
13744
|
+
|
|
13745
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
13746
|
+
|
|
13747
|
+
def getCloneArgs(self):
|
|
13748
|
+
"""Get clones of all children to pass for a new node.
|
|
13749
|
+
|
|
13750
|
+
Needs to make clones of child nodes too.
|
|
13751
|
+
"""
|
|
13752
|
+
|
|
13753
|
+
values = {
|
|
13754
|
+
"path": (
|
|
13755
|
+
self.subnode_path.makeClone() if self.subnode_path is not None else None
|
|
13756
|
+
),
|
|
13757
|
+
}
|
|
13758
|
+
|
|
13759
|
+
values.update(self.getDetails())
|
|
13760
|
+
|
|
13761
|
+
return values
|
|
13762
|
+
|
|
13763
|
+
def finalize(self):
|
|
13764
|
+
del self.parent
|
|
13765
|
+
|
|
13766
|
+
if self.subnode_path is not None:
|
|
13767
|
+
self.subnode_path.finalize()
|
|
13768
|
+
del self.subnode_path
|
|
13769
|
+
|
|
13770
|
+
def computeExpressionRaw(self, trace_collection):
|
|
13771
|
+
"""Compute an expression.
|
|
13772
|
+
|
|
13773
|
+
Default behavior is to just visit the child expressions first, and
|
|
13774
|
+
then the node "computeExpression". For a few cases this needs to
|
|
13775
|
+
be overloaded, e.g. conditional expressions.
|
|
13776
|
+
"""
|
|
13777
|
+
|
|
13778
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
13779
|
+
expression = self.subnode_path
|
|
13780
|
+
|
|
13781
|
+
if expression is not None:
|
|
13782
|
+
expression = trace_collection.onExpression(expression)
|
|
13783
|
+
|
|
13784
|
+
if expression.willRaiseAnyException():
|
|
13785
|
+
return (
|
|
13786
|
+
expression,
|
|
13787
|
+
"new_raise",
|
|
13788
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
13789
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
13790
|
+
)
|
|
13791
|
+
|
|
13792
|
+
# Then ask ourselves to work on it.
|
|
13793
|
+
return self.computeExpression(trace_collection)
|
|
13794
|
+
|
|
13795
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
13796
|
+
"""Collect variable reads and writes of child nodes."""
|
|
13797
|
+
|
|
13798
|
+
subnode_path = self.subnode_path
|
|
13799
|
+
|
|
13800
|
+
if subnode_path is not None:
|
|
13801
|
+
self.subnode_path.collectVariableAccesses(emit_read, emit_write)
|
|
13802
|
+
|
|
13803
|
+
|
|
13804
|
+
# Assign the names that are easier to import with a stable name.
|
|
13805
|
+
ChildrenExpressionOsListdirMixin = ChildHavingPathOptionalMixin
|
|
13806
|
+
|
|
13807
|
+
|
|
13808
|
+
class ChildrenHavingPathOptionalDirFdOptionalMixin(object):
|
|
13809
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
13810
|
+
__slots__ = ()
|
|
13811
|
+
|
|
13812
|
+
# This is generated for use in
|
|
13813
|
+
# ExpressionOsLstat
|
|
13814
|
+
|
|
13815
|
+
def __init__(
|
|
13816
|
+
self,
|
|
13817
|
+
path,
|
|
13818
|
+
dir_fd,
|
|
13819
|
+
):
|
|
13820
|
+
if path is not None:
|
|
13821
|
+
path.parent = self
|
|
13822
|
+
|
|
13823
|
+
self.subnode_path = path
|
|
13824
|
+
|
|
13825
|
+
if dir_fd is not None:
|
|
13826
|
+
dir_fd.parent = self
|
|
13827
|
+
|
|
13828
|
+
self.subnode_dir_fd = dir_fd
|
|
13829
|
+
|
|
13830
|
+
def getVisitableNodes(self):
|
|
13831
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
13832
|
+
|
|
13833
|
+
result = []
|
|
13834
|
+
value = self.subnode_path
|
|
13835
|
+
if value is None:
|
|
13836
|
+
pass
|
|
13837
|
+
else:
|
|
13838
|
+
result.append(value)
|
|
13839
|
+
value = self.subnode_dir_fd
|
|
13840
|
+
if value is None:
|
|
13841
|
+
pass
|
|
13842
|
+
else:
|
|
13843
|
+
result.append(value)
|
|
13844
|
+
return tuple(result)
|
|
13845
|
+
|
|
13846
|
+
def getVisitableNodesNamed(self):
|
|
13847
|
+
"""Named children dictionary.
|
|
13848
|
+
|
|
13849
|
+
For use in cloning nodes, debugging and XML output.
|
|
13850
|
+
"""
|
|
13851
|
+
|
|
13852
|
+
return (
|
|
13853
|
+
("path", self.subnode_path),
|
|
13854
|
+
("dir_fd", self.subnode_dir_fd),
|
|
13855
|
+
)
|
|
13856
|
+
|
|
13857
|
+
def replaceChild(self, old_node, new_node):
|
|
13858
|
+
value = self.subnode_path
|
|
13859
|
+
if old_node is value:
|
|
13860
|
+
if new_node is not None:
|
|
13861
|
+
new_node.parent = self
|
|
13862
|
+
|
|
13863
|
+
self.subnode_path = new_node
|
|
13864
|
+
|
|
13865
|
+
return
|
|
13866
|
+
|
|
13867
|
+
value = self.subnode_dir_fd
|
|
13868
|
+
if old_node is value:
|
|
13869
|
+
if new_node is not None:
|
|
13870
|
+
new_node.parent = self
|
|
13871
|
+
|
|
13872
|
+
self.subnode_dir_fd = new_node
|
|
13873
|
+
|
|
13874
|
+
return
|
|
13875
|
+
|
|
13876
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
13877
|
+
|
|
13878
|
+
def getCloneArgs(self):
|
|
13879
|
+
"""Get clones of all children to pass for a new node.
|
|
13880
|
+
|
|
13881
|
+
Needs to make clones of child nodes too.
|
|
13882
|
+
"""
|
|
13883
|
+
|
|
13884
|
+
values = {
|
|
13885
|
+
"path": (
|
|
13886
|
+
self.subnode_path.makeClone() if self.subnode_path is not None else None
|
|
13887
|
+
),
|
|
13888
|
+
"dir_fd": (
|
|
13889
|
+
self.subnode_dir_fd.makeClone()
|
|
13890
|
+
if self.subnode_dir_fd is not None
|
|
13891
|
+
else None
|
|
13892
|
+
),
|
|
13893
|
+
}
|
|
13894
|
+
|
|
13895
|
+
values.update(self.getDetails())
|
|
13896
|
+
|
|
13897
|
+
return values
|
|
13898
|
+
|
|
13899
|
+
def finalize(self):
|
|
13900
|
+
del self.parent
|
|
13901
|
+
|
|
13902
|
+
if self.subnode_path is not None:
|
|
13903
|
+
self.subnode_path.finalize()
|
|
13904
|
+
del self.subnode_path
|
|
13905
|
+
if self.subnode_dir_fd is not None:
|
|
13906
|
+
self.subnode_dir_fd.finalize()
|
|
13907
|
+
del self.subnode_dir_fd
|
|
13908
|
+
|
|
13909
|
+
def computeExpressionRaw(self, trace_collection):
|
|
13910
|
+
"""Compute an expression.
|
|
13911
|
+
|
|
13912
|
+
Default behavior is to just visit the child expressions first, and
|
|
13913
|
+
then the node "computeExpression". For a few cases this needs to
|
|
13914
|
+
be overloaded, e.g. conditional expressions.
|
|
13915
|
+
"""
|
|
13916
|
+
|
|
13917
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
13918
|
+
# the actual operation.
|
|
13919
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
13920
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
13921
|
+
|
|
13922
|
+
if expression.willRaiseAnyException():
|
|
13923
|
+
sub_expressions = self.getVisitableNodes()
|
|
13924
|
+
|
|
13925
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
13926
|
+
side_effects=sub_expressions[:count],
|
|
13927
|
+
old_node=sub_expression,
|
|
13928
|
+
new_node=expression,
|
|
13929
|
+
)
|
|
13930
|
+
|
|
13931
|
+
return (
|
|
13932
|
+
wrapped_expression,
|
|
13933
|
+
"new_raise",
|
|
13934
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
13935
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
13936
|
+
)
|
|
13937
|
+
|
|
13938
|
+
# Then ask ourselves to work on it.
|
|
13939
|
+
return self.computeExpression(trace_collection)
|
|
13940
|
+
|
|
13941
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
13942
|
+
"""Collect variable reads and writes of child nodes."""
|
|
13943
|
+
|
|
13944
|
+
subnode_path = self.subnode_path
|
|
13945
|
+
|
|
13946
|
+
if subnode_path is not None:
|
|
13947
|
+
self.subnode_path.collectVariableAccesses(emit_read, emit_write)
|
|
13948
|
+
subnode_dir_fd = self.subnode_dir_fd
|
|
13949
|
+
|
|
13950
|
+
if subnode_dir_fd is not None:
|
|
13951
|
+
self.subnode_dir_fd.collectVariableAccesses(emit_read, emit_write)
|
|
13952
|
+
|
|
13953
|
+
|
|
13954
|
+
# Assign the names that are easier to import with a stable name.
|
|
13955
|
+
ChildrenExpressionOsLstatMixin = ChildrenHavingPathOptionalDirFdOptionalMixin
|
|
13956
|
+
|
|
13957
|
+
|
|
13958
|
+
class ChildrenHavingPathOptionalDirFdOptionalFollowSymlinksOptionalMixin(object):
|
|
13959
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
13960
|
+
__slots__ = ()
|
|
13961
|
+
|
|
13962
|
+
# This is generated for use in
|
|
13963
|
+
# ExpressionOsStat
|
|
13964
|
+
|
|
13965
|
+
def __init__(
|
|
13966
|
+
self,
|
|
13967
|
+
path,
|
|
13968
|
+
dir_fd,
|
|
13969
|
+
follow_symlinks,
|
|
13970
|
+
):
|
|
13971
|
+
if path is not None:
|
|
13972
|
+
path.parent = self
|
|
13973
|
+
|
|
13974
|
+
self.subnode_path = path
|
|
13975
|
+
|
|
13976
|
+
if dir_fd is not None:
|
|
13977
|
+
dir_fd.parent = self
|
|
13978
|
+
|
|
13979
|
+
self.subnode_dir_fd = dir_fd
|
|
13980
|
+
|
|
13981
|
+
if follow_symlinks is not None:
|
|
13982
|
+
follow_symlinks.parent = self
|
|
13983
|
+
|
|
13984
|
+
self.subnode_follow_symlinks = follow_symlinks
|
|
12978
13985
|
|
|
12979
13986
|
def getVisitableNodes(self):
|
|
12980
13987
|
"""The visitable nodes, with tuple values flattened."""
|
|
12981
13988
|
|
|
13989
|
+
result = []
|
|
12982
13990
|
value = self.subnode_path
|
|
12983
|
-
|
|
12984
13991
|
if value is None:
|
|
12985
|
-
|
|
13992
|
+
pass
|
|
12986
13993
|
else:
|
|
12987
|
-
|
|
13994
|
+
result.append(value)
|
|
13995
|
+
value = self.subnode_dir_fd
|
|
13996
|
+
if value is None:
|
|
13997
|
+
pass
|
|
13998
|
+
else:
|
|
13999
|
+
result.append(value)
|
|
14000
|
+
value = self.subnode_follow_symlinks
|
|
14001
|
+
if value is None:
|
|
14002
|
+
pass
|
|
14003
|
+
else:
|
|
14004
|
+
result.append(value)
|
|
14005
|
+
return tuple(result)
|
|
12988
14006
|
|
|
12989
14007
|
def getVisitableNodesNamed(self):
|
|
12990
14008
|
"""Named children dictionary.
|
|
@@ -12992,7 +14010,11 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
12992
14010
|
For use in cloning nodes, debugging and XML output.
|
|
12993
14011
|
"""
|
|
12994
14012
|
|
|
12995
|
-
return (
|
|
14013
|
+
return (
|
|
14014
|
+
("path", self.subnode_path),
|
|
14015
|
+
("dir_fd", self.subnode_dir_fd),
|
|
14016
|
+
("follow_symlinks", self.subnode_follow_symlinks),
|
|
14017
|
+
)
|
|
12996
14018
|
|
|
12997
14019
|
def replaceChild(self, old_node, new_node):
|
|
12998
14020
|
value = self.subnode_path
|
|
@@ -13004,6 +14026,24 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
13004
14026
|
|
|
13005
14027
|
return
|
|
13006
14028
|
|
|
14029
|
+
value = self.subnode_dir_fd
|
|
14030
|
+
if old_node is value:
|
|
14031
|
+
if new_node is not None:
|
|
14032
|
+
new_node.parent = self
|
|
14033
|
+
|
|
14034
|
+
self.subnode_dir_fd = new_node
|
|
14035
|
+
|
|
14036
|
+
return
|
|
14037
|
+
|
|
14038
|
+
value = self.subnode_follow_symlinks
|
|
14039
|
+
if old_node is value:
|
|
14040
|
+
if new_node is not None:
|
|
14041
|
+
new_node.parent = self
|
|
14042
|
+
|
|
14043
|
+
self.subnode_follow_symlinks = new_node
|
|
14044
|
+
|
|
14045
|
+
return
|
|
14046
|
+
|
|
13007
14047
|
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
13008
14048
|
|
|
13009
14049
|
def getCloneArgs(self):
|
|
@@ -13013,9 +14053,19 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
13013
14053
|
"""
|
|
13014
14054
|
|
|
13015
14055
|
values = {
|
|
13016
|
-
"path":
|
|
13017
|
-
|
|
13018
|
-
|
|
14056
|
+
"path": (
|
|
14057
|
+
self.subnode_path.makeClone() if self.subnode_path is not None else None
|
|
14058
|
+
),
|
|
14059
|
+
"dir_fd": (
|
|
14060
|
+
self.subnode_dir_fd.makeClone()
|
|
14061
|
+
if self.subnode_dir_fd is not None
|
|
14062
|
+
else None
|
|
14063
|
+
),
|
|
14064
|
+
"follow_symlinks": (
|
|
14065
|
+
self.subnode_follow_symlinks.makeClone()
|
|
14066
|
+
if self.subnode_follow_symlinks is not None
|
|
14067
|
+
else None
|
|
14068
|
+
),
|
|
13019
14069
|
}
|
|
13020
14070
|
|
|
13021
14071
|
values.update(self.getDetails())
|
|
@@ -13028,6 +14078,12 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
13028
14078
|
if self.subnode_path is not None:
|
|
13029
14079
|
self.subnode_path.finalize()
|
|
13030
14080
|
del self.subnode_path
|
|
14081
|
+
if self.subnode_dir_fd is not None:
|
|
14082
|
+
self.subnode_dir_fd.finalize()
|
|
14083
|
+
del self.subnode_dir_fd
|
|
14084
|
+
if self.subnode_follow_symlinks is not None:
|
|
14085
|
+
self.subnode_follow_symlinks.finalize()
|
|
14086
|
+
del self.subnode_follow_symlinks
|
|
13031
14087
|
|
|
13032
14088
|
def computeExpressionRaw(self, trace_collection):
|
|
13033
14089
|
"""Compute an expression.
|
|
@@ -13037,15 +14093,22 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
13037
14093
|
be overloaded, e.g. conditional expressions.
|
|
13038
14094
|
"""
|
|
13039
14095
|
|
|
13040
|
-
# First apply the sub-
|
|
13041
|
-
|
|
13042
|
-
|
|
13043
|
-
|
|
13044
|
-
expression = trace_collection.onExpression(expression)
|
|
14096
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
14097
|
+
# the actual operation.
|
|
14098
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
14099
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
13045
14100
|
|
|
13046
14101
|
if expression.willRaiseAnyException():
|
|
14102
|
+
sub_expressions = self.getVisitableNodes()
|
|
14103
|
+
|
|
14104
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
14105
|
+
side_effects=sub_expressions[:count],
|
|
14106
|
+
old_node=sub_expression,
|
|
14107
|
+
new_node=expression,
|
|
14108
|
+
)
|
|
14109
|
+
|
|
13047
14110
|
return (
|
|
13048
|
-
|
|
14111
|
+
wrapped_expression,
|
|
13049
14112
|
"new_raise",
|
|
13050
14113
|
lambda: "For '%s' the child expression '%s' will raise."
|
|
13051
14114
|
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
@@ -13061,10 +14124,20 @@ class ChildHavingPathOptionalMixin(object):
|
|
|
13061
14124
|
|
|
13062
14125
|
if subnode_path is not None:
|
|
13063
14126
|
self.subnode_path.collectVariableAccesses(emit_read, emit_write)
|
|
14127
|
+
subnode_dir_fd = self.subnode_dir_fd
|
|
14128
|
+
|
|
14129
|
+
if subnode_dir_fd is not None:
|
|
14130
|
+
self.subnode_dir_fd.collectVariableAccesses(emit_read, emit_write)
|
|
14131
|
+
subnode_follow_symlinks = self.subnode_follow_symlinks
|
|
14132
|
+
|
|
14133
|
+
if subnode_follow_symlinks is not None:
|
|
14134
|
+
self.subnode_follow_symlinks.collectVariableAccesses(emit_read, emit_write)
|
|
13064
14135
|
|
|
13065
14136
|
|
|
13066
14137
|
# Assign the names that are easier to import with a stable name.
|
|
13067
|
-
|
|
14138
|
+
ChildrenExpressionOsStatMixin = (
|
|
14139
|
+
ChildrenHavingPathOptionalDirFdOptionalFollowSymlinksOptionalMixin
|
|
14140
|
+
)
|
|
13068
14141
|
|
|
13069
14142
|
|
|
13070
14143
|
class ChildrenHavingPosArgOptionalPairsTupleMixin(object):
|
|
@@ -13146,9 +14219,11 @@ class ChildrenHavingPosArgOptionalPairsTupleMixin(object):
|
|
|
13146
14219
|
"""
|
|
13147
14220
|
|
|
13148
14221
|
values = {
|
|
13149
|
-
"pos_arg":
|
|
13150
|
-
|
|
13151
|
-
|
|
14222
|
+
"pos_arg": (
|
|
14223
|
+
self.subnode_pos_arg.makeClone()
|
|
14224
|
+
if self.subnode_pos_arg is not None
|
|
14225
|
+
else None
|
|
14226
|
+
),
|
|
13152
14227
|
"pairs": tuple(v.makeClone() for v in self.subnode_pairs),
|
|
13153
14228
|
}
|
|
13154
14229
|
|
|
@@ -13284,9 +14359,9 @@ class ChildrenHavingRealOptionalImagMixin(object):
|
|
|
13284
14359
|
"""
|
|
13285
14360
|
|
|
13286
14361
|
values = {
|
|
13287
|
-
"real":
|
|
13288
|
-
|
|
13289
|
-
|
|
14362
|
+
"real": (
|
|
14363
|
+
self.subnode_real.makeClone() if self.subnode_real is not None else None
|
|
14364
|
+
),
|
|
13290
14365
|
"imag": self.subnode_imag.makeClone(),
|
|
13291
14366
|
}
|
|
13292
14367
|
|
|
@@ -14284,15 +15359,21 @@ class ChildrenHavingSourceFilenameModeFlagsOptionalDontInheritOptionalOptimizeOp
|
|
|
14284
15359
|
"source": self.subnode_source.makeClone(),
|
|
14285
15360
|
"filename": self.subnode_filename.makeClone(),
|
|
14286
15361
|
"mode": self.subnode_mode.makeClone(),
|
|
14287
|
-
"flags":
|
|
14288
|
-
|
|
14289
|
-
|
|
14290
|
-
|
|
14291
|
-
|
|
14292
|
-
|
|
14293
|
-
|
|
14294
|
-
|
|
14295
|
-
|
|
15362
|
+
"flags": (
|
|
15363
|
+
self.subnode_flags.makeClone()
|
|
15364
|
+
if self.subnode_flags is not None
|
|
15365
|
+
else None
|
|
15366
|
+
),
|
|
15367
|
+
"dont_inherit": (
|
|
15368
|
+
self.subnode_dont_inherit.makeClone()
|
|
15369
|
+
if self.subnode_dont_inherit is not None
|
|
15370
|
+
else None
|
|
15371
|
+
),
|
|
15372
|
+
"optimize": (
|
|
15373
|
+
self.subnode_optimize.makeClone()
|
|
15374
|
+
if self.subnode_optimize is not None
|
|
15375
|
+
else None
|
|
15376
|
+
),
|
|
14296
15377
|
}
|
|
14297
15378
|
|
|
14298
15379
|
values.update(self.getDetails())
|
|
@@ -14625,9 +15706,11 @@ class ChildrenHavingSourceCodeGlobalsArgLocalsArgClosureOptionalMixin(object):
|
|
|
14625
15706
|
"source_code": self.subnode_source_code.makeClone(),
|
|
14626
15707
|
"globals_arg": self.subnode_globals_arg.makeClone(),
|
|
14627
15708
|
"locals_arg": self.subnode_locals_arg.makeClone(),
|
|
14628
|
-
"closure":
|
|
14629
|
-
|
|
14630
|
-
|
|
15709
|
+
"closure": (
|
|
15710
|
+
self.subnode_closure.makeClone()
|
|
15711
|
+
if self.subnode_closure is not None
|
|
15712
|
+
else None
|
|
15713
|
+
),
|
|
14631
15714
|
}
|
|
14632
15715
|
|
|
14633
15716
|
values.update(self.getDetails())
|
|
@@ -18535,12 +19618,16 @@ class ChildrenHavingStringEncodingOptionalErrorsOptionalMixin(object):
|
|
|
18535
19618
|
|
|
18536
19619
|
values = {
|
|
18537
19620
|
"string": self.subnode_string.makeClone(),
|
|
18538
|
-
"encoding":
|
|
18539
|
-
|
|
18540
|
-
|
|
18541
|
-
|
|
18542
|
-
|
|
18543
|
-
|
|
19621
|
+
"encoding": (
|
|
19622
|
+
self.subnode_encoding.makeClone()
|
|
19623
|
+
if self.subnode_encoding is not None
|
|
19624
|
+
else None
|
|
19625
|
+
),
|
|
19626
|
+
"errors": (
|
|
19627
|
+
self.subnode_errors.makeClone()
|
|
19628
|
+
if self.subnode_errors is not None
|
|
19629
|
+
else None
|
|
19630
|
+
),
|
|
18544
19631
|
}
|
|
18545
19632
|
|
|
18546
19633
|
values.update(self.getDetails())
|
|
@@ -18795,12 +19882,14 @@ class ChildrenHavingTypeArgArgsOptionalKwargsOptionalMixin(object):
|
|
|
18795
19882
|
|
|
18796
19883
|
values = {
|
|
18797
19884
|
"type_arg": self.subnode_type_arg.makeClone(),
|
|
18798
|
-
"args":
|
|
18799
|
-
|
|
18800
|
-
|
|
18801
|
-
"kwargs":
|
|
18802
|
-
|
|
18803
|
-
|
|
19885
|
+
"args": (
|
|
19886
|
+
self.subnode_args.makeClone() if self.subnode_args is not None else None
|
|
19887
|
+
),
|
|
19888
|
+
"kwargs": (
|
|
19889
|
+
self.subnode_kwargs.makeClone()
|
|
19890
|
+
if self.subnode_kwargs is not None
|
|
19891
|
+
else None
|
|
19892
|
+
),
|
|
18804
19893
|
}
|
|
18805
19894
|
|
|
18806
19895
|
values.update(self.getDetails())
|
|
@@ -19140,6 +20229,233 @@ class ChildrenHavingTypeNameBasesDictArgMixin(object):
|
|
|
19140
20229
|
ChildrenExpressionBuiltinType3Mixin = ChildrenHavingTypeNameBasesDictArgMixin
|
|
19141
20230
|
|
|
19142
20231
|
|
|
20232
|
+
class ChildHavingTypeParamsMixin(object):
|
|
20233
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
20234
|
+
__slots__ = ()
|
|
20235
|
+
|
|
20236
|
+
# This is generated for use in
|
|
20237
|
+
# ExpressionTypeMakeGeneric
|
|
20238
|
+
|
|
20239
|
+
def __init__(
|
|
20240
|
+
self,
|
|
20241
|
+
type_params,
|
|
20242
|
+
):
|
|
20243
|
+
type_params.parent = self
|
|
20244
|
+
|
|
20245
|
+
self.subnode_type_params = type_params
|
|
20246
|
+
|
|
20247
|
+
def getVisitableNodes(self):
|
|
20248
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
20249
|
+
|
|
20250
|
+
return (self.subnode_type_params,)
|
|
20251
|
+
|
|
20252
|
+
def getVisitableNodesNamed(self):
|
|
20253
|
+
"""Named children dictionary.
|
|
20254
|
+
|
|
20255
|
+
For use in cloning nodes, debugging and XML output.
|
|
20256
|
+
"""
|
|
20257
|
+
|
|
20258
|
+
return (("type_params", self.subnode_type_params),)
|
|
20259
|
+
|
|
20260
|
+
def replaceChild(self, old_node, new_node):
|
|
20261
|
+
value = self.subnode_type_params
|
|
20262
|
+
if old_node is value:
|
|
20263
|
+
new_node.parent = self
|
|
20264
|
+
|
|
20265
|
+
self.subnode_type_params = new_node
|
|
20266
|
+
|
|
20267
|
+
return
|
|
20268
|
+
|
|
20269
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
20270
|
+
|
|
20271
|
+
def getCloneArgs(self):
|
|
20272
|
+
"""Get clones of all children to pass for a new node.
|
|
20273
|
+
|
|
20274
|
+
Needs to make clones of child nodes too.
|
|
20275
|
+
"""
|
|
20276
|
+
|
|
20277
|
+
values = {
|
|
20278
|
+
"type_params": self.subnode_type_params.makeClone(),
|
|
20279
|
+
}
|
|
20280
|
+
|
|
20281
|
+
values.update(self.getDetails())
|
|
20282
|
+
|
|
20283
|
+
return values
|
|
20284
|
+
|
|
20285
|
+
def finalize(self):
|
|
20286
|
+
del self.parent
|
|
20287
|
+
|
|
20288
|
+
self.subnode_type_params.finalize()
|
|
20289
|
+
del self.subnode_type_params
|
|
20290
|
+
|
|
20291
|
+
def computeExpressionRaw(self, trace_collection):
|
|
20292
|
+
"""Compute an expression.
|
|
20293
|
+
|
|
20294
|
+
Default behavior is to just visit the child expressions first, and
|
|
20295
|
+
then the node "computeExpression". For a few cases this needs to
|
|
20296
|
+
be overloaded, e.g. conditional expressions.
|
|
20297
|
+
"""
|
|
20298
|
+
|
|
20299
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
20300
|
+
expression = trace_collection.onExpression(self.subnode_type_params)
|
|
20301
|
+
|
|
20302
|
+
if expression.willRaiseAnyException():
|
|
20303
|
+
return (
|
|
20304
|
+
expression,
|
|
20305
|
+
"new_raise",
|
|
20306
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
20307
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
20308
|
+
)
|
|
20309
|
+
|
|
20310
|
+
# Then ask ourselves to work on it.
|
|
20311
|
+
return self.computeExpression(trace_collection)
|
|
20312
|
+
|
|
20313
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
20314
|
+
"""Collect variable reads and writes of child nodes."""
|
|
20315
|
+
|
|
20316
|
+
self.subnode_type_params.collectVariableAccesses(emit_read, emit_write)
|
|
20317
|
+
|
|
20318
|
+
|
|
20319
|
+
# Assign the names that are easier to import with a stable name.
|
|
20320
|
+
ChildrenExpressionTypeMakeGenericMixin = ChildHavingTypeParamsMixin
|
|
20321
|
+
|
|
20322
|
+
|
|
20323
|
+
class ChildrenHavingTypeParamsTupleComputeValueMixin(object):
|
|
20324
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
20325
|
+
__slots__ = ()
|
|
20326
|
+
|
|
20327
|
+
# This is generated for use in
|
|
20328
|
+
# ExpressionTypeAlias
|
|
20329
|
+
|
|
20330
|
+
def __init__(
|
|
20331
|
+
self,
|
|
20332
|
+
type_params,
|
|
20333
|
+
compute_value,
|
|
20334
|
+
):
|
|
20335
|
+
assert type(type_params) is tuple
|
|
20336
|
+
|
|
20337
|
+
for val in type_params:
|
|
20338
|
+
val.parent = self
|
|
20339
|
+
|
|
20340
|
+
self.subnode_type_params = type_params
|
|
20341
|
+
|
|
20342
|
+
compute_value.parent = self
|
|
20343
|
+
|
|
20344
|
+
self.subnode_compute_value = compute_value
|
|
20345
|
+
|
|
20346
|
+
def getVisitableNodes(self):
|
|
20347
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
20348
|
+
|
|
20349
|
+
result = []
|
|
20350
|
+
result.extend(self.subnode_type_params)
|
|
20351
|
+
result.append(self.subnode_compute_value)
|
|
20352
|
+
return tuple(result)
|
|
20353
|
+
|
|
20354
|
+
def getVisitableNodesNamed(self):
|
|
20355
|
+
"""Named children dictionary.
|
|
20356
|
+
|
|
20357
|
+
For use in cloning nodes, debugging and XML output.
|
|
20358
|
+
"""
|
|
20359
|
+
|
|
20360
|
+
return (
|
|
20361
|
+
("type_params", self.subnode_type_params),
|
|
20362
|
+
("compute_value", self.subnode_compute_value),
|
|
20363
|
+
)
|
|
20364
|
+
|
|
20365
|
+
def replaceChild(self, old_node, new_node):
|
|
20366
|
+
value = self.subnode_type_params
|
|
20367
|
+
if old_node in value:
|
|
20368
|
+
if new_node is not None:
|
|
20369
|
+
new_node.parent = self
|
|
20370
|
+
|
|
20371
|
+
self.subnode_type_params = tuple(
|
|
20372
|
+
(val if val is not old_node else new_node) for val in value
|
|
20373
|
+
)
|
|
20374
|
+
else:
|
|
20375
|
+
self.subnode_type_params = tuple(
|
|
20376
|
+
val for val in value if val is not old_node
|
|
20377
|
+
)
|
|
20378
|
+
|
|
20379
|
+
return
|
|
20380
|
+
|
|
20381
|
+
value = self.subnode_compute_value
|
|
20382
|
+
if old_node is value:
|
|
20383
|
+
new_node.parent = self
|
|
20384
|
+
|
|
20385
|
+
self.subnode_compute_value = new_node
|
|
20386
|
+
|
|
20387
|
+
return
|
|
20388
|
+
|
|
20389
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
20390
|
+
|
|
20391
|
+
def getCloneArgs(self):
|
|
20392
|
+
"""Get clones of all children to pass for a new node.
|
|
20393
|
+
|
|
20394
|
+
Needs to make clones of child nodes too.
|
|
20395
|
+
"""
|
|
20396
|
+
|
|
20397
|
+
values = {
|
|
20398
|
+
"type_params": tuple(v.makeClone() for v in self.subnode_type_params),
|
|
20399
|
+
"compute_value": self.subnode_compute_value.makeClone(),
|
|
20400
|
+
}
|
|
20401
|
+
|
|
20402
|
+
values.update(self.getDetails())
|
|
20403
|
+
|
|
20404
|
+
return values
|
|
20405
|
+
|
|
20406
|
+
def finalize(self):
|
|
20407
|
+
del self.parent
|
|
20408
|
+
|
|
20409
|
+
for c in self.subnode_type_params:
|
|
20410
|
+
c.finalize()
|
|
20411
|
+
del self.subnode_type_params
|
|
20412
|
+
self.subnode_compute_value.finalize()
|
|
20413
|
+
del self.subnode_compute_value
|
|
20414
|
+
|
|
20415
|
+
def computeExpressionRaw(self, trace_collection):
|
|
20416
|
+
"""Compute an expression.
|
|
20417
|
+
|
|
20418
|
+
Default behavior is to just visit the child expressions first, and
|
|
20419
|
+
then the node "computeExpression". For a few cases this needs to
|
|
20420
|
+
be overloaded, e.g. conditional expressions.
|
|
20421
|
+
"""
|
|
20422
|
+
|
|
20423
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
20424
|
+
# the actual operation.
|
|
20425
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
20426
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
20427
|
+
|
|
20428
|
+
if expression.willRaiseAnyException():
|
|
20429
|
+
sub_expressions = self.getVisitableNodes()
|
|
20430
|
+
|
|
20431
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
20432
|
+
side_effects=sub_expressions[:count],
|
|
20433
|
+
old_node=sub_expression,
|
|
20434
|
+
new_node=expression,
|
|
20435
|
+
)
|
|
20436
|
+
|
|
20437
|
+
return (
|
|
20438
|
+
wrapped_expression,
|
|
20439
|
+
"new_raise",
|
|
20440
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
20441
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
20442
|
+
)
|
|
20443
|
+
|
|
20444
|
+
# Then ask ourselves to work on it.
|
|
20445
|
+
return self.computeExpression(trace_collection)
|
|
20446
|
+
|
|
20447
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
20448
|
+
"""Collect variable reads and writes of child nodes."""
|
|
20449
|
+
|
|
20450
|
+
for element in self.subnode_type_params:
|
|
20451
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
20452
|
+
self.subnode_compute_value.collectVariableAccesses(emit_read, emit_write)
|
|
20453
|
+
|
|
20454
|
+
|
|
20455
|
+
# Assign the names that are easier to import with a stable name.
|
|
20456
|
+
ChildrenExpressionTypeAliasMixin = ChildrenHavingTypeParamsTupleComputeValueMixin
|
|
20457
|
+
|
|
20458
|
+
|
|
19143
20459
|
class ChildHavingValueMixin(object):
|
|
19144
20460
|
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
19145
20461
|
__slots__ = ()
|
|
@@ -19371,9 +20687,11 @@ class ChildrenHavingValueOptionalBaseMixin(object):
|
|
|
19371
20687
|
"""
|
|
19372
20688
|
|
|
19373
20689
|
values = {
|
|
19374
|
-
"value":
|
|
19375
|
-
|
|
19376
|
-
|
|
20690
|
+
"value": (
|
|
20691
|
+
self.subnode_value.makeClone()
|
|
20692
|
+
if self.subnode_value is not None
|
|
20693
|
+
else None
|
|
20694
|
+
),
|
|
19377
20695
|
"base": self.subnode_base.makeClone(),
|
|
19378
20696
|
}
|
|
19379
20697
|
|
|
@@ -19537,15 +20855,21 @@ class ChildrenHavingValueOptionalEncodingOptionalErrorsOptionalMixin(object):
|
|
|
19537
20855
|
"""
|
|
19538
20856
|
|
|
19539
20857
|
values = {
|
|
19540
|
-
"value":
|
|
19541
|
-
|
|
19542
|
-
|
|
19543
|
-
|
|
19544
|
-
|
|
19545
|
-
|
|
19546
|
-
|
|
19547
|
-
|
|
19548
|
-
|
|
20858
|
+
"value": (
|
|
20859
|
+
self.subnode_value.makeClone()
|
|
20860
|
+
if self.subnode_value is not None
|
|
20861
|
+
else None
|
|
20862
|
+
),
|
|
20863
|
+
"encoding": (
|
|
20864
|
+
self.subnode_encoding.makeClone()
|
|
20865
|
+
if self.subnode_encoding is not None
|
|
20866
|
+
else None
|
|
20867
|
+
),
|
|
20868
|
+
"errors": (
|
|
20869
|
+
self.subnode_errors.makeClone()
|
|
20870
|
+
if self.subnode_errors is not None
|
|
20871
|
+
else None
|
|
20872
|
+
),
|
|
19549
20873
|
}
|
|
19550
20874
|
|
|
19551
20875
|
values.update(self.getDetails())
|
|
@@ -19700,9 +21024,11 @@ class ChildrenHavingValueFormatSpecOptionalAutoNoneEmptyStrMixin(object):
|
|
|
19700
21024
|
|
|
19701
21025
|
values = {
|
|
19702
21026
|
"value": self.subnode_value.makeClone(),
|
|
19703
|
-
"format_spec":
|
|
19704
|
-
|
|
19705
|
-
|
|
21027
|
+
"format_spec": (
|
|
21028
|
+
self.subnode_format_spec.makeClone()
|
|
21029
|
+
if self.subnode_format_spec is not None
|
|
21030
|
+
else None
|
|
21031
|
+
),
|
|
19706
21032
|
}
|
|
19707
21033
|
|
|
19708
21034
|
values.update(self.getDetails())
|
|
@@ -20009,3 +21335,18 @@ class ChildHavingValuesTupleMixin(object):
|
|
|
20009
21335
|
|
|
20010
21336
|
# Assign the names that are easier to import with a stable name.
|
|
20011
21337
|
ChildrenExpressionStringConcatenationMixin = ChildHavingValuesTupleMixin
|
|
21338
|
+
|
|
21339
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
21340
|
+
# integrates with CPython, but also works on its own.
|
|
21341
|
+
#
|
|
21342
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
21343
|
+
# you may not use this file except in compliance with the License.
|
|
21344
|
+
# You may obtain a copy of the License at
|
|
21345
|
+
#
|
|
21346
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
21347
|
+
#
|
|
21348
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
21349
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
21350
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21351
|
+
# See the License for the specific language governing permissions and
|
|
21352
|
+
# limitations under the License.
|