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,20 +1,6 @@
|
|
|
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
|
""" Reformulation of Python3 class statements.
|
|
19
5
|
|
|
20
6
|
Consult the Developer Manual for information. TODO: Add ability to sync
|
|
@@ -33,7 +19,8 @@ from nuitka.nodes.BuiltinRefNodes import makeExpressionBuiltinTypeRef
|
|
|
33
19
|
from nuitka.nodes.BuiltinTypeNodes import ExpressionBuiltinTuple
|
|
34
20
|
from nuitka.nodes.CallNodes import makeExpressionCall
|
|
35
21
|
from nuitka.nodes.ClassNodes import (
|
|
36
|
-
|
|
22
|
+
ExpressionClassDictBody,
|
|
23
|
+
ExpressionClassMappingBody,
|
|
37
24
|
ExpressionSelectMetaclass,
|
|
38
25
|
)
|
|
39
26
|
from nuitka.nodes.CodeObjectSpecs import CodeObjectSpec
|
|
@@ -52,7 +39,6 @@ from nuitka.nodes.DictionaryNodes import (
|
|
|
52
39
|
ExpressionDictOperationGet2,
|
|
53
40
|
ExpressionDictOperationIn,
|
|
54
41
|
StatementDictOperationRemove,
|
|
55
|
-
StatementDictOperationUpdate,
|
|
56
42
|
)
|
|
57
43
|
from nuitka.nodes.ExceptionNodes import (
|
|
58
44
|
ExpressionBuiltinMakeException,
|
|
@@ -77,6 +63,7 @@ from nuitka.nodes.NodeMakingHelpers import (
|
|
|
77
63
|
makeRaiseExceptionExpressionFromTemplate,
|
|
78
64
|
mergeStatements,
|
|
79
65
|
)
|
|
66
|
+
from nuitka.nodes.OperatorNodes import makeBinaryOperationNode
|
|
80
67
|
from nuitka.nodes.ReturnNodes import StatementReturn
|
|
81
68
|
from nuitka.nodes.StatementNodes import StatementExpressionOnly
|
|
82
69
|
from nuitka.nodes.SubscriptNodes import makeExpressionIndexLookup
|
|
@@ -84,15 +71,19 @@ from nuitka.nodes.TypeNodes import (
|
|
|
84
71
|
ExpressionBuiltinType1,
|
|
85
72
|
ExpressionSubtypeCheck,
|
|
86
73
|
ExpressionTypeCheck,
|
|
74
|
+
ExpressionTypeMakeGeneric,
|
|
87
75
|
)
|
|
88
76
|
from nuitka.nodes.VariableAssignNodes import makeStatementAssignmentVariable
|
|
89
|
-
from nuitka.nodes.VariableNameNodes import
|
|
77
|
+
from nuitka.nodes.VariableNameNodes import (
|
|
78
|
+
ExpressionVariableNameRef,
|
|
79
|
+
StatementAssignmentVariableName,
|
|
80
|
+
)
|
|
90
81
|
from nuitka.nodes.VariableRefNodes import (
|
|
91
82
|
ExpressionTempVariableRef,
|
|
92
83
|
ExpressionVariableRef,
|
|
93
84
|
)
|
|
94
|
-
from nuitka.nodes.VariableReleaseNodes import makeStatementsReleaseVariables
|
|
95
85
|
from nuitka.Options import isExperimental
|
|
86
|
+
from nuitka.plugins.Plugins import Plugins
|
|
96
87
|
from nuitka.PythonVersions import python_version
|
|
97
88
|
from nuitka.specs.ParameterSpecs import ParameterSpec
|
|
98
89
|
|
|
@@ -101,12 +92,15 @@ from .InternalModule import (
|
|
|
101
92
|
makeInternalHelperFunctionBody,
|
|
102
93
|
once_decorator,
|
|
103
94
|
)
|
|
95
|
+
from .ReformulationDictionaryCreation import buildDictionaryUnpacking
|
|
104
96
|
from .ReformulationSequenceCreation import buildTupleUnpacking
|
|
105
97
|
from .ReformulationTryExceptStatements import makeTryExceptSingleHandlerNode
|
|
106
|
-
from .ReformulationTryFinallyStatements import
|
|
98
|
+
from .ReformulationTryFinallyStatements import (
|
|
99
|
+
makeTryFinallyReleaseStatement,
|
|
100
|
+
makeTryFinallyStatement,
|
|
101
|
+
)
|
|
107
102
|
from .TreeHelpers import (
|
|
108
103
|
buildFrameNode,
|
|
109
|
-
buildNode,
|
|
110
104
|
buildNodeTuple,
|
|
111
105
|
extractDocFromBody,
|
|
112
106
|
getKind,
|
|
@@ -133,27 +127,54 @@ def _buildBasesTupleCreationNode(provider, elements, source_ref):
|
|
|
133
127
|
)
|
|
134
128
|
|
|
135
129
|
|
|
130
|
+
def _selectClassBody(_static_qualname):
|
|
131
|
+
if isExperimental("force-p2-class"):
|
|
132
|
+
return ExpressionClassDictBody
|
|
133
|
+
else:
|
|
134
|
+
return ExpressionClassMappingBody
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def _needsOrigBases(_static_qualname):
|
|
138
|
+
if isExperimental("force-p2-class"):
|
|
139
|
+
return False
|
|
140
|
+
elif python_version < 0x370:
|
|
141
|
+
return False
|
|
142
|
+
else:
|
|
143
|
+
return True
|
|
144
|
+
|
|
145
|
+
|
|
136
146
|
def buildClassNode3(provider, node, source_ref):
|
|
137
147
|
# Many variables, due to the huge re-formulation that is going on here,
|
|
138
148
|
# which just has the complexity and optimization checks:
|
|
139
|
-
# pylint: disable=
|
|
149
|
+
# pylint: disable=too-many-branches,too-many-locals,too-many-statements
|
|
140
150
|
|
|
141
151
|
# This function is the Python3 special case with special re-formulation as
|
|
142
152
|
# according to Developer Manual.
|
|
153
|
+
|
|
154
|
+
# First, allow plugins to modify the code if they want to.
|
|
155
|
+
Plugins.onClassBodyParsing(provider=provider, class_name=node.name, node=node)
|
|
156
|
+
|
|
143
157
|
class_statement_nodes, class_doc = extractDocFromBody(node)
|
|
144
158
|
|
|
145
159
|
# We need a scope for the temporary variables, and they might be closured.
|
|
146
160
|
temp_scope = provider.allocateTempScope(name="class_creation")
|
|
147
161
|
|
|
148
162
|
tmp_class_decl_dict = provider.allocateTempVariable(
|
|
149
|
-
temp_scope=temp_scope, name="class_decl_dict"
|
|
163
|
+
temp_scope=temp_scope, name="class_decl_dict", temp_type="object"
|
|
150
164
|
)
|
|
151
165
|
tmp_metaclass = provider.allocateTempVariable(
|
|
152
|
-
temp_scope=temp_scope, name="metaclass"
|
|
166
|
+
temp_scope=temp_scope, name="metaclass", temp_type="object"
|
|
167
|
+
)
|
|
168
|
+
tmp_prepared = provider.allocateTempVariable(
|
|
169
|
+
temp_scope=temp_scope, name="prepared", temp_type="object"
|
|
153
170
|
)
|
|
154
|
-
tmp_prepared = provider.allocateTempVariable(temp_scope=temp_scope, name="prepared")
|
|
155
171
|
|
|
156
|
-
|
|
172
|
+
# Can be overridden, but for code object creation, we use that.
|
|
173
|
+
static_qualname = provider.getChildQualname(node.name)
|
|
174
|
+
|
|
175
|
+
class_body_class = _selectClassBody(static_qualname)
|
|
176
|
+
|
|
177
|
+
class_creation_function = class_body_class(
|
|
157
178
|
provider=provider, name=node.name, doc=class_doc, source_ref=source_ref
|
|
158
179
|
)
|
|
159
180
|
|
|
@@ -161,11 +182,36 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
161
182
|
|
|
162
183
|
# Only local variable, for provision to methods.
|
|
163
184
|
class_variable = class_locals_scope.getLocalVariable(
|
|
164
|
-
owner=class_creation_function,
|
|
185
|
+
owner=class_creation_function,
|
|
186
|
+
variable_name="__class__",
|
|
165
187
|
)
|
|
166
188
|
|
|
167
189
|
class_locals_scope.registerProvidedVariable(class_variable)
|
|
168
190
|
|
|
191
|
+
if python_version >= 0x3C0:
|
|
192
|
+
type_param_nodes = node.type_params
|
|
193
|
+
else:
|
|
194
|
+
type_param_nodes = None
|
|
195
|
+
|
|
196
|
+
if type_param_nodes is not None:
|
|
197
|
+
type_params_expressions = buildNodeTuple(
|
|
198
|
+
provider=provider, nodes=type_param_nodes, source_ref=source_ref
|
|
199
|
+
)
|
|
200
|
+
else:
|
|
201
|
+
type_params_expressions = ()
|
|
202
|
+
|
|
203
|
+
type_variables = []
|
|
204
|
+
|
|
205
|
+
for type_params_expression in type_params_expressions:
|
|
206
|
+
type_variable = class_locals_scope.getLocalVariable(
|
|
207
|
+
owner=class_creation_function,
|
|
208
|
+
variable_name=type_params_expression.name,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
class_locals_scope.registerProvidedVariable(type_variable)
|
|
212
|
+
|
|
213
|
+
type_variables.append(type_variable)
|
|
214
|
+
|
|
169
215
|
class_variable_ref = ExpressionVariableRef(
|
|
170
216
|
variable=class_variable, source_ref=source_ref
|
|
171
217
|
)
|
|
@@ -174,7 +220,7 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
174
220
|
|
|
175
221
|
code_object = CodeObjectSpec(
|
|
176
222
|
co_name=node.name,
|
|
177
|
-
co_qualname=
|
|
223
|
+
co_qualname=static_qualname,
|
|
178
224
|
co_kind="Class",
|
|
179
225
|
co_varnames=(),
|
|
180
226
|
co_freevars=(),
|
|
@@ -222,6 +268,35 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
222
268
|
),
|
|
223
269
|
]
|
|
224
270
|
|
|
271
|
+
for type_variable, type_params_expression in zip(
|
|
272
|
+
type_variables, type_params_expressions
|
|
273
|
+
):
|
|
274
|
+
statements.append(
|
|
275
|
+
makeStatementAssignmentVariable(
|
|
276
|
+
variable=type_variable,
|
|
277
|
+
source=type_params_expression,
|
|
278
|
+
source_ref=source_ref,
|
|
279
|
+
)
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
if type_params_expressions:
|
|
283
|
+
statements.append(
|
|
284
|
+
StatementAssignmentVariableName(
|
|
285
|
+
provider=class_creation_function,
|
|
286
|
+
variable_name="__type_params__",
|
|
287
|
+
source=makeExpressionMakeTuple(
|
|
288
|
+
elements=tuple(
|
|
289
|
+
ExpressionVariableRef(
|
|
290
|
+
variable=type_variable, source_ref=source_ref
|
|
291
|
+
)
|
|
292
|
+
for type_variable in type_variables
|
|
293
|
+
),
|
|
294
|
+
source_ref=source_ref,
|
|
295
|
+
),
|
|
296
|
+
source_ref=source_ref,
|
|
297
|
+
)
|
|
298
|
+
)
|
|
299
|
+
|
|
225
300
|
if class_doc is not None:
|
|
226
301
|
statements.append(
|
|
227
302
|
StatementAssignmentVariableName(
|
|
@@ -234,17 +309,10 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
234
309
|
)
|
|
235
310
|
)
|
|
236
311
|
|
|
237
|
-
# The "__qualname__" attribute
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
qualname_ref = makeConstantRefNode(
|
|
242
|
-
constant=qualname, source_ref=source_ref, user_provided=True
|
|
243
|
-
)
|
|
244
|
-
else:
|
|
245
|
-
qualname_ref = ExpressionFunctionQualnameRef(
|
|
246
|
-
function_body=class_creation_function, source_ref=source_ref
|
|
247
|
-
)
|
|
312
|
+
# The "__qualname__" attribute has a dedicated node.
|
|
313
|
+
qualname_ref = ExpressionFunctionQualnameRef(
|
|
314
|
+
function_body=class_creation_function, source_ref=source_ref
|
|
315
|
+
)
|
|
248
316
|
|
|
249
317
|
statements.append(
|
|
250
318
|
StatementLocalsDictOperationSet(
|
|
@@ -255,7 +323,7 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
255
323
|
)
|
|
256
324
|
)
|
|
257
325
|
|
|
258
|
-
if python_version >=
|
|
326
|
+
if python_version >= 0x300:
|
|
259
327
|
qualname_assign = statements[-1]
|
|
260
328
|
|
|
261
329
|
if python_version >= 0x360 and class_creation_function.needsAnnotationsDictionary():
|
|
@@ -272,12 +340,18 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
272
340
|
|
|
273
341
|
statements.append(body)
|
|
274
342
|
|
|
275
|
-
|
|
276
|
-
|
|
343
|
+
needs_orig_bases = _needsOrigBases(static_qualname)
|
|
344
|
+
|
|
345
|
+
has_bases = node.bases or type_params_expressions
|
|
277
346
|
|
|
278
|
-
|
|
347
|
+
if has_bases:
|
|
348
|
+
tmp_bases = provider.allocateTempVariable(
|
|
349
|
+
temp_scope=temp_scope, name="bases", temp_type="object"
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
if needs_orig_bases:
|
|
279
353
|
tmp_bases_orig = provider.allocateTempVariable(
|
|
280
|
-
temp_scope=temp_scope, name="bases_orig"
|
|
354
|
+
temp_scope=temp_scope, name="bases_orig", temp_type="object"
|
|
281
355
|
)
|
|
282
356
|
|
|
283
357
|
def makeBasesRef():
|
|
@@ -288,7 +362,9 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
288
362
|
def makeBasesRef():
|
|
289
363
|
return makeConstantRefNode(constant=(), source_ref=source_ref)
|
|
290
364
|
|
|
291
|
-
|
|
365
|
+
needs_orig_bases = False
|
|
366
|
+
|
|
367
|
+
if has_bases and needs_orig_bases:
|
|
292
368
|
statements.append(
|
|
293
369
|
makeStatementConditional(
|
|
294
370
|
condition=makeComparisonExpression(
|
|
@@ -345,6 +421,7 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
345
421
|
StatementReturn(expression=class_variable_ref, source_ref=source_ref),
|
|
346
422
|
)
|
|
347
423
|
|
|
424
|
+
# TODO: Is this something similar to makeTryFinallyReleaseStatement
|
|
348
425
|
body = makeStatementsSequenceFromStatement(
|
|
349
426
|
statement=makeTryFinallyStatement(
|
|
350
427
|
provider=class_creation_function,
|
|
@@ -378,25 +455,40 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
378
455
|
source_ref=decorator.getSourceReference(),
|
|
379
456
|
)
|
|
380
457
|
|
|
381
|
-
if node.keywords and node.keywords[-1].arg is None:
|
|
382
|
-
keywords = node.keywords[:-1]
|
|
383
|
-
else:
|
|
384
|
-
keywords = node.keywords
|
|
385
|
-
|
|
386
458
|
statements = []
|
|
387
459
|
|
|
388
|
-
if
|
|
460
|
+
if has_bases:
|
|
461
|
+
if node.bases:
|
|
462
|
+
bases_value = _buildBasesTupleCreationNode(
|
|
463
|
+
provider=provider, elements=node.bases, source_ref=source_ref
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
if type_params_expressions:
|
|
467
|
+
bases_value = makeBinaryOperationNode(
|
|
468
|
+
operator="Add",
|
|
469
|
+
left=bases_value,
|
|
470
|
+
right=ExpressionTypeMakeGeneric(
|
|
471
|
+
type_params=ExpressionVariableNameRef(
|
|
472
|
+
provider=class_creation_function,
|
|
473
|
+
variable_name="__type_params__",
|
|
474
|
+
source_ref=source_ref,
|
|
475
|
+
),
|
|
476
|
+
source_ref=source_ref,
|
|
477
|
+
),
|
|
478
|
+
source_ref=source_ref,
|
|
479
|
+
)
|
|
480
|
+
else:
|
|
481
|
+
assert False
|
|
482
|
+
|
|
389
483
|
statements.append(
|
|
390
484
|
makeStatementAssignmentVariable(
|
|
391
|
-
variable=
|
|
392
|
-
source=
|
|
393
|
-
provider=provider, elements=node.bases, source_ref=source_ref
|
|
394
|
-
),
|
|
485
|
+
variable=tmp_bases_orig if needs_orig_bases else tmp_bases,
|
|
486
|
+
source=bases_value,
|
|
395
487
|
source_ref=source_ref,
|
|
396
488
|
)
|
|
397
489
|
)
|
|
398
490
|
|
|
399
|
-
if
|
|
491
|
+
if needs_orig_bases:
|
|
400
492
|
bases_conversion = makeExpressionFunctionCall(
|
|
401
493
|
function=makeExpressionFunctionCreation(
|
|
402
494
|
function_ref=ExpressionFunctionRef(
|
|
@@ -422,32 +514,35 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
422
514
|
)
|
|
423
515
|
)
|
|
424
516
|
|
|
517
|
+
# TODO: It's not really clear, since when those in the middle keywords are accepted
|
|
518
|
+
# and not a SyntaxError, and if then we might have to raise it.
|
|
519
|
+
keyword_keys = tuple(keyword.arg for keyword in node.keywords)
|
|
520
|
+
keyword_values = tuple(keyword.value for keyword in node.keywords)
|
|
521
|
+
|
|
522
|
+
if None in keyword_keys:
|
|
523
|
+
assert python_version >= 0x350
|
|
524
|
+
|
|
525
|
+
make_keywords_dict = buildDictionaryUnpacking(
|
|
526
|
+
provider,
|
|
527
|
+
keys=keyword_keys,
|
|
528
|
+
values=keyword_values,
|
|
529
|
+
source_ref=source_ref,
|
|
530
|
+
)
|
|
531
|
+
else:
|
|
532
|
+
make_keywords_dict = makeDictCreationOrConstant2(
|
|
533
|
+
keys=keyword_keys,
|
|
534
|
+
values=buildNodeTuple(provider, keyword_values, source_ref),
|
|
535
|
+
source_ref=source_ref,
|
|
536
|
+
)
|
|
537
|
+
|
|
425
538
|
statements.append(
|
|
426
539
|
makeStatementAssignmentVariable(
|
|
427
540
|
variable=tmp_class_decl_dict,
|
|
428
|
-
source=
|
|
429
|
-
keys=[keyword.arg for keyword in keywords],
|
|
430
|
-
values=[
|
|
431
|
-
buildNode(provider, keyword.value, source_ref)
|
|
432
|
-
for keyword in keywords
|
|
433
|
-
],
|
|
434
|
-
source_ref=source_ref,
|
|
435
|
-
),
|
|
541
|
+
source=make_keywords_dict,
|
|
436
542
|
source_ref=source_ref,
|
|
437
543
|
)
|
|
438
544
|
)
|
|
439
545
|
|
|
440
|
-
if node.keywords and node.keywords[-1].arg is None:
|
|
441
|
-
statements.append(
|
|
442
|
-
StatementDictOperationUpdate(
|
|
443
|
-
dict_arg=ExpressionVariableRef(
|
|
444
|
-
variable=tmp_class_decl_dict, source_ref=source_ref
|
|
445
|
-
),
|
|
446
|
-
value=buildNode(provider, node.keywords[-1].value, source_ref),
|
|
447
|
-
source_ref=source_ref,
|
|
448
|
-
)
|
|
449
|
-
)
|
|
450
|
-
|
|
451
546
|
# Check if there are bases, and if there are, go with the type of the
|
|
452
547
|
# first base class as a metaclass unless it was specified in the class
|
|
453
548
|
# decl dict of course.
|
|
@@ -465,7 +560,7 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
465
560
|
|
|
466
561
|
# Might become empty behind our back during conversion, therefore make the
|
|
467
562
|
# check at run time for 3.7 or higher.
|
|
468
|
-
if
|
|
563
|
+
if needs_orig_bases:
|
|
469
564
|
unspecified_metaclass_expression = ExpressionConditional(
|
|
470
565
|
condition=ExpressionTempVariableRef(
|
|
471
566
|
variable=tmp_bases, source_ref=source_ref
|
|
@@ -553,6 +648,17 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
553
648
|
),
|
|
554
649
|
)
|
|
555
650
|
|
|
651
|
+
if class_body_class is ExpressionClassDictBody:
|
|
652
|
+
prepare_condition = makeConstantRefNode(constant=False, source_ref=source_ref)
|
|
653
|
+
else:
|
|
654
|
+
prepare_condition = ExpressionAttributeCheck(
|
|
655
|
+
expression=ExpressionTempVariableRef(
|
|
656
|
+
variable=tmp_metaclass, source_ref=source_ref
|
|
657
|
+
),
|
|
658
|
+
attribute_name="__prepare__",
|
|
659
|
+
source_ref=source_ref,
|
|
660
|
+
)
|
|
661
|
+
|
|
556
662
|
statements += (
|
|
557
663
|
makeStatementAssignmentVariable(
|
|
558
664
|
variable=tmp_metaclass,
|
|
@@ -611,13 +717,7 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
611
717
|
source_ref=source_ref,
|
|
612
718
|
),
|
|
613
719
|
makeStatementConditional(
|
|
614
|
-
condition=
|
|
615
|
-
expression=ExpressionTempVariableRef(
|
|
616
|
-
variable=tmp_metaclass, source_ref=source_ref
|
|
617
|
-
),
|
|
618
|
-
attribute_name="__prepare__",
|
|
619
|
-
source_ref=source_ref,
|
|
620
|
-
),
|
|
720
|
+
condition=prepare_condition,
|
|
621
721
|
yes_branch=call_prepare,
|
|
622
722
|
no_branch=makeStatementAssignmentVariable(
|
|
623
723
|
variable=tmp_prepared,
|
|
@@ -636,21 +736,19 @@ def buildClassNode3(provider, node, source_ref):
|
|
|
636
736
|
),
|
|
637
737
|
)
|
|
638
738
|
|
|
639
|
-
if python_version >=
|
|
739
|
+
if python_version >= 0x300:
|
|
640
740
|
class_creation_function.qualname_setup = node.name, qualname_assign
|
|
641
741
|
|
|
642
742
|
tmp_variables = [tmp_class_decl_dict, tmp_metaclass, tmp_prepared]
|
|
643
743
|
if node.bases:
|
|
644
744
|
tmp_variables.insert(0, tmp_bases)
|
|
645
|
-
if
|
|
745
|
+
if needs_orig_bases:
|
|
646
746
|
tmp_variables.insert(0, tmp_bases_orig)
|
|
647
747
|
|
|
648
|
-
return
|
|
748
|
+
return makeTryFinallyReleaseStatement(
|
|
649
749
|
provider=provider,
|
|
650
750
|
tried=statements,
|
|
651
|
-
|
|
652
|
-
variables=tmp_variables, source_ref=source_ref
|
|
653
|
-
),
|
|
751
|
+
variables=tmp_variables,
|
|
654
752
|
source_ref=source_ref,
|
|
655
753
|
)
|
|
656
754
|
|
|
@@ -677,9 +775,15 @@ def getClassBasesMroConversionHelper():
|
|
|
677
775
|
|
|
678
776
|
temp_scope = None
|
|
679
777
|
|
|
680
|
-
tmp_result_variable = result.allocateTempVariable(
|
|
681
|
-
|
|
682
|
-
|
|
778
|
+
tmp_result_variable = result.allocateTempVariable(
|
|
779
|
+
temp_scope, "list", temp_type="object"
|
|
780
|
+
)
|
|
781
|
+
tmp_iter_variable = result.allocateTempVariable(
|
|
782
|
+
temp_scope, "iter", temp_type="object"
|
|
783
|
+
)
|
|
784
|
+
tmp_item_variable = result.allocateTempVariable(
|
|
785
|
+
temp_scope, "base", temp_type="object"
|
|
786
|
+
)
|
|
683
787
|
|
|
684
788
|
args_variable = result.getVariableForAssignment(variable_name="bases")
|
|
685
789
|
|
|
@@ -800,17 +904,14 @@ def getClassBasesMroConversionHelper():
|
|
|
800
904
|
|
|
801
905
|
result.setChildBody(
|
|
802
906
|
makeStatementsSequenceFromStatement(
|
|
803
|
-
|
|
907
|
+
makeTryFinallyReleaseStatement(
|
|
804
908
|
provider=result,
|
|
805
909
|
tried=tried,
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
tmp_item_variable,
|
|
812
|
-
),
|
|
813
|
-
source_ref=internal_source_ref,
|
|
910
|
+
variables=(
|
|
911
|
+
args_variable,
|
|
912
|
+
tmp_result_variable,
|
|
913
|
+
tmp_iter_variable,
|
|
914
|
+
tmp_item_variable,
|
|
814
915
|
),
|
|
815
916
|
source_ref=internal_source_ref,
|
|
816
917
|
)
|
|
@@ -855,6 +956,7 @@ subclass of the metaclasses of all its bases""",
|
|
|
855
956
|
source_ref=internal_source_ref,
|
|
856
957
|
),
|
|
857
958
|
),
|
|
959
|
+
for_raise=False,
|
|
858
960
|
source_ref=internal_source_ref,
|
|
859
961
|
),
|
|
860
962
|
exception_value=None,
|
|
@@ -891,10 +993,18 @@ def getClassSelectMetaClassHelper():
|
|
|
891
993
|
|
|
892
994
|
temp_scope = None
|
|
893
995
|
|
|
894
|
-
tmp_winner_variable = result.allocateTempVariable(
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
996
|
+
tmp_winner_variable = result.allocateTempVariable(
|
|
997
|
+
temp_scope, "winner", temp_type="object"
|
|
998
|
+
)
|
|
999
|
+
tmp_iter_variable = result.allocateTempVariable(
|
|
1000
|
+
temp_scope, "iter", temp_type="object"
|
|
1001
|
+
)
|
|
1002
|
+
tmp_item_variable = result.allocateTempVariable(
|
|
1003
|
+
temp_scope, "base", temp_type="object"
|
|
1004
|
+
)
|
|
1005
|
+
tmp_item_type_variable = result.allocateTempVariable(
|
|
1006
|
+
temp_scope, "base_type", temp_type="object"
|
|
1007
|
+
)
|
|
898
1008
|
|
|
899
1009
|
# For non-types, the metaclass cannot be overruled by bases.
|
|
900
1010
|
non_type_case = StatementReturn(
|
|
@@ -1006,17 +1116,14 @@ def getClassSelectMetaClassHelper():
|
|
|
1006
1116
|
|
|
1007
1117
|
result.setChildBody(
|
|
1008
1118
|
makeStatementsSequenceFromStatement(
|
|
1009
|
-
|
|
1119
|
+
makeTryFinallyReleaseStatement(
|
|
1010
1120
|
provider=result,
|
|
1011
1121
|
tried=tried,
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
tmp_item_type_variable,
|
|
1018
|
-
),
|
|
1019
|
-
source_ref=internal_source_ref,
|
|
1122
|
+
variables=(
|
|
1123
|
+
tmp_winner_variable,
|
|
1124
|
+
tmp_iter_variable,
|
|
1125
|
+
tmp_item_variable,
|
|
1126
|
+
tmp_item_type_variable,
|
|
1020
1127
|
),
|
|
1021
1128
|
source_ref=internal_source_ref,
|
|
1022
1129
|
)
|
|
@@ -1024,3 +1131,19 @@ def getClassSelectMetaClassHelper():
|
|
|
1024
1131
|
)
|
|
1025
1132
|
|
|
1026
1133
|
return result
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1137
|
+
# integrates with CPython, but also works on its own.
|
|
1138
|
+
#
|
|
1139
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1140
|
+
# you may not use this file except in compliance with the License.
|
|
1141
|
+
# You may obtain a copy of the License at
|
|
1142
|
+
#
|
|
1143
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1144
|
+
#
|
|
1145
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1146
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1147
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1148
|
+
# See the License for the specific language governing permissions and
|
|
1149
|
+
# limitations under the License.
|