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/utils/Hashing.py
CHANGED
|
@@ -1,30 +1,15 @@
|
|
|
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
|
""" Module for working with hashes in Nuitka.
|
|
19
5
|
|
|
20
6
|
Offers support for hashing incrementally and files esp. without having
|
|
21
7
|
to read their contents.
|
|
22
8
|
"""
|
|
23
9
|
|
|
24
|
-
import hashlib
|
|
25
10
|
from binascii import crc32
|
|
26
11
|
|
|
27
|
-
from nuitka.__past__ import unicode
|
|
12
|
+
from nuitka.__past__ import md5, unicode
|
|
28
13
|
|
|
29
14
|
from .FileOperations import openTextFile
|
|
30
15
|
|
|
@@ -44,27 +29,42 @@ class HashBase(object):
|
|
|
44
29
|
self.updateFromBytes(value)
|
|
45
30
|
elif type(value) is bytes:
|
|
46
31
|
self.updateFromBytes(value)
|
|
32
|
+
elif type(value) is dict:
|
|
33
|
+
self.updateFromBytes(b"dict")
|
|
34
|
+
self.updateFromValues(*list(value.items()))
|
|
35
|
+
elif type(value) is tuple:
|
|
36
|
+
self.updateFromBytes(b"tuple")
|
|
37
|
+
self.updateFromValues(*value)
|
|
38
|
+
elif type(value) is list:
|
|
39
|
+
self.updateFromBytes(b"list")
|
|
40
|
+
self.updateFromValues(*value)
|
|
47
41
|
else:
|
|
48
42
|
assert False, type(value)
|
|
49
43
|
|
|
50
|
-
def updateFromFile(self, filename):
|
|
51
|
-
# TODO: Read in chunks
|
|
44
|
+
def updateFromFile(self, filename, line_filter=None):
|
|
52
45
|
with openTextFile(filename, "rb") as input_file:
|
|
53
|
-
self.updateFromFileHandle(input_file)
|
|
46
|
+
self.updateFromFileHandle(input_file, line_filter=line_filter)
|
|
47
|
+
|
|
48
|
+
def updateFromFileHandle(self, file_handle, line_filter=None):
|
|
49
|
+
if line_filter is None:
|
|
50
|
+
while 1:
|
|
51
|
+
chunk = file_handle.read(1024 * 1024)
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
chunk = file_handle.read(1024 * 64)
|
|
53
|
+
if not chunk:
|
|
54
|
+
break
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
self.updateFromBytes(chunk)
|
|
57
|
+
else:
|
|
58
|
+
for line in file_handle:
|
|
59
|
+
line = line_filter(line)
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
if line is not None:
|
|
62
|
+
self.updateFromBytes(line)
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
class Hash(HashBase):
|
|
66
66
|
def __init__(self):
|
|
67
|
-
self.hash =
|
|
67
|
+
self.hash = md5()
|
|
68
68
|
|
|
69
69
|
def updateFromBytes(self, value):
|
|
70
70
|
self.hash.update(value)
|
|
@@ -76,9 +76,9 @@ class Hash(HashBase):
|
|
|
76
76
|
return self.hash.hexdigest()
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
def getFileContentsHash(filename, as_string=True):
|
|
79
|
+
def getFileContentsHash(filename, as_string=True, line_filter=None):
|
|
80
80
|
result = Hash()
|
|
81
|
-
result.updateFromFile(filename=filename)
|
|
81
|
+
result.updateFromFile(filename=filename, line_filter=line_filter)
|
|
82
82
|
|
|
83
83
|
if as_string:
|
|
84
84
|
return result.asHexDigest()
|
|
@@ -86,11 +86,14 @@ def getFileContentsHash(filename, as_string=True):
|
|
|
86
86
|
return result.asDigest()
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
def getStringHash(value):
|
|
89
|
+
def getStringHash(value, as_string=True):
|
|
90
90
|
result = Hash()
|
|
91
91
|
result.updateFromValues(value)
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
if as_string:
|
|
94
|
+
return result.asHexDigest()
|
|
95
|
+
else:
|
|
96
|
+
return result.asDigest()
|
|
94
97
|
|
|
95
98
|
|
|
96
99
|
def getHashFromValues(*values):
|
|
@@ -109,3 +112,22 @@ class HashCRC32(HashBase):
|
|
|
109
112
|
|
|
110
113
|
def asDigest(self):
|
|
111
114
|
return self.hash
|
|
115
|
+
|
|
116
|
+
def asHexDigest(self):
|
|
117
|
+
return hex(self.hash)[2:]
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
121
|
+
# integrates with CPython, but also works on its own.
|
|
122
|
+
#
|
|
123
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
124
|
+
# you may not use this file except in compliance with the License.
|
|
125
|
+
# You may obtain a copy of the License at
|
|
126
|
+
#
|
|
127
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
128
|
+
#
|
|
129
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
130
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
131
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
132
|
+
# See the License for the specific language governing permissions and
|
|
133
|
+
# limitations under the License.
|
nuitka/utils/Images.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
|
""" Handling of images, esp. format conversions for icons.
|
|
19
5
|
|
|
20
6
|
"""
|
|
@@ -36,10 +22,15 @@ def checkIconUsage(logger, icon_path):
|
|
|
36
22
|
if needs_conversion:
|
|
37
23
|
try:
|
|
38
24
|
import imageio # pylint: disable=I0021,import-error,unused-import
|
|
39
|
-
except ImportError:
|
|
25
|
+
except ImportError as e:
|
|
26
|
+
from nuitka import Options
|
|
27
|
+
|
|
28
|
+
if Options.is_debug:
|
|
29
|
+
logger.info("Exception importing 'imageio' is %s" % repr(e))
|
|
30
|
+
|
|
40
31
|
logger.sysexit(
|
|
41
32
|
"""\
|
|
42
|
-
Need to install 'imageio' to
|
|
33
|
+
Need to install 'imageio' to automatically convert the non native \
|
|
43
34
|
icon image (%s) in file in '%s'."""
|
|
44
35
|
% (icon_format[1:].upper(), icon_path)
|
|
45
36
|
)
|
|
@@ -64,3 +55,19 @@ def convertImageToIconFormat(logger, image_filename, converted_icon_filename):
|
|
|
64
55
|
)
|
|
65
56
|
|
|
66
57
|
imageio.imwrite(converted_icon_filename, image)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
61
|
+
# integrates with CPython, but also works on its own.
|
|
62
|
+
#
|
|
63
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
64
|
+
# you may not use this file except in compliance with the License.
|
|
65
|
+
# You may obtain a copy of the License at
|
|
66
|
+
#
|
|
67
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
68
|
+
#
|
|
69
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
70
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
71
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
72
|
+
# See the License for the specific language governing permissions and
|
|
73
|
+
# limitations under the License.
|
nuitka/utils/Importing.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
|
""" Helper to import a file as a module.
|
|
19
5
|
|
|
20
6
|
Used for Nuitka plugins and for test code.
|
|
@@ -26,6 +12,8 @@ import sys
|
|
|
26
12
|
from nuitka.PythonVersions import python_version
|
|
27
13
|
from nuitka.Tracing import general
|
|
28
14
|
|
|
15
|
+
from .InlineCopies import getInlineCopyFolder
|
|
16
|
+
from .ModuleNames import ModuleName
|
|
29
17
|
from .Utils import withNoDeprecationWarning
|
|
30
18
|
|
|
31
19
|
|
|
@@ -53,7 +41,7 @@ def _importFilePy3OldWay(filename):
|
|
|
53
41
|
|
|
54
42
|
def importFilePy2(filename):
|
|
55
43
|
"""Import a file for Python version 2."""
|
|
56
|
-
import imp
|
|
44
|
+
import imp # Python2 only, pylint: disable=I0021,import-error
|
|
57
45
|
|
|
58
46
|
basename = os.path.splitext(os.path.basename(filename))[0]
|
|
59
47
|
return imp.load_source(basename, filename)
|
|
@@ -89,7 +77,7 @@ def getSharedLibrarySuffixes():
|
|
|
89
77
|
|
|
90
78
|
if _shared_library_suffixes is None:
|
|
91
79
|
if python_version < 0x300:
|
|
92
|
-
import imp
|
|
80
|
+
import imp # Python2 only, pylint: disable=I0021,import-error
|
|
93
81
|
|
|
94
82
|
_shared_library_suffixes = []
|
|
95
83
|
|
|
@@ -163,25 +151,15 @@ def _importFromFolder(logger, module_name, path, must_exist, message):
|
|
|
163
151
|
del sys.path[0]
|
|
164
152
|
|
|
165
153
|
|
|
166
|
-
|
|
167
|
-
"""Import a module from the inline copy stage."""
|
|
154
|
+
_deleted_modules = {}
|
|
168
155
|
|
|
169
|
-
folder_name = os.path.normpath(
|
|
170
|
-
os.path.join(
|
|
171
|
-
os.path.dirname(__file__), "..", "build", "inline_copy", module_name
|
|
172
|
-
)
|
|
173
|
-
)
|
|
174
156
|
|
|
175
|
-
|
|
176
|
-
|
|
157
|
+
def importFromInlineCopy(module_name, must_exist, delete_module=False):
|
|
158
|
+
"""Import a module from the inline copy stage."""
|
|
177
159
|
|
|
178
|
-
|
|
179
|
-
if python_version < 0x300 and os.path.exists(candidate_27):
|
|
180
|
-
folder_name = candidate_27
|
|
181
|
-
elif python_version < 0x360 and os.path.exists(candidate_35):
|
|
182
|
-
folder_name = candidate_35
|
|
160
|
+
folder_name = getInlineCopyFolder(module_name)
|
|
183
161
|
|
|
184
|
-
|
|
162
|
+
module = _importFromFolder(
|
|
185
163
|
module_name=module_name,
|
|
186
164
|
path=folder_name,
|
|
187
165
|
must_exist=must_exist,
|
|
@@ -189,6 +167,19 @@ def importFromInlineCopy(module_name, must_exist):
|
|
|
189
167
|
logger=general,
|
|
190
168
|
)
|
|
191
169
|
|
|
170
|
+
if delete_module and module_name in sys.modules:
|
|
171
|
+
delete_module_names = set([module_name])
|
|
172
|
+
|
|
173
|
+
for m in sys.modules:
|
|
174
|
+
if m.startswith(module_name + "."):
|
|
175
|
+
delete_module_names.add(m)
|
|
176
|
+
|
|
177
|
+
for delete_module_name in delete_module_names:
|
|
178
|
+
_deleted_modules[delete_module_name] = sys.modules[delete_module_name]
|
|
179
|
+
del sys.modules[delete_module_name]
|
|
180
|
+
|
|
181
|
+
return module
|
|
182
|
+
|
|
192
183
|
|
|
193
184
|
_compile_time_modules = {}
|
|
194
185
|
|
|
@@ -220,16 +211,39 @@ def importFromCompileTime(module_name, must_exist):
|
|
|
220
211
|
|
|
221
212
|
def isBuiltinModuleName(module_name):
|
|
222
213
|
if python_version < 0x300:
|
|
223
|
-
import imp as _imp
|
|
214
|
+
import imp as _imp # Python2 only, pylint: disable=I0021,import-error
|
|
224
215
|
else:
|
|
225
216
|
import _imp
|
|
226
217
|
|
|
227
|
-
|
|
218
|
+
result = _imp.is_builtin(module_name) or _imp.is_frozen(module_name)
|
|
219
|
+
|
|
220
|
+
# Some frozen modules are not actually in that list, e.g.
|
|
221
|
+
# "importlib._bootstrap_external" on Python3.10 doesn't report to
|
|
222
|
+
# "_imp.is_frozen()" above, so we check if it's already loaded and from the
|
|
223
|
+
# "FrozenImporter" by name.
|
|
224
|
+
if result is False and module_name in sys.modules:
|
|
225
|
+
module = sys.modules[module_name]
|
|
226
|
+
|
|
227
|
+
if hasattr(module, "__loader__"):
|
|
228
|
+
loader = module.__loader__
|
|
229
|
+
|
|
230
|
+
try:
|
|
231
|
+
result = loader.__name__ == "FrozenImporter"
|
|
232
|
+
except AttributeError:
|
|
233
|
+
pass
|
|
234
|
+
|
|
235
|
+
return result
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
# Have a set for quicker lookups, and we cannot have "__main__" in there.
|
|
239
|
+
builtin_module_names = set(
|
|
240
|
+
module_name for module_name in sys.builtin_module_names if module_name != "__main__"
|
|
241
|
+
)
|
|
228
242
|
|
|
229
243
|
|
|
230
244
|
def getModuleFilenameSuffixes():
|
|
231
245
|
if python_version < 0x3C0:
|
|
232
|
-
import imp
|
|
246
|
+
import imp # Older Python only, pylint: disable=I0021,import-error
|
|
233
247
|
|
|
234
248
|
for suffix, _mode, module_type in imp.get_suffixes():
|
|
235
249
|
if module_type == imp.C_EXTENSION:
|
|
@@ -251,3 +265,71 @@ def getModuleFilenameSuffixes():
|
|
|
251
265
|
yield suffix, "PY_SOURCE"
|
|
252
266
|
for suffix in importlib.machinery.BYTECODE_SUFFIXES:
|
|
253
267
|
yield suffix, "PY_COMPILED"
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def getModuleNameAndKindFromFilenameSuffix(module_filename):
|
|
271
|
+
"""Given a filename, decide the module name and kind.
|
|
272
|
+
|
|
273
|
+
Args:
|
|
274
|
+
module_name - file path of the module
|
|
275
|
+
Returns:
|
|
276
|
+
Tuple with the name of the module basename, and the kind of the
|
|
277
|
+
module derived from the file suffix. Can be None, None if is is not a
|
|
278
|
+
known file suffix.
|
|
279
|
+
Notes:
|
|
280
|
+
This doesn't handle packages at all.
|
|
281
|
+
"""
|
|
282
|
+
if module_filename.endswith(".py"):
|
|
283
|
+
return ModuleName(os.path.basename(module_filename)[:-3]), "py"
|
|
284
|
+
|
|
285
|
+
if module_filename.endswith(".pyc"):
|
|
286
|
+
return ModuleName(os.path.basename(module_filename)[:-4]), "pyc"
|
|
287
|
+
|
|
288
|
+
for suffix in getSharedLibrarySuffixes():
|
|
289
|
+
if module_filename.endswith(suffix):
|
|
290
|
+
return (
|
|
291
|
+
ModuleName(os.path.basename(module_filename)[: -len(suffix)]),
|
|
292
|
+
"extension",
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
return None, None
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def hasPackageDirFilename(path):
|
|
299
|
+
path = os.path.basename(path)
|
|
300
|
+
|
|
301
|
+
for suffix in (".py",) + getSharedLibrarySuffixes():
|
|
302
|
+
candidate = "__init__" + suffix
|
|
303
|
+
|
|
304
|
+
if candidate == path:
|
|
305
|
+
return True
|
|
306
|
+
|
|
307
|
+
return False
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def getPackageDirFilename(path):
|
|
311
|
+
assert os.path.isdir(path)
|
|
312
|
+
|
|
313
|
+
for suffix in getSharedLibrarySuffixes() + (".py",):
|
|
314
|
+
candidate = os.path.join(path, "__init__" + suffix)
|
|
315
|
+
|
|
316
|
+
if os.path.isfile(candidate):
|
|
317
|
+
return candidate
|
|
318
|
+
|
|
319
|
+
return None
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
323
|
+
# integrates with CPython, but also works on its own.
|
|
324
|
+
#
|
|
325
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
326
|
+
# you may not use this file except in compliance with the License.
|
|
327
|
+
# You may obtain a copy of the License at
|
|
328
|
+
#
|
|
329
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
330
|
+
#
|
|
331
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
332
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
333
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
334
|
+
# See the License for the specific language governing permissions and
|
|
335
|
+
# limitations under the License.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Policies for locating inline copies."""
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
from nuitka.PythonVersions import python_version
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _getInlineCopyBaseFolder():
|
|
12
|
+
"""Base folder for inline copies."""
|
|
13
|
+
return os.path.normpath(
|
|
14
|
+
os.path.join(os.path.dirname(__file__), "..", "build", "inline_copy")
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def getInlineCopyFolder(module_name):
|
|
19
|
+
"""Get the inline copy folder for a given name."""
|
|
20
|
+
folder_name = os.path.join(_getInlineCopyBaseFolder(), module_name)
|
|
21
|
+
|
|
22
|
+
candidate_27 = folder_name + "_27"
|
|
23
|
+
candidate_35 = folder_name + "_35"
|
|
24
|
+
|
|
25
|
+
# Use specific versions if needed.
|
|
26
|
+
if python_version < 0x300 and os.path.exists(candidate_27):
|
|
27
|
+
folder_name = candidate_27
|
|
28
|
+
elif python_version < 0x360 and os.path.exists(candidate_35):
|
|
29
|
+
folder_name = candidate_35
|
|
30
|
+
|
|
31
|
+
return folder_name
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def getDownloadCopyFolder():
|
|
35
|
+
"""Get the inline copy folder for a given name."""
|
|
36
|
+
return os.path.join(_getInlineCopyBaseFolder(), "downloads", "pip")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
40
|
+
# integrates with CPython, but also works on its own.
|
|
41
|
+
#
|
|
42
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
43
|
+
# you may not use this file except in compliance with the License.
|
|
44
|
+
# You may obtain a copy of the License at
|
|
45
|
+
#
|
|
46
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
47
|
+
#
|
|
48
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
49
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
50
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
51
|
+
# See the License for the specific language governing permissions and
|
|
52
|
+
# limitations under the License.
|
nuitka/utils/InstalledPythons.py
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
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
|
""" Provide installed Pythons with module availability checks. """
|
|
19
5
|
|
|
20
6
|
import os
|
|
21
7
|
import sys
|
|
22
8
|
|
|
23
|
-
from nuitka.__past__ import WindowsError # pylint: disable=I0021,redefined-builtin
|
|
24
9
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
25
|
-
from nuitka.
|
|
10
|
+
from nuitka.PythonFlavors import isAnacondaPython, isMSYS2MingwPython
|
|
11
|
+
from nuitka.PythonVersions import (
|
|
12
|
+
getInstalledPythonRegistryPaths,
|
|
13
|
+
python_version_str,
|
|
14
|
+
)
|
|
26
15
|
|
|
27
16
|
from .Execution import (
|
|
28
17
|
NuitkaCalledProcessError,
|
|
@@ -55,11 +44,34 @@ class InstalledPython(object):
|
|
|
55
44
|
return int(major) * 256 + int(minor) * 16
|
|
56
45
|
|
|
57
46
|
def isAnacondaPython(self):
|
|
58
|
-
|
|
47
|
+
if self.python_exe == sys.executable:
|
|
48
|
+
return isAnacondaPython()
|
|
49
|
+
|
|
50
|
+
# TODO: May not yet work really.
|
|
59
51
|
return os.path.exists(
|
|
60
52
|
os.path.join(os.path.dirname(self.python_exe), "..", "conda-meta")
|
|
61
53
|
)
|
|
62
54
|
|
|
55
|
+
def isMSYS2MingwPython(self):
|
|
56
|
+
if self.python_exe == sys.executable:
|
|
57
|
+
return isMSYS2MingwPython()
|
|
58
|
+
|
|
59
|
+
# TODO: May not yet work really.
|
|
60
|
+
return (
|
|
61
|
+
os.path.exists(
|
|
62
|
+
os.path.join(os.path.dirname(self.python_exe), "..", "..", "msys2.ini")
|
|
63
|
+
)
|
|
64
|
+
and os.path.basename(os.path.dirname(self.python_exe)) == "mingw64"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
def getPreferredPackageType(self):
|
|
68
|
+
if self.isAnacondaPython():
|
|
69
|
+
return "conda"
|
|
70
|
+
elif self.isMSYS2MingwPython():
|
|
71
|
+
return "pacman"
|
|
72
|
+
else:
|
|
73
|
+
return "pip"
|
|
74
|
+
|
|
63
75
|
# Necessary for Python 2.7, otherwise SyntaxError is given on exec.
|
|
64
76
|
@staticmethod
|
|
65
77
|
def _exec(code, context):
|
|
@@ -124,38 +136,6 @@ class InstalledPython(object):
|
|
|
124
136
|
_installed_pythons = {}
|
|
125
137
|
|
|
126
138
|
|
|
127
|
-
def getInstalledPythonRegistryPaths(python_version):
|
|
128
|
-
"""Yield all Pythons as found in the Windows registry."""
|
|
129
|
-
# Windows only code, pylint: disable=I0021,import-error,undefined-variable
|
|
130
|
-
if str is bytes:
|
|
131
|
-
import _winreg as winreg # pylint: disable=I0021,import-error,no-name-in-module
|
|
132
|
-
else:
|
|
133
|
-
import winreg # pylint: disable=I0021,import-error,no-name-in-module
|
|
134
|
-
|
|
135
|
-
for hkey_branch in (winreg.HKEY_LOCAL_MACHINE, winreg.HKEY_CURRENT_USER):
|
|
136
|
-
for arch_key in (0, winreg.KEY_WOW64_32KEY, winreg.KEY_WOW64_64KEY):
|
|
137
|
-
for suffix in "", "-32", "-arm64":
|
|
138
|
-
try:
|
|
139
|
-
key = winreg.OpenKey(
|
|
140
|
-
hkey_branch,
|
|
141
|
-
r"SOFTWARE\Python\PythonCore\%s%s\InstallPath"
|
|
142
|
-
% (python_version, suffix),
|
|
143
|
-
0,
|
|
144
|
-
winreg.KEY_READ | arch_key,
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
install_dir = os.path.normpath(winreg.QueryValue(key, ""))
|
|
148
|
-
except WindowsError:
|
|
149
|
-
pass
|
|
150
|
-
else:
|
|
151
|
-
candidate = os.path.normpath(
|
|
152
|
-
os.path.join(install_dir, "python.exe")
|
|
153
|
-
)
|
|
154
|
-
|
|
155
|
-
if os.path.exists(candidate):
|
|
156
|
-
yield candidate
|
|
157
|
-
|
|
158
|
-
|
|
159
139
|
def _getPythonInstallPathsWindows(python_version):
|
|
160
140
|
"""Find Python installation on Windows.
|
|
161
141
|
|
|
@@ -181,37 +161,51 @@ def _getPythonInstallPathsWindows(python_version):
|
|
|
181
161
|
|
|
182
162
|
seen.add(candidate)
|
|
183
163
|
|
|
184
|
-
for candidate in getInstalledPythonRegistryPaths(python_version
|
|
164
|
+
for candidate in getInstalledPythonRegistryPaths(python_version):
|
|
185
165
|
if candidate not in seen:
|
|
186
166
|
seen.add(candidate)
|
|
187
167
|
yield candidate
|
|
188
168
|
|
|
189
169
|
|
|
190
|
-
def findPythons(python_version):
|
|
170
|
+
def findPythons(python_version, module_name=None, module_version=None):
|
|
191
171
|
"""Find all Python installations for a specific version."""
|
|
192
172
|
|
|
193
|
-
if python_version in _installed_pythons:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
173
|
+
if python_version not in _installed_pythons:
|
|
174
|
+
result = OrderedSet()
|
|
175
|
+
|
|
176
|
+
if python_version == python_version_str:
|
|
177
|
+
result.add(
|
|
178
|
+
InstalledPython(
|
|
179
|
+
python_exe=sys.executable, python_version=python_version
|
|
180
|
+
)
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
if isWin32Windows():
|
|
184
|
+
result.update(
|
|
185
|
+
InstalledPython(python_exe=python_exe, python_version=python_version)
|
|
186
|
+
for python_exe in _getPythonInstallPathsWindows(python_version)
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
candidate = getExecutablePath("python" + python_version)
|
|
190
|
+
if candidate is not None:
|
|
191
|
+
result.add(
|
|
192
|
+
InstalledPython(python_exe=candidate, python_version=python_version)
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
_installed_pythons[python_version] = result
|
|
196
|
+
|
|
197
|
+
return tuple(
|
|
198
|
+
sorted(
|
|
199
|
+
(
|
|
200
|
+
candidate
|
|
201
|
+
for candidate in _installed_pythons[python_version]
|
|
202
|
+
if candidate.checkUsability(
|
|
203
|
+
module_name=module_name, module_version=module_version
|
|
204
|
+
)
|
|
205
|
+
),
|
|
206
|
+
key=lambda c: c.getPythonExe(),
|
|
207
207
|
)
|
|
208
|
-
|
|
209
|
-
candidate = getExecutablePath("python" + python_version)
|
|
210
|
-
if candidate is not None:
|
|
211
|
-
result.add(InstalledPython(python_exe=candidate, python_version=python_version))
|
|
212
|
-
|
|
213
|
-
_installed_pythons[python_version] = result
|
|
214
|
-
return result
|
|
208
|
+
)
|
|
215
209
|
|
|
216
210
|
|
|
217
211
|
def findInstalledPython(python_versions, module_name, module_version):
|
|
@@ -242,3 +236,19 @@ def findInstalledPython(python_versions, module_name, module_version):
|
|
|
242
236
|
return candidate
|
|
243
237
|
|
|
244
238
|
return None
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
242
|
+
# integrates with CPython, but also works on its own.
|
|
243
|
+
#
|
|
244
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
245
|
+
# you may not use this file except in compliance with the License.
|
|
246
|
+
# You may obtain a copy of the License at
|
|
247
|
+
#
|
|
248
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
249
|
+
#
|
|
250
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
251
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
252
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
253
|
+
# See the License for the specific language governing permissions and
|
|
254
|
+
# limitations under the License.
|