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
nuitka/PythonFlavors.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
|
""" Python flavors specifics.
|
|
19
5
|
|
|
20
6
|
This abstracts the Python variants from different people. There is not just
|
|
@@ -32,9 +18,10 @@ from nuitka.utils.FileOperations import (
|
|
|
32
18
|
isFilenameBelowPath,
|
|
33
19
|
isFilenameSameAsOrBelowPath,
|
|
34
20
|
)
|
|
35
|
-
from nuitka.utils.InstalledPythons import getInstalledPythonRegistryPaths
|
|
36
21
|
from nuitka.utils.Utils import (
|
|
22
|
+
isAlpineLinux,
|
|
37
23
|
isAndroidBasedLinux,
|
|
24
|
+
isArchBasedLinux,
|
|
38
25
|
isFedoraBasedLinux,
|
|
39
26
|
isLinux,
|
|
40
27
|
isMacOS,
|
|
@@ -44,6 +31,7 @@ from nuitka.utils.Utils import (
|
|
|
44
31
|
)
|
|
45
32
|
|
|
46
33
|
from .PythonVersions import (
|
|
34
|
+
getInstalledPythonRegistryPaths,
|
|
47
35
|
getRunningPythonDLLPath,
|
|
48
36
|
getSystemPrefixPath,
|
|
49
37
|
isStaticallyLinkedPython,
|
|
@@ -125,12 +113,39 @@ def isHomebrewPython():
|
|
|
125
113
|
return False
|
|
126
114
|
|
|
127
115
|
|
|
116
|
+
def getHomebrewInstallPath():
|
|
117
|
+
assert isHomebrewPython()
|
|
118
|
+
|
|
119
|
+
candidate = getSystemPrefixPath()
|
|
120
|
+
|
|
121
|
+
while candidate != "/":
|
|
122
|
+
if os.path.isdir(os.path.join(candidate, "Cellar")):
|
|
123
|
+
return candidate
|
|
124
|
+
|
|
125
|
+
candidate = os.path.dirname(candidate)
|
|
126
|
+
|
|
127
|
+
sys.exit("Error, failed to locate homebrew installation path.")
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def isRyePython():
|
|
131
|
+
if isMacOS():
|
|
132
|
+
import sysconfig
|
|
133
|
+
|
|
134
|
+
# We didn't find a better one, since they do not leave much of any trace
|
|
135
|
+
# otherwise than an unusable "libpython.a"
|
|
136
|
+
# spell-checker: ignore isysroot,flto,ldflags
|
|
137
|
+
value = sysconfig.get_config_var("_OSX_SUPPORT_INITIAL_PY_CORE_LDFLAGS")
|
|
138
|
+
return value is not None and "-flto=thin" in value and "-isysroot" in value
|
|
139
|
+
|
|
140
|
+
return False
|
|
141
|
+
|
|
142
|
+
|
|
128
143
|
def isPyenvPython():
|
|
129
144
|
if isWin32Windows():
|
|
130
145
|
return False
|
|
131
146
|
|
|
132
|
-
return os.
|
|
133
|
-
path=os.
|
|
147
|
+
return os.getenv("PYENV_ROOT") and isFilenameSameAsOrBelowPath(
|
|
148
|
+
path=os.getenv("PYENV_ROOT"), filename=getSystemPrefixPath()
|
|
134
149
|
)
|
|
135
150
|
|
|
136
151
|
|
|
@@ -141,7 +156,7 @@ def isMSYS2MingwPython():
|
|
|
141
156
|
|
|
142
157
|
import sysconfig
|
|
143
158
|
|
|
144
|
-
if python_version
|
|
159
|
+
if python_version >= 0x3B0:
|
|
145
160
|
return "-mingw_" in sysconfig.get_config_var("EXT_SUFFIX")
|
|
146
161
|
else:
|
|
147
162
|
return "-mingw_" in sysconfig.get_config_var("SO")
|
|
@@ -178,8 +193,10 @@ def isUninstalledPython():
|
|
|
178
193
|
res = GetSystemDirectory(buf, MAX_PATH)
|
|
179
194
|
assert res != 0
|
|
180
195
|
|
|
181
|
-
system_path =
|
|
182
|
-
return not
|
|
196
|
+
system_path = buf.value
|
|
197
|
+
return not isFilenameBelowPath(
|
|
198
|
+
path=system_path, filename=getRunningPythonDLLPath()
|
|
199
|
+
)
|
|
183
200
|
|
|
184
201
|
return isAnacondaPython() or "WinPython" in sys.version
|
|
185
202
|
|
|
@@ -198,7 +215,7 @@ def isWinPython():
|
|
|
198
215
|
if _is_win_python is None:
|
|
199
216
|
for element in sys.path:
|
|
200
217
|
if os.path.basename(element) == "site-packages":
|
|
201
|
-
if os.path.exists(os.path.join(element, "
|
|
218
|
+
if os.path.exists(os.path.join(element, "WinPython")):
|
|
202
219
|
_is_win_python = True
|
|
203
220
|
break
|
|
204
221
|
else:
|
|
@@ -217,7 +234,7 @@ def isDebianPackagePython():
|
|
|
217
234
|
|
|
218
235
|
if python_version < 0x300:
|
|
219
236
|
return hasattr(sys, "_multiarch")
|
|
220
|
-
|
|
237
|
+
elif python_version < 0x3C0:
|
|
221
238
|
with withNoDeprecationWarning():
|
|
222
239
|
try:
|
|
223
240
|
from distutils.dir_util import _multiarch
|
|
@@ -225,6 +242,11 @@ def isDebianPackagePython():
|
|
|
225
242
|
return False
|
|
226
243
|
else:
|
|
227
244
|
return True
|
|
245
|
+
else:
|
|
246
|
+
import sysconfig
|
|
247
|
+
|
|
248
|
+
# Need to check there for Debian patch, pylint: disable=protected-access
|
|
249
|
+
return "deb_system" in sysconfig._INSTALL_SCHEMES
|
|
228
250
|
|
|
229
251
|
|
|
230
252
|
def isFedoraPackagePython():
|
|
@@ -237,16 +259,40 @@ def isFedoraPackagePython():
|
|
|
237
259
|
return system_prefix_path == "/usr"
|
|
238
260
|
|
|
239
261
|
|
|
262
|
+
def isAlpinePackagePython():
|
|
263
|
+
"""Is the Python from a Alpine package."""
|
|
264
|
+
if not isAlpineLinux():
|
|
265
|
+
return False
|
|
266
|
+
|
|
267
|
+
system_prefix_path = getSystemPrefixPath()
|
|
268
|
+
|
|
269
|
+
return system_prefix_path == "/usr"
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def isArchPackagePython():
|
|
273
|
+
"""Is the Python from a Fedora package."""
|
|
274
|
+
if not isArchBasedLinux():
|
|
275
|
+
return False
|
|
276
|
+
|
|
277
|
+
system_prefix_path = getSystemPrefixPath()
|
|
278
|
+
|
|
279
|
+
return system_prefix_path == "/usr"
|
|
280
|
+
|
|
281
|
+
|
|
240
282
|
def isCPythonOfficialPackage():
|
|
241
283
|
"""Official CPython download, kind of hard to detect since self-compiled doesn't change much."""
|
|
242
284
|
|
|
243
285
|
sys_prefix = getSystemPrefixPath()
|
|
244
286
|
|
|
245
287
|
# For macOS however, it's very knowable.
|
|
246
|
-
if isMacOS()
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
288
|
+
if isMacOS():
|
|
289
|
+
for candidate in (
|
|
290
|
+
"/Library/Frameworks/Python.framework/Versions/",
|
|
291
|
+
"/Library/Frameworks/PythonT.framework/Versions/",
|
|
292
|
+
):
|
|
293
|
+
|
|
294
|
+
if isFilenameBelowPath(path=candidate, filename=sys_prefix):
|
|
295
|
+
return True
|
|
250
296
|
|
|
251
297
|
# For Windows, we check registry.
|
|
252
298
|
if isWin32Windows():
|
|
@@ -257,10 +303,47 @@ def isCPythonOfficialPackage():
|
|
|
257
303
|
return False
|
|
258
304
|
|
|
259
305
|
|
|
306
|
+
_is_self_compiled_python = None
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
def isSelfCompiledPythonUninstalled():
|
|
310
|
+
# singleton, pylint: disable=global-statement
|
|
311
|
+
global _is_self_compiled_python
|
|
312
|
+
|
|
313
|
+
if _is_self_compiled_python is None:
|
|
314
|
+
sys_prefix = getSystemPrefixPath()
|
|
315
|
+
|
|
316
|
+
_is_self_compiled_python = os.path.isdir(os.path.join(sys_prefix, "PCbuild"))
|
|
317
|
+
|
|
318
|
+
return _is_self_compiled_python
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
_is_manylinux_python = None
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def isManyLinuxPython():
|
|
325
|
+
if not isLinux():
|
|
326
|
+
return False
|
|
327
|
+
|
|
328
|
+
# singleton, pylint: disable=global-statement
|
|
329
|
+
global _is_manylinux_python
|
|
330
|
+
|
|
331
|
+
sys_prefix = getSystemPrefixPath()
|
|
332
|
+
|
|
333
|
+
if _is_manylinux_python is None:
|
|
334
|
+
_is_manylinux_python = os.path.isfile(
|
|
335
|
+
os.path.join(sys_prefix, "..", "static-libs-for-embedding-only.tar.xz")
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
return _is_manylinux_python
|
|
339
|
+
|
|
340
|
+
|
|
260
341
|
def isGithubActionsPython():
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
) == "true" and getSystemPrefixPath().startswith(
|
|
342
|
+
# spell-checker: ignore hostedtoolcache
|
|
343
|
+
|
|
344
|
+
return os.getenv("GITHUB_ACTIONS") == "true" and getSystemPrefixPath().startswith(
|
|
345
|
+
"/opt/hostedtoolcache/Python"
|
|
346
|
+
)
|
|
264
347
|
|
|
265
348
|
|
|
266
349
|
def getPythonFlavorName():
|
|
@@ -277,8 +360,14 @@ def getPythonFlavorName():
|
|
|
277
360
|
return "Debian Python"
|
|
278
361
|
elif isFedoraPackagePython():
|
|
279
362
|
return "Fedora Python"
|
|
363
|
+
elif isArchPackagePython():
|
|
364
|
+
return "Arch Python"
|
|
365
|
+
elif isAlpinePackagePython():
|
|
366
|
+
return "Alpine Python"
|
|
280
367
|
elif isHomebrewPython():
|
|
281
368
|
return "Homebrew Python"
|
|
369
|
+
elif isRyePython():
|
|
370
|
+
return "Rye Python"
|
|
282
371
|
elif isApplePython():
|
|
283
372
|
return "Apple Python"
|
|
284
373
|
elif isPyenvPython():
|
|
@@ -291,7 +380,27 @@ def getPythonFlavorName():
|
|
|
291
380
|
return "Android Termux"
|
|
292
381
|
elif isCPythonOfficialPackage():
|
|
293
382
|
return "CPython Official"
|
|
383
|
+
elif isSelfCompiledPythonUninstalled():
|
|
384
|
+
return "Self Compiled Uninstalled"
|
|
294
385
|
elif isGithubActionsPython():
|
|
295
386
|
return "GitHub Actions Python"
|
|
387
|
+
elif isManyLinuxPython():
|
|
388
|
+
return "Manylinux Python"
|
|
296
389
|
else:
|
|
297
390
|
return "Unknown"
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
394
|
+
# integrates with CPython, but also works on its own.
|
|
395
|
+
#
|
|
396
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
397
|
+
# you may not use this file except in compliance with the License.
|
|
398
|
+
# You may obtain a copy of the License at
|
|
399
|
+
#
|
|
400
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
401
|
+
#
|
|
402
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
403
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
404
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
405
|
+
# See the License for the specific language governing permissions and
|
|
406
|
+
# limitations under the License.
|
nuitka/PythonOperators.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
|
""" Python operator tables
|
|
19
5
|
|
|
20
6
|
These are mostly used to resolve the operator in the module operator and to know the list
|
|
@@ -143,3 +129,18 @@ def matchException(left, right):
|
|
|
143
129
|
|
|
144
130
|
|
|
145
131
|
all_comparison_functions["exception_match"] = matchException
|
|
132
|
+
|
|
133
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
134
|
+
# integrates with CPython, but also works on its own.
|
|
135
|
+
#
|
|
136
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
137
|
+
# you may not use this file except in compliance with the License.
|
|
138
|
+
# You may obtain a copy of the License at
|
|
139
|
+
#
|
|
140
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
141
|
+
#
|
|
142
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
143
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
144
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
145
|
+
# See the License for the specific language governing permissions and
|
|
146
|
+
# limitations under the License.
|
nuitka/PythonVersions.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
|
""" Python version specifics.
|
|
19
5
|
|
|
20
6
|
This abstracts the Python version decisions. This makes decisions based on
|
|
@@ -37,7 +23,6 @@ def getSupportedPythonVersions():
|
|
|
37
23
|
return (
|
|
38
24
|
"2.6",
|
|
39
25
|
"2.7",
|
|
40
|
-
"3.3",
|
|
41
26
|
"3.4",
|
|
42
27
|
"3.5",
|
|
43
28
|
"3.6",
|
|
@@ -46,12 +31,14 @@ def getSupportedPythonVersions():
|
|
|
46
31
|
"3.9",
|
|
47
32
|
"3.10",
|
|
48
33
|
"3.11",
|
|
34
|
+
"3.12",
|
|
35
|
+
"3.13",
|
|
49
36
|
)
|
|
50
37
|
|
|
51
38
|
|
|
52
39
|
def getNotYetSupportedPythonVersions():
|
|
53
40
|
"""Versions known to not work at all (yet)."""
|
|
54
|
-
return ()
|
|
41
|
+
return ("3.14",)
|
|
55
42
|
|
|
56
43
|
|
|
57
44
|
def getPartiallySupportedPythonVersions():
|
|
@@ -118,6 +105,7 @@ python_version_full_str = ".".join(str(s) for s in sys.version_info[0:3])
|
|
|
118
105
|
python_version_str = ".".join(str(s) for s in sys.version_info[0:2])
|
|
119
106
|
|
|
120
107
|
|
|
108
|
+
# TODO: Move error construction helpers to separate node making helpers module.
|
|
121
109
|
def getErrorMessageExecWithNestedFunction():
|
|
122
110
|
"""Error message of the concrete Python in case an exec occurs in a
|
|
123
111
|
function that takes a closure variable.
|
|
@@ -175,6 +163,13 @@ def getUnboundLocalErrorErrorTemplate():
|
|
|
175
163
|
return getUnboundLocalErrorErrorTemplate.result
|
|
176
164
|
|
|
177
165
|
|
|
166
|
+
def getDictFromkeysNoArgErrorMessage():
|
|
167
|
+
try:
|
|
168
|
+
dict.fromkeys()
|
|
169
|
+
except TypeError as e:
|
|
170
|
+
return e.args[0]
|
|
171
|
+
|
|
172
|
+
|
|
178
173
|
_needs_set_literal_reverse_insertion = None
|
|
179
174
|
|
|
180
175
|
|
|
@@ -267,6 +262,12 @@ def getPythonABI():
|
|
|
267
262
|
return abiflags
|
|
268
263
|
|
|
269
264
|
|
|
265
|
+
def getLaunchingSystemPrefixPath():
|
|
266
|
+
from nuitka.utils.Utils import getLaunchingNuitkaProcessEnvironmentValue
|
|
267
|
+
|
|
268
|
+
return getLaunchingNuitkaProcessEnvironmentValue("NUITKA_SYS_PREFIX")
|
|
269
|
+
|
|
270
|
+
|
|
270
271
|
_the_sys_prefix = None
|
|
271
272
|
|
|
272
273
|
|
|
@@ -332,6 +333,12 @@ def getSystemPrefixPath():
|
|
|
332
333
|
|
|
333
334
|
sys_prefix = getDirectoryRealPath(sys_prefix)
|
|
334
335
|
|
|
336
|
+
# Self-compiled Python version in source tree
|
|
337
|
+
if os.path.isdir(
|
|
338
|
+
os.path.join(os.path.dirname(os.path.realpath(sys.executable)), "PCbuild")
|
|
339
|
+
):
|
|
340
|
+
sys_prefix = os.path.dirname(os.path.realpath(sys.executable))
|
|
341
|
+
|
|
335
342
|
_the_sys_prefix = sys_prefix
|
|
336
343
|
|
|
337
344
|
return _the_sys_prefix
|
|
@@ -417,3 +424,84 @@ def isPythonValidCLongValue(value):
|
|
|
417
424
|
|
|
418
425
|
def isPythonValidCLongLongValue(value):
|
|
419
426
|
return _min_signed_longlong <= value <= _max_signed_longlong
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
def getInstalledPythonRegistryPaths(version):
|
|
430
|
+
"""Yield all Pythons as found in the Windows registry."""
|
|
431
|
+
# Windows only code,
|
|
432
|
+
# pylint: disable=I0021,import-error,redefined-builtin
|
|
433
|
+
from nuitka.__past__ import WindowsError
|
|
434
|
+
|
|
435
|
+
if str is bytes:
|
|
436
|
+
import _winreg as winreg # pylint: disable=I0021,import-error,no-name-in-module
|
|
437
|
+
else:
|
|
438
|
+
import winreg # pylint: disable=I0021,import-error,no-name-in-module
|
|
439
|
+
|
|
440
|
+
for hkey_branch in (winreg.HKEY_LOCAL_MACHINE, winreg.HKEY_CURRENT_USER):
|
|
441
|
+
for arch_key in (0, winreg.KEY_WOW64_32KEY, winreg.KEY_WOW64_64KEY):
|
|
442
|
+
for suffix in "", "-32", "-arm64":
|
|
443
|
+
try:
|
|
444
|
+
key = winreg.OpenKey(
|
|
445
|
+
hkey_branch,
|
|
446
|
+
r"SOFTWARE\Python\PythonCore\%s%s\InstallPath"
|
|
447
|
+
% (version, suffix),
|
|
448
|
+
0,
|
|
449
|
+
winreg.KEY_READ | arch_key,
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
install_dir = os.path.normpath(winreg.QueryValue(key, ""))
|
|
453
|
+
except WindowsError:
|
|
454
|
+
pass
|
|
455
|
+
else:
|
|
456
|
+
candidate = os.path.normpath(
|
|
457
|
+
os.path.join(install_dir, "python.exe")
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
if os.path.exists(candidate):
|
|
461
|
+
yield candidate
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
def getTkInterVersion():
|
|
465
|
+
"""Get the tk-inter version or None if not installed."""
|
|
466
|
+
try:
|
|
467
|
+
if str is bytes:
|
|
468
|
+
return str(__import__("TkInter").TkVersion)
|
|
469
|
+
else:
|
|
470
|
+
return str(__import__("tkinter").TkVersion)
|
|
471
|
+
except ImportError:
|
|
472
|
+
# This should lead to no action taken ideally.
|
|
473
|
+
return None
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def getModuleLinkerLibs():
|
|
477
|
+
"""Get static link libraries needed."""
|
|
478
|
+
try:
|
|
479
|
+
import sysconfig
|
|
480
|
+
except ImportError:
|
|
481
|
+
return []
|
|
482
|
+
else:
|
|
483
|
+
# static link libraries might be there, spell-checker: ignore modlibs
|
|
484
|
+
result = sysconfig.get_config_var("MODLIBS") or ""
|
|
485
|
+
result = [entry[2:] for entry in result.split() if entry.startswith("-l:")]
|
|
486
|
+
|
|
487
|
+
return result
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
def isPythonWithGil():
|
|
491
|
+
return python_version < 0x3D0 or sys.flags.gil
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
495
|
+
# integrates with CPython, but also works on its own.
|
|
496
|
+
#
|
|
497
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
498
|
+
# you may not use this file except in compliance with the License.
|
|
499
|
+
# You may obtain a copy of the License at
|
|
500
|
+
#
|
|
501
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
502
|
+
#
|
|
503
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
504
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
505
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
506
|
+
# See the License for the specific language governing permissions and
|
|
507
|
+
# limitations under the License.
|
nuitka/Serialization.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
|
""" Write and read constants data files and provide identifiers.
|
|
19
5
|
|
|
20
6
|
"""
|
|
@@ -43,7 +29,7 @@ from nuitka.Builtins import (
|
|
|
43
29
|
from nuitka.code_generation.Namify import namifyConstant
|
|
44
30
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
45
31
|
from nuitka.PythonVersions import python_version
|
|
46
|
-
from nuitka.utils.FileOperations import
|
|
32
|
+
from nuitka.utils.FileOperations import openPickleFile
|
|
47
33
|
|
|
48
34
|
|
|
49
35
|
class BuiltinAnonValue(object):
|
|
@@ -140,13 +126,7 @@ class ConstantStreamWriter(object):
|
|
|
140
126
|
self.count = 0
|
|
141
127
|
|
|
142
128
|
filename = os.path.join(OutputDirectories.getSourceDirectoryPath(), filename)
|
|
143
|
-
self.file =
|
|
144
|
-
if python_version < 0x300:
|
|
145
|
-
self.pickle = pickle.Pickler(self.file, -1)
|
|
146
|
-
else:
|
|
147
|
-
self.pickle = pickle._Pickler( # pylint: disable=I0021,protected-access
|
|
148
|
-
self.file, -1
|
|
149
|
-
)
|
|
129
|
+
self.file, self.pickle = openPickleFile(filename, "wb")
|
|
150
130
|
|
|
151
131
|
self.pickle.dispatch[type] = _pickleAnonValues
|
|
152
132
|
self.pickle.dispatch[type(Ellipsis)] = _pickleAnonValues
|
|
@@ -183,7 +163,9 @@ class ConstantStreamReader(object):
|
|
|
183
163
|
return self.pickle.load()
|
|
184
164
|
|
|
185
165
|
|
|
186
|
-
class
|
|
166
|
+
class GlobalConstantAccessor(object):
|
|
167
|
+
__slots__ = ("constants", "constants_writer", "top_level_name")
|
|
168
|
+
|
|
187
169
|
def __init__(self, data_filename, top_level_name):
|
|
188
170
|
self.constants = OrderedSet()
|
|
189
171
|
|
|
@@ -191,52 +173,54 @@ class ConstantAccessor(object):
|
|
|
191
173
|
self.top_level_name = top_level_name
|
|
192
174
|
|
|
193
175
|
def getConstantCode(self, constant):
|
|
194
|
-
# Use in user code, or for constants building code itself, many
|
|
195
|
-
#
|
|
196
|
-
# pylint: disable=too-many-branches,too-many-statements
|
|
176
|
+
# Use in user code, or for constants building code itself, many constant
|
|
177
|
+
# types get special code immediately, and it's return driven.
|
|
178
|
+
# pylint: disable=too-many-branches,too-many-return-statements
|
|
197
179
|
if constant is None:
|
|
198
|
-
|
|
180
|
+
return "Py_None"
|
|
199
181
|
elif constant is True:
|
|
200
|
-
|
|
182
|
+
return "Py_True"
|
|
201
183
|
elif constant is False:
|
|
202
|
-
|
|
184
|
+
return "Py_False"
|
|
203
185
|
elif constant is Ellipsis:
|
|
204
|
-
|
|
186
|
+
return "Py_Ellipsis"
|
|
205
187
|
elif constant is NotImplemented:
|
|
206
|
-
|
|
188
|
+
return "Py_NotImplemented"
|
|
207
189
|
elif constant is sys.version_info:
|
|
208
|
-
|
|
190
|
+
return "Py_SysVersionInfo"
|
|
209
191
|
elif type(constant) is type:
|
|
210
192
|
# TODO: Maybe make this a mapping in nuitka.Builtins
|
|
211
193
|
|
|
212
194
|
if constant is None:
|
|
213
|
-
|
|
195
|
+
return "(PyObject *)Py_TYPE(Py_None)"
|
|
214
196
|
elif constant is object:
|
|
215
|
-
|
|
197
|
+
return "(PyObject *)&PyBaseObject_Type"
|
|
216
198
|
elif constant is staticmethod:
|
|
217
|
-
|
|
199
|
+
return "(PyObject *)&PyStaticMethod_Type"
|
|
218
200
|
elif constant is classmethod:
|
|
219
|
-
|
|
201
|
+
return "(PyObject *)&PyClassMethod_Type"
|
|
220
202
|
elif constant is bytearray:
|
|
221
|
-
|
|
203
|
+
return "(PyObject *)&PyByteArray_Type"
|
|
222
204
|
elif constant is enumerate:
|
|
223
|
-
|
|
205
|
+
return "(PyObject *)&PyEnum_Type"
|
|
224
206
|
elif constant is frozenset:
|
|
225
|
-
|
|
207
|
+
return "(PyObject *)&PyFrozenSet_Type"
|
|
226
208
|
elif python_version >= 0x270 and constant is memoryview:
|
|
227
|
-
|
|
209
|
+
return "(PyObject *)&PyMemoryView_Type"
|
|
228
210
|
elif python_version < 0x300 and constant is basestring:
|
|
229
|
-
|
|
211
|
+
return "(PyObject *)&PyBaseString_Type"
|
|
230
212
|
elif python_version < 0x300 and constant is xrange:
|
|
231
|
-
|
|
213
|
+
return "(PyObject *)&PyRange_Type"
|
|
232
214
|
elif constant in builtin_anon_values:
|
|
233
|
-
|
|
215
|
+
return (
|
|
216
|
+
"(PyObject *)" + builtin_anon_codes[builtin_anon_values[constant]]
|
|
217
|
+
)
|
|
234
218
|
elif constant in builtin_exception_values_list:
|
|
235
|
-
|
|
219
|
+
return "(PyObject *)PyExc_%s" % constant.__name__
|
|
236
220
|
elif constant is ExceptionGroup:
|
|
237
|
-
|
|
221
|
+
return "(PyObject *)_PyInterpreterState_GET()->exc_state.PyExc_ExceptionGroup"
|
|
238
222
|
elif constant is BaseExceptionGroup:
|
|
239
|
-
|
|
223
|
+
return "(PyObject *)PyExc_BaseExceptionGroup"
|
|
240
224
|
else:
|
|
241
225
|
type_name = constant.__name__
|
|
242
226
|
|
|
@@ -245,15 +229,18 @@ class ConstantAccessor(object):
|
|
|
245
229
|
elif constant is str:
|
|
246
230
|
type_name = "string" if python_version < 0x300 else "unicode"
|
|
247
231
|
|
|
248
|
-
|
|
232
|
+
return "(PyObject *)&Py%s_Type" % type_name.capitalize()
|
|
249
233
|
else:
|
|
250
|
-
|
|
234
|
+
return self._getConstantCode(constant)
|
|
251
235
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
236
|
+
def _getConstantCode(self, constant):
|
|
237
|
+
key = "const_" + namifyConstant(constant)
|
|
238
|
+
|
|
239
|
+
if key not in self.constants:
|
|
240
|
+
self.constants.add(key)
|
|
241
|
+
self.constants_writer.addConstantValue(constant)
|
|
255
242
|
|
|
256
|
-
|
|
243
|
+
key = "%s[%d]" % (self.top_level_name, self.constants.index(key))
|
|
257
244
|
|
|
258
245
|
# TODO: Make it returning, more clear.
|
|
259
246
|
return key
|
|
@@ -274,3 +261,31 @@ class ConstantAccessor(object):
|
|
|
274
261
|
self.constants_writer.close()
|
|
275
262
|
|
|
276
263
|
return len(self.constants)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class ConstantAccessor(GlobalConstantAccessor):
|
|
267
|
+
def _getConstantCode(self, constant):
|
|
268
|
+
constant_type = type(constant)
|
|
269
|
+
|
|
270
|
+
if constant_type is tuple and not constant:
|
|
271
|
+
return "const_tuple_empty"
|
|
272
|
+
elif constant_type is int and constant in (-1, 0, 1):
|
|
273
|
+
return "const_" + namifyConstant(constant)
|
|
274
|
+
else:
|
|
275
|
+
return GlobalConstantAccessor._getConstantCode(self, constant)
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
279
|
+
# integrates with CPython, but also works on its own.
|
|
280
|
+
#
|
|
281
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
282
|
+
# you may not use this file except in compliance with the License.
|
|
283
|
+
# You may obtain a copy of the License at
|
|
284
|
+
#
|
|
285
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
286
|
+
#
|
|
287
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
288
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
289
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
290
|
+
# See the License for the specific language governing permissions and
|
|
291
|
+
# limitations under the License.
|