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
|
""" These are just helpers to create nodes, often to replace existing nodes
|
|
19
5
|
|
|
20
6
|
These are for use in optimizations and computations, and therefore cover
|
|
@@ -43,16 +29,18 @@ def makeConstantReplacementNode(constant, node, user_provided):
|
|
|
43
29
|
|
|
44
30
|
|
|
45
31
|
def makeRaiseExceptionReplacementExpression(
|
|
46
|
-
expression, exception_type, exception_value
|
|
32
|
+
expression, exception_type, exception_value, no_warning=False
|
|
47
33
|
):
|
|
48
|
-
from .
|
|
49
|
-
|
|
34
|
+
from .ExceptionNodes import (
|
|
35
|
+
ExpressionRaiseException,
|
|
36
|
+
makeBuiltinMakeExceptionNode,
|
|
37
|
+
)
|
|
50
38
|
|
|
51
39
|
source_ref = expression.source_ref
|
|
52
40
|
|
|
53
41
|
assert type(exception_type) is str
|
|
54
42
|
|
|
55
|
-
if Options.shallWarnImplicitRaises():
|
|
43
|
+
if not no_warning and Options.shallWarnImplicitRaises():
|
|
56
44
|
unusual_logger.warning(
|
|
57
45
|
'%s: Will always raise exception: "%s(%s)"'
|
|
58
46
|
% (
|
|
@@ -62,12 +50,22 @@ def makeRaiseExceptionReplacementExpression(
|
|
|
62
50
|
)
|
|
63
51
|
)
|
|
64
52
|
|
|
53
|
+
if type(exception_value) is not tuple:
|
|
54
|
+
exception_value = (exception_value,)
|
|
55
|
+
|
|
56
|
+
args = tuple(
|
|
57
|
+
makeConstantReplacementNode(
|
|
58
|
+
constant=element, node=expression, user_provided=False
|
|
59
|
+
)
|
|
60
|
+
for element in exception_value
|
|
61
|
+
)
|
|
62
|
+
|
|
65
63
|
result = ExpressionRaiseException(
|
|
66
|
-
exception_type=
|
|
67
|
-
exception_name=exception_type,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
exception_type=makeBuiltinMakeExceptionNode(
|
|
65
|
+
exception_name=exception_type,
|
|
66
|
+
args=args,
|
|
67
|
+
for_raise=False,
|
|
68
|
+
source_ref=source_ref,
|
|
71
69
|
),
|
|
72
70
|
source_ref=source_ref,
|
|
73
71
|
)
|
|
@@ -75,15 +73,19 @@ def makeRaiseExceptionReplacementExpression(
|
|
|
75
73
|
return result
|
|
76
74
|
|
|
77
75
|
|
|
78
|
-
def makeRaiseExceptionReplacementStatement(
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
def makeRaiseExceptionReplacementStatement(
|
|
77
|
+
statement, exception_type, exception_value, no_warning=False
|
|
78
|
+
):
|
|
79
|
+
from .ExceptionNodes import (
|
|
80
|
+
StatementRaiseException,
|
|
81
|
+
makeBuiltinMakeExceptionNode,
|
|
82
|
+
)
|
|
81
83
|
|
|
82
84
|
source_ref = statement.getSourceReference()
|
|
83
85
|
|
|
84
86
|
assert type(exception_type) is str
|
|
85
87
|
|
|
86
|
-
if Options.shallWarnImplicitRaises():
|
|
88
|
+
if not no_warning and Options.shallWarnImplicitRaises():
|
|
87
89
|
unusual_logger.warning(
|
|
88
90
|
'%s: Will always raise exception: "%s(%s)"'
|
|
89
91
|
% (
|
|
@@ -93,13 +95,18 @@ def makeRaiseExceptionReplacementStatement(statement, exception_type, exception_
|
|
|
93
95
|
)
|
|
94
96
|
)
|
|
95
97
|
|
|
96
|
-
result =
|
|
97
|
-
exception_type=
|
|
98
|
-
exception_name=exception_type,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
result = StatementRaiseException(
|
|
99
|
+
exception_type=makeBuiltinMakeExceptionNode(
|
|
100
|
+
exception_name=exception_type,
|
|
101
|
+
args=(
|
|
102
|
+
makeConstantReplacementNode(
|
|
103
|
+
constant=exception_value, node=statement, user_provided=False
|
|
104
|
+
),
|
|
105
|
+
),
|
|
106
|
+
for_raise=False,
|
|
107
|
+
source_ref=source_ref,
|
|
102
108
|
),
|
|
109
|
+
exception_value=None,
|
|
103
110
|
exception_cause=None,
|
|
104
111
|
exception_trace=None,
|
|
105
112
|
source_ref=source_ref,
|
|
@@ -111,41 +118,35 @@ def makeRaiseExceptionReplacementStatement(statement, exception_type, exception_
|
|
|
111
118
|
def makeRaiseExceptionReplacementExpressionFromInstance(expression, exception):
|
|
112
119
|
assert isinstance(exception, Exception)
|
|
113
120
|
|
|
114
|
-
args = exception.args
|
|
115
|
-
if type(args) is tuple and len(args) == 1:
|
|
116
|
-
value = args[0]
|
|
117
|
-
else:
|
|
118
|
-
assert type(args) is tuple
|
|
119
|
-
value = args
|
|
120
|
-
|
|
121
121
|
return makeRaiseExceptionReplacementExpression(
|
|
122
122
|
expression=expression,
|
|
123
123
|
exception_type=exception.__class__.__name__,
|
|
124
|
-
exception_value=
|
|
124
|
+
exception_value=exception.args,
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
def makeRaiseExceptionStatementFromInstance(exception, source_ref):
|
|
129
129
|
assert isinstance(exception, Exception)
|
|
130
130
|
|
|
131
|
-
args = exception.args
|
|
132
|
-
if type(args) is tuple and len(args) == 1:
|
|
133
|
-
value = args[0]
|
|
134
|
-
else:
|
|
135
|
-
assert type(args) is tuple
|
|
136
|
-
value = args
|
|
137
|
-
|
|
138
|
-
from .BuiltinRefNodes import ExpressionBuiltinExceptionRef
|
|
139
131
|
from .ConstantRefNodes import makeConstantRefNode
|
|
140
|
-
from .ExceptionNodes import
|
|
132
|
+
from .ExceptionNodes import (
|
|
133
|
+
StatementRaiseException,
|
|
134
|
+
makeBuiltinMakeExceptionNode,
|
|
135
|
+
)
|
|
141
136
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
137
|
+
args_value = tuple(
|
|
138
|
+
makeConstantRefNode(constant=arg, source_ref=source_ref, user_provided=False)
|
|
139
|
+
for arg in exception.args
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
return StatementRaiseException(
|
|
143
|
+
exception_type=makeBuiltinMakeExceptionNode(
|
|
144
|
+
exception_name=exception.__class__.__name__,
|
|
145
|
+
args=args_value,
|
|
146
|
+
for_raise=False,
|
|
147
|
+
source_ref=source_ref,
|
|
148
148
|
),
|
|
149
|
+
exception_value=None,
|
|
149
150
|
exception_cause=None,
|
|
150
151
|
exception_trace=None,
|
|
151
152
|
source_ref=source_ref,
|
|
@@ -155,10 +156,12 @@ def makeRaiseExceptionStatementFromInstance(exception, source_ref):
|
|
|
155
156
|
def makeRaiseExceptionExpressionFromTemplate(
|
|
156
157
|
exception_type, template, template_args, source_ref
|
|
157
158
|
):
|
|
158
|
-
from .BuiltinRefNodes import ExpressionBuiltinExceptionRef
|
|
159
159
|
from .ConstantRefNodes import makeConstantRefNode
|
|
160
160
|
from .ContainerMakingNodes import makeExpressionMakeTupleOrConstant
|
|
161
|
-
from .ExceptionNodes import
|
|
161
|
+
from .ExceptionNodes import (
|
|
162
|
+
ExpressionRaiseException,
|
|
163
|
+
makeBuiltinMakeExceptionNode,
|
|
164
|
+
)
|
|
162
165
|
from .OperatorNodes import makeBinaryOperationNode
|
|
163
166
|
|
|
164
167
|
if type(template_args) is tuple:
|
|
@@ -167,15 +170,19 @@ def makeRaiseExceptionExpressionFromTemplate(
|
|
|
167
170
|
)
|
|
168
171
|
|
|
169
172
|
return ExpressionRaiseException(
|
|
170
|
-
exception_type=
|
|
171
|
-
exception_name=exception_type,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
exception_type=makeBuiltinMakeExceptionNode(
|
|
174
|
+
exception_name=exception_type,
|
|
175
|
+
args=(
|
|
176
|
+
makeBinaryOperationNode(
|
|
177
|
+
operator="Mod",
|
|
178
|
+
left=makeConstantRefNode(
|
|
179
|
+
constant=template, source_ref=source_ref, user_provided=True
|
|
180
|
+
),
|
|
181
|
+
right=template_args,
|
|
182
|
+
source_ref=source_ref,
|
|
183
|
+
),
|
|
177
184
|
),
|
|
178
|
-
|
|
185
|
+
for_raise=False,
|
|
179
186
|
source_ref=source_ref,
|
|
180
187
|
),
|
|
181
188
|
source_ref=source_ref,
|
|
@@ -456,3 +463,19 @@ def makeRaiseImportErrorReplacementExpression(expression, module_name):
|
|
|
456
463
|
exception_type="ImportError",
|
|
457
464
|
exception_value=module_name.asString(),
|
|
458
465
|
)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
469
|
+
# integrates with CPython, but also works on its own.
|
|
470
|
+
#
|
|
471
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
472
|
+
# you may not use this file except in compliance with the License.
|
|
473
|
+
# You may obtain a copy of the License at
|
|
474
|
+
#
|
|
475
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
476
|
+
#
|
|
477
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
478
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
479
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
480
|
+
# See the License for the specific language governing permissions and
|
|
481
|
+
# limitations under the License.
|
nuitka/nodes/NodeMetaClasses.py
CHANGED
|
@@ -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
|
""" Node meta classes.
|
|
19
5
|
|
|
20
6
|
This provides meta classes for nodes, currently only one. These do all kinds
|
|
@@ -50,6 +36,16 @@ def _checkBases(name, bases):
|
|
|
50
36
|
raise NuitkaNodeDesignError(name, "All bases must set __slots__.", base)
|
|
51
37
|
|
|
52
38
|
|
|
39
|
+
@staticmethod
|
|
40
|
+
def returnTrueShared():
|
|
41
|
+
return True
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@staticmethod
|
|
45
|
+
def returnFalseShared():
|
|
46
|
+
return False
|
|
47
|
+
|
|
48
|
+
|
|
53
49
|
class NodeCheckMetaClass(ABCMeta):
|
|
54
50
|
kinds = {}
|
|
55
51
|
|
|
@@ -114,7 +110,7 @@ class NodeCheckMetaClass(ABCMeta):
|
|
|
114
110
|
|
|
115
111
|
assert type(kind) is str, name
|
|
116
112
|
|
|
117
|
-
if kind in NodeCheckMetaClass.kinds and
|
|
113
|
+
if kind in NodeCheckMetaClass.kinds and "replaces" not in dictionary:
|
|
118
114
|
raise NuitkaNodeDesignError(
|
|
119
115
|
name, "Duplicate nodes for kind '%s'" % kind
|
|
120
116
|
)
|
|
@@ -127,22 +123,28 @@ class NodeCheckMetaClass(ABCMeta):
|
|
|
127
123
|
|
|
128
124
|
# Automatically add checker methods for everything to the common
|
|
129
125
|
# base class
|
|
130
|
-
|
|
126
|
+
checker_method_name = "is" + kind_to_name_part
|
|
131
127
|
|
|
132
|
-
#
|
|
133
|
-
# return True and False, and put one in the base class, and one
|
|
134
|
-
# in the new class, would be slightly faster.
|
|
135
|
-
def checkKind(self):
|
|
136
|
-
return self.kind == kind
|
|
137
|
-
|
|
138
|
-
# Add automatic checker methods to the node base class.
|
|
128
|
+
# Add automatic checker "False" to the node base class.
|
|
139
129
|
from .NodeBases import NodeBase
|
|
140
130
|
|
|
141
|
-
if not hasattr(NodeBase,
|
|
142
|
-
setattr(NodeBase,
|
|
131
|
+
if not hasattr(NodeBase, checker_method_name):
|
|
132
|
+
setattr(NodeBase, checker_method_name, returnFalseShared)
|
|
143
133
|
|
|
144
134
|
ABCMeta.__init__(cls, name, bases, dictionary)
|
|
145
135
|
|
|
136
|
+
if not name.endswith(("Base", "Mixin")):
|
|
137
|
+
if kind.startswith("EXPRESSION_BUILTIN_"):
|
|
138
|
+
cls.isExpressionBuiltin = returnTrueShared
|
|
139
|
+
|
|
140
|
+
# Add automatic checker "True" to the node class.
|
|
141
|
+
if getattr(cls, checker_method_name) is returnFalseShared.__func__:
|
|
142
|
+
|
|
143
|
+
def checkKind(self):
|
|
144
|
+
return self.kind == kind
|
|
145
|
+
|
|
146
|
+
setattr(cls, checker_method_name, checkKind)
|
|
147
|
+
|
|
146
148
|
|
|
147
149
|
# For every node type, there is a test, and then some more members,
|
|
148
150
|
|
|
@@ -151,3 +153,18 @@ class NodeCheckMetaClass(ABCMeta):
|
|
|
151
153
|
NodeMetaClassBase = NodeCheckMetaClass(
|
|
152
154
|
"NodeMetaClassBase", (object,), {"__slots__": ()}
|
|
153
155
|
)
|
|
156
|
+
|
|
157
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
158
|
+
# integrates with CPython, but also works on its own.
|
|
159
|
+
#
|
|
160
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
161
|
+
# you may not use this file except in compliance with the License.
|
|
162
|
+
# You may obtain a copy of the License at
|
|
163
|
+
#
|
|
164
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
165
|
+
#
|
|
166
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
167
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
168
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
169
|
+
# See the License for the specific language governing permissions and
|
|
170
|
+
# limitations under the License.
|
nuitka/nodes/OperatorNodes.py
CHANGED
|
@@ -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
|
""" Nodes for unary and binary operations.
|
|
19
5
|
|
|
20
6
|
No short-circuit involved, boolean 'not' is an unary operation like '-' is,
|
|
@@ -47,7 +33,7 @@ from .shapes.StandardShapes import (
|
|
|
47
33
|
class ExpressionPropertiesFromTypeShapeMixin(object):
|
|
48
34
|
"""Given a self.type_shape, this can derive default properties from there."""
|
|
49
35
|
|
|
50
|
-
# Mixins are required to slots
|
|
36
|
+
# Mixins are required to define empty slots
|
|
51
37
|
__slots__ = ()
|
|
52
38
|
|
|
53
39
|
def isKnownToBeHashable(self):
|
|
@@ -627,7 +613,7 @@ if python_version >= 0x350:
|
|
|
627
613
|
return left_shape.getOperationBinaryMatMultShape(right_shape)
|
|
628
614
|
|
|
629
615
|
|
|
630
|
-
|
|
616
|
+
_operator2binary_operation_node_class = {
|
|
631
617
|
"Add": ExpressionOperationBinaryAdd,
|
|
632
618
|
"Sub": ExpressionOperationBinarySub,
|
|
633
619
|
"Mult": ExpressionOperationBinaryMult,
|
|
@@ -644,14 +630,14 @@ _operator2binary_operation_nodeclass = {
|
|
|
644
630
|
}
|
|
645
631
|
|
|
646
632
|
if python_version < 0x300:
|
|
647
|
-
|
|
633
|
+
_operator2binary_operation_node_class["OldDiv"] = ExpressionOperationBinaryOldDiv
|
|
648
634
|
|
|
649
635
|
if python_version >= 0x350:
|
|
650
|
-
|
|
636
|
+
_operator2binary_operation_node_class["MatMult"] = ExpressionOperationBinaryMatMult
|
|
651
637
|
|
|
652
638
|
|
|
653
639
|
def makeBinaryOperationNode(operator, left, right, source_ref):
|
|
654
|
-
node_class =
|
|
640
|
+
node_class = _operator2binary_operation_node_class[operator]
|
|
655
641
|
|
|
656
642
|
return node_class(left=left, right=right, source_ref=source_ref)
|
|
657
643
|
|
|
@@ -914,7 +900,7 @@ if python_version >= 0x350:
|
|
|
914
900
|
return left_shape.getOperationBinaryMatMultShape(right_shape)
|
|
915
901
|
|
|
916
902
|
|
|
917
|
-
|
|
903
|
+
_operator2binary_inplace_node_class = {
|
|
918
904
|
"IAdd": ExpressionOperationInplaceAdd,
|
|
919
905
|
"ISub": ExpressionOperationInplaceSub,
|
|
920
906
|
"IMult": ExpressionOperationInplaceMult,
|
|
@@ -930,13 +916,29 @@ _operator2binary_inplace_nodeclass = {
|
|
|
930
916
|
}
|
|
931
917
|
|
|
932
918
|
if python_version < 0x300:
|
|
933
|
-
|
|
919
|
+
_operator2binary_inplace_node_class["IOldDiv"] = ExpressionOperationInplaceOldDiv
|
|
934
920
|
|
|
935
921
|
if python_version >= 0x350:
|
|
936
|
-
|
|
922
|
+
_operator2binary_inplace_node_class["IMatMult"] = ExpressionOperationInplaceMatMult
|
|
937
923
|
|
|
938
924
|
|
|
939
925
|
def makeExpressionOperationBinaryInplace(operator, left, right, source_ref):
|
|
940
|
-
node_class =
|
|
926
|
+
node_class = _operator2binary_inplace_node_class[operator]
|
|
941
927
|
|
|
942
928
|
return node_class(left=left, right=right, source_ref=source_ref)
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
932
|
+
# integrates with CPython, but also works on its own.
|
|
933
|
+
#
|
|
934
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
935
|
+
# you may not use this file except in compliance with the License.
|
|
936
|
+
# You may obtain a copy of the License at
|
|
937
|
+
#
|
|
938
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
939
|
+
#
|
|
940
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
941
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
942
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
943
|
+
# See the License for the specific language governing permissions and
|
|
944
|
+
# limitations under the License.
|
|
@@ -1,25 +1,13 @@
|
|
|
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
|
""" Nodes for unary operations.
|
|
19
5
|
|
|
20
6
|
Some of these come from built-ins, e.g. abs, some from syntax, and repr from both.
|
|
21
7
|
"""
|
|
8
|
+
|
|
22
9
|
from nuitka import PythonOperators
|
|
10
|
+
from nuitka.Errors import NuitkaAssumptionError
|
|
23
11
|
|
|
24
12
|
from .ChildrenHavingMixins import ChildHavingOperandMixin
|
|
25
13
|
from .ConstantRefNodes import makeConstantRefNode
|
|
@@ -28,6 +16,11 @@ from .ExpressionShapeMixins import (
|
|
|
28
16
|
ExpressionBoolShapeExactMixin,
|
|
29
17
|
ExpressionStrOrUnicodeDerivedShapeMixin,
|
|
30
18
|
)
|
|
19
|
+
from .NodeMakingHelpers import (
|
|
20
|
+
makeRaiseExceptionReplacementExpressionFromInstance,
|
|
21
|
+
wrapExpressionWithSideEffects,
|
|
22
|
+
)
|
|
23
|
+
from .shapes.StandardShapes import tshape_unknown
|
|
31
24
|
|
|
32
25
|
|
|
33
26
|
class ExpressionOperationUnaryBase(ChildHavingOperandMixin, ExpressionBase):
|
|
@@ -44,10 +37,10 @@ class ExpressionOperationUnaryBase(ChildHavingOperandMixin, ExpressionBase):
|
|
|
44
37
|
return self.operator
|
|
45
38
|
|
|
46
39
|
def computeExpression(self, trace_collection):
|
|
47
|
-
operator = self.getOperator()
|
|
48
40
|
operand = self.subnode_operand
|
|
49
41
|
|
|
50
42
|
if operand.isCompileTimeConstant():
|
|
43
|
+
operator = self.getOperator()
|
|
51
44
|
operand_value = operand.getCompileTimeConstant()
|
|
52
45
|
|
|
53
46
|
return trace_collection.getCompileTimeComputationResult(
|
|
@@ -74,6 +67,10 @@ class ExpressionOperationUnaryBase(ChildHavingOperandMixin, ExpressionBase):
|
|
|
74
67
|
def isExpressionOperationUnary():
|
|
75
68
|
return True
|
|
76
69
|
|
|
70
|
+
@staticmethod
|
|
71
|
+
def mayRaiseExceptionOperation():
|
|
72
|
+
return True
|
|
73
|
+
|
|
77
74
|
|
|
78
75
|
class ExpressionOperationUnaryRepr( # TODO: Not exact
|
|
79
76
|
ExpressionStrOrUnicodeDerivedShapeMixin, ExpressionOperationUnaryBase
|
|
@@ -117,7 +114,100 @@ class ExpressionOperationUnaryRepr( # TODO: Not exact
|
|
|
117
114
|
return self.escape_desc is None or self.escape_desc.isControlFlowEscape()
|
|
118
115
|
|
|
119
116
|
|
|
120
|
-
|
|
117
|
+
# TODO: This should merge into base class.
|
|
118
|
+
class ExpressionOperationUnaryMixin(object):
|
|
119
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
120
|
+
__slots__ = ()
|
|
121
|
+
|
|
122
|
+
def mayRaiseExceptionOperation(self):
|
|
123
|
+
return self.escape_desc.getExceptionExit() is not None
|
|
124
|
+
|
|
125
|
+
def mayRaiseException(self, exception_type):
|
|
126
|
+
# TODO: Match getExceptionExit() more precisely against exception type given
|
|
127
|
+
return (
|
|
128
|
+
self.escape_desc is None
|
|
129
|
+
or self.escape_desc.getExceptionExit() is not None
|
|
130
|
+
or self.subnode_operand.mayRaiseException(exception_type)
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
def getTypeShape(self):
|
|
134
|
+
return self.type_shape
|
|
135
|
+
|
|
136
|
+
def createUnsupportedException(self, operand_shape):
|
|
137
|
+
typical_value = operand_shape.typical_value
|
|
138
|
+
|
|
139
|
+
try:
|
|
140
|
+
self.simulator(typical_value)
|
|
141
|
+
except TypeError as e:
|
|
142
|
+
return e
|
|
143
|
+
except Exception as e:
|
|
144
|
+
raise NuitkaAssumptionError(
|
|
145
|
+
"Unexpected exception type doing operation simulation",
|
|
146
|
+
self.operator,
|
|
147
|
+
self.simulator,
|
|
148
|
+
operand_shape,
|
|
149
|
+
e,
|
|
150
|
+
)
|
|
151
|
+
else:
|
|
152
|
+
raise NuitkaAssumptionError(
|
|
153
|
+
"Unexpected no-exception doing operation simulation",
|
|
154
|
+
self.operator,
|
|
155
|
+
self.simulator,
|
|
156
|
+
operand_shape,
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
def computeExpression(self, trace_collection):
|
|
160
|
+
operand = self.subnode_operand
|
|
161
|
+
|
|
162
|
+
if operand.isCompileTimeConstant():
|
|
163
|
+
operand_value = operand.getCompileTimeConstant()
|
|
164
|
+
operator = self.getOperator()
|
|
165
|
+
|
|
166
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
167
|
+
node=self,
|
|
168
|
+
computation=lambda: self.simulator(operand_value),
|
|
169
|
+
description="Operator '%s' with constant argument." % operator,
|
|
170
|
+
)
|
|
171
|
+
else:
|
|
172
|
+
operand_shape = operand.getTypeShape()
|
|
173
|
+
|
|
174
|
+
self.type_shape, self.escape_desc = self._getOperationShape(operand_shape)
|
|
175
|
+
|
|
176
|
+
if self.escape_desc.isUnsupported():
|
|
177
|
+
result = wrapExpressionWithSideEffects(
|
|
178
|
+
new_node=makeRaiseExceptionReplacementExpressionFromInstance(
|
|
179
|
+
expression=self,
|
|
180
|
+
exception=self.createUnsupportedException(operand_shape),
|
|
181
|
+
),
|
|
182
|
+
old_node=self,
|
|
183
|
+
side_effects=(operand,),
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
return (
|
|
187
|
+
result,
|
|
188
|
+
"new_raise",
|
|
189
|
+
"Replaced operator '%s' with %s arguments that cannot work."
|
|
190
|
+
% (self.operator, operand_shape),
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
exception_raise_exit = self.escape_desc.getExceptionExit()
|
|
194
|
+
if exception_raise_exit is not None:
|
|
195
|
+
trace_collection.onExceptionRaiseExit(exception_raise_exit)
|
|
196
|
+
|
|
197
|
+
if self.escape_desc.isValueEscaping():
|
|
198
|
+
# The value of these nodes escaped and could change its contents.
|
|
199
|
+
trace_collection.removeKnowledge(operand)
|
|
200
|
+
|
|
201
|
+
if self.escape_desc.isControlFlowEscape():
|
|
202
|
+
# Any code could be run, note that.
|
|
203
|
+
trace_collection.onControlFlowEscape(self)
|
|
204
|
+
|
|
205
|
+
return self, None, None
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
class ExpressionOperationUnarySub(
|
|
209
|
+
ExpressionOperationUnaryMixin, ExpressionOperationUnaryBase
|
|
210
|
+
):
|
|
121
211
|
"""Python unary operator -"""
|
|
122
212
|
|
|
123
213
|
kind = "EXPRESSION_OPERATION_UNARY_SUB"
|
|
@@ -125,13 +215,25 @@ class ExpressionOperationUnarySub(ExpressionOperationUnaryBase):
|
|
|
125
215
|
operator = "USub"
|
|
126
216
|
simulator = PythonOperators.unary_operator_functions[operator]
|
|
127
217
|
|
|
218
|
+
__slots__ = ("type_shape", "escape_desc")
|
|
219
|
+
|
|
128
220
|
def __init__(self, operand, source_ref):
|
|
129
221
|
ExpressionOperationUnaryBase.__init__(
|
|
130
222
|
self, operand=operand, source_ref=source_ref
|
|
131
223
|
)
|
|
132
224
|
|
|
225
|
+
self.type_shape = tshape_unknown
|
|
226
|
+
|
|
227
|
+
self.escape_desc = None
|
|
133
228
|
|
|
134
|
-
|
|
229
|
+
@staticmethod
|
|
230
|
+
def _getOperationShape(operand_shape):
|
|
231
|
+
return operand_shape.getOperationUnarySubShape()
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class ExpressionOperationUnaryAdd(
|
|
235
|
+
ExpressionOperationUnaryMixin, ExpressionOperationUnaryBase
|
|
236
|
+
):
|
|
135
237
|
"""Python unary operator +"""
|
|
136
238
|
|
|
137
239
|
kind = "EXPRESSION_OPERATION_UNARY_ADD"
|
|
@@ -139,11 +241,21 @@ class ExpressionOperationUnaryAdd(ExpressionOperationUnaryBase):
|
|
|
139
241
|
operator = "UAdd"
|
|
140
242
|
simulator = PythonOperators.unary_operator_functions[operator]
|
|
141
243
|
|
|
244
|
+
__slots__ = ("type_shape", "escape_desc")
|
|
245
|
+
|
|
142
246
|
def __init__(self, operand, source_ref):
|
|
143
247
|
ExpressionOperationUnaryBase.__init__(
|
|
144
248
|
self, operand=operand, source_ref=source_ref
|
|
145
249
|
)
|
|
146
250
|
|
|
251
|
+
self.type_shape = tshape_unknown
|
|
252
|
+
|
|
253
|
+
self.escape_desc = None
|
|
254
|
+
|
|
255
|
+
@staticmethod
|
|
256
|
+
def _getOperationShape(operand_shape):
|
|
257
|
+
return operand_shape.getOperationUnaryAddShape()
|
|
258
|
+
|
|
147
259
|
|
|
148
260
|
class ExpressionOperationUnaryInvert(ExpressionOperationUnaryBase):
|
|
149
261
|
"""Python unary operator ~"""
|
|
@@ -273,3 +385,19 @@ def makeExpressionOperationUnary(operator, operand, source_ref):
|
|
|
273
385
|
)
|
|
274
386
|
|
|
275
387
|
return unary_class(operand=operand, source_ref=source_ref)
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
391
|
+
# integrates with CPython, but also works on its own.
|
|
392
|
+
#
|
|
393
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
394
|
+
# you may not use this file except in compliance with the License.
|
|
395
|
+
# You may obtain a copy of the License at
|
|
396
|
+
#
|
|
397
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
398
|
+
#
|
|
399
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
400
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
401
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
402
|
+
# See the License for the specific language governing permissions and
|
|
403
|
+
# limitations under the License.
|