Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# integrates with CPython, but also works on its own.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
#
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
18
4
|
"""DLL dependency scan methods that are shared. """
|
|
19
5
|
|
|
20
6
|
import os
|
|
@@ -22,6 +8,7 @@ import os
|
|
|
22
8
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
23
9
|
from nuitka.importing.Importing import locateModule
|
|
24
10
|
from nuitka.plugins.Plugins import Plugins
|
|
11
|
+
from nuitka.Tracing import inclusion_logger
|
|
25
12
|
from nuitka.utils.FileOperations import getSubDirectoriesWithDlls
|
|
26
13
|
from nuitka.utils.ModuleNames import ModuleName
|
|
27
14
|
|
|
@@ -36,7 +23,12 @@ def getLdLibraryPath(package_name, python_rpaths, original_dir):
|
|
|
36
23
|
if python_rpaths:
|
|
37
24
|
ld_library_path.update(python_rpaths)
|
|
38
25
|
|
|
39
|
-
ld_library_path.update(
|
|
26
|
+
ld_library_path.update(
|
|
27
|
+
getPackageSpecificDLLDirectories(
|
|
28
|
+
package_name=package_name,
|
|
29
|
+
consider_plugins=True,
|
|
30
|
+
)
|
|
31
|
+
)
|
|
40
32
|
if original_dir is not None:
|
|
41
33
|
ld_library_path.add(original_dir)
|
|
42
34
|
|
|
@@ -45,7 +37,9 @@ def getLdLibraryPath(package_name, python_rpaths, original_dir):
|
|
|
45
37
|
return _ld_library_cache[key]
|
|
46
38
|
|
|
47
39
|
|
|
48
|
-
def getPackageSpecificDLLDirectories(
|
|
40
|
+
def getPackageSpecificDLLDirectories(
|
|
41
|
+
package_name, consider_plugins, allow_not_found=False
|
|
42
|
+
):
|
|
49
43
|
scan_dirs = OrderedSet()
|
|
50
44
|
|
|
51
45
|
if package_name is not None:
|
|
@@ -53,6 +47,17 @@ def getPackageSpecificDLLDirectories(package_name, consider_plugins=True):
|
|
|
53
47
|
module_name=package_name, parent_package=None, level=0
|
|
54
48
|
)[1]
|
|
55
49
|
|
|
50
|
+
if package_dir is None:
|
|
51
|
+
if allow_not_found:
|
|
52
|
+
return scan_dirs
|
|
53
|
+
|
|
54
|
+
inclusion_logger.sysexit(
|
|
55
|
+
"""\
|
|
56
|
+
Error, failed to locate package '%s' while trying to look up DLL dependencies, \
|
|
57
|
+
that should not happen. Please report the issue."""
|
|
58
|
+
% package_name
|
|
59
|
+
)
|
|
60
|
+
|
|
56
61
|
if os.path.isdir(package_dir):
|
|
57
62
|
scan_dirs.add(package_dir)
|
|
58
63
|
scan_dirs.update(getSubDirectoriesWithDlls(package_dir))
|
|
@@ -65,6 +70,28 @@ def getPackageSpecificDLLDirectories(package_name, consider_plugins=True):
|
|
|
65
70
|
|
|
66
71
|
# TODO: Move this to plugins DLLs section.
|
|
67
72
|
if package_name == "torchvision" and consider_plugins:
|
|
68
|
-
scan_dirs.update(
|
|
73
|
+
scan_dirs.update(
|
|
74
|
+
getPackageSpecificDLLDirectories(
|
|
75
|
+
package_name=ModuleName("torch"),
|
|
76
|
+
consider_plugins=True,
|
|
77
|
+
allow_not_found=True,
|
|
78
|
+
)
|
|
79
|
+
)
|
|
69
80
|
|
|
70
81
|
return scan_dirs
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
85
|
+
# integrates with CPython, but also works on its own.
|
|
86
|
+
#
|
|
87
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
88
|
+
# you may not use this file except in compliance with the License.
|
|
89
|
+
# You may obtain a copy of the License at
|
|
90
|
+
#
|
|
91
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
92
|
+
#
|
|
93
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
94
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
95
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
96
|
+
# See the License for the specific language governing permissions and
|
|
97
|
+
# limitations under the License.
|
|
@@ -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
|
"""DLL dependency scan methods for macOS. """
|
|
19
5
|
|
|
20
6
|
import os
|
|
@@ -28,14 +14,21 @@ from nuitka.plugins.Plugins import Plugins
|
|
|
28
14
|
from nuitka.PythonFlavors import isAnacondaPython, isNuitkaPython
|
|
29
15
|
from nuitka.PythonVersions import python_version
|
|
30
16
|
from nuitka.Tracing import inclusion_logger
|
|
31
|
-
from nuitka.utils.FileOperations import
|
|
17
|
+
from nuitka.utils.FileOperations import (
|
|
18
|
+
areSamePaths,
|
|
19
|
+
changeFilenameExtension,
|
|
20
|
+
getReportPath,
|
|
21
|
+
isFilenameBelowPath,
|
|
22
|
+
)
|
|
32
23
|
from nuitka.utils.Importing import getSharedLibrarySuffixes
|
|
33
24
|
from nuitka.utils.Json import loadJsonFromFilename
|
|
34
25
|
from nuitka.utils.SharedLibraries import (
|
|
35
26
|
callInstallNameTool,
|
|
36
27
|
getOtoolDependencyOutput,
|
|
37
28
|
getOtoolListing,
|
|
29
|
+
parseOtoolListingOutput,
|
|
38
30
|
)
|
|
31
|
+
from nuitka.utils.Utils import getArchitecture
|
|
39
32
|
|
|
40
33
|
from .DllDependenciesCommon import getLdLibraryPath
|
|
41
34
|
|
|
@@ -60,11 +53,16 @@ def _detectPythonRpaths():
|
|
|
60
53
|
if os.path.isdir(candidate):
|
|
61
54
|
result.append(candidate)
|
|
62
55
|
|
|
63
|
-
return tuple(result)
|
|
56
|
+
return tuple(set(result))
|
|
64
57
|
|
|
65
58
|
|
|
66
59
|
def detectBinaryPathDLLsMacOS(
|
|
67
|
-
original_dir,
|
|
60
|
+
original_dir,
|
|
61
|
+
binary_filename,
|
|
62
|
+
package_name,
|
|
63
|
+
keep_unresolved,
|
|
64
|
+
recursive,
|
|
65
|
+
recursive_dlls=None,
|
|
68
66
|
):
|
|
69
67
|
assert os.path.exists(binary_filename), binary_filename
|
|
70
68
|
|
|
@@ -98,13 +96,25 @@ def detectBinaryPathDLLsMacOS(
|
|
|
98
96
|
if recursive:
|
|
99
97
|
merged_result = OrderedDict(resolved_result)
|
|
100
98
|
|
|
99
|
+
# For recursive DLL detection, cycle may exist, so we keep track of what
|
|
100
|
+
# was seen so far.
|
|
101
|
+
if recursive_dlls is None:
|
|
102
|
+
recursive_dlls = set([binary_filename])
|
|
103
|
+
else:
|
|
104
|
+
recursive_dlls = set(recursive_dlls)
|
|
105
|
+
recursive_dlls.add(binary_filename)
|
|
106
|
+
|
|
101
107
|
for sub_dll_filename in resolved_result:
|
|
108
|
+
if sub_dll_filename in recursive_dlls:
|
|
109
|
+
continue
|
|
110
|
+
|
|
102
111
|
_, sub_result = detectBinaryPathDLLsMacOS(
|
|
103
112
|
original_dir=os.path.dirname(sub_dll_filename),
|
|
104
113
|
binary_filename=sub_dll_filename,
|
|
105
114
|
package_name=package_name,
|
|
106
|
-
recursive=True,
|
|
107
115
|
keep_unresolved=True,
|
|
116
|
+
recursive=True,
|
|
117
|
+
recursive_dlls=recursive_dlls,
|
|
108
118
|
)
|
|
109
119
|
|
|
110
120
|
merged_result.update(sub_result)
|
|
@@ -118,17 +128,9 @@ def detectBinaryPathDLLsMacOS(
|
|
|
118
128
|
|
|
119
129
|
|
|
120
130
|
def _parseOtoolListingOutput(output):
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
for line in output.split(b"\n")[1:]:
|
|
124
|
-
if str is not bytes:
|
|
125
|
-
line = line.decode("utf8")
|
|
126
|
-
|
|
127
|
-
if not line:
|
|
128
|
-
continue
|
|
129
|
-
|
|
130
|
-
filename = line.split(" (", 1)[0].strip()
|
|
131
|
+
result = OrderedSet()
|
|
131
132
|
|
|
133
|
+
for filename in parseOtoolListingOutput(output):
|
|
132
134
|
# Ignore dependency from system paths.
|
|
133
135
|
if not isFilenameBelowPath(
|
|
134
136
|
path=(
|
|
@@ -138,9 +140,49 @@ def _parseOtoolListingOutput(output):
|
|
|
138
140
|
),
|
|
139
141
|
filename=filename,
|
|
140
142
|
):
|
|
141
|
-
|
|
143
|
+
result.add(filename)
|
|
144
|
+
|
|
145
|
+
return result
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _getNonVersionedDllFilenames2(filename):
|
|
149
|
+
yield filename
|
|
150
|
+
|
|
151
|
+
if getArchitecture() == "arm64" and filename.endswith(".dylib"):
|
|
152
|
+
yield filename[:-6] + "_arm64.dylib"
|
|
153
|
+
|
|
154
|
+
match = re.match(r"^(.*?)(\.\d+)+\.dylib$", filename)
|
|
155
|
+
|
|
156
|
+
if match:
|
|
157
|
+
yield match.group(1) + ".dylib"
|
|
158
|
+
|
|
159
|
+
# TODO: The versioned filename, might do the same, and so could the
|
|
160
|
+
# "x86_64" specific DLL be a thing too, but we should have actual
|
|
161
|
+
# examples to be sure they are covered with tests.
|
|
162
|
+
if getArchitecture() == "arm64":
|
|
163
|
+
yield match.group(1) + "_arm64.dylib"
|
|
164
|
+
|
|
165
|
+
if filename.endswith(".so"):
|
|
166
|
+
yield changeFilenameExtension(filename, ".dylib")
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _getNonVersionedDllFilenames(dll_filename, package_name):
|
|
170
|
+
for filename in _getNonVersionedDllFilenames2(dll_filename):
|
|
171
|
+
yield filename
|
|
142
172
|
|
|
143
|
-
|
|
173
|
+
# Some build systems, internally prefix DLLs with package names, attempt
|
|
174
|
+
# those removed as well.
|
|
175
|
+
if package_name is not None:
|
|
176
|
+
package_prefix = package_name.asString() + "."
|
|
177
|
+
|
|
178
|
+
if os.path.basename(dll_filename).startswith(package_prefix):
|
|
179
|
+
dll_filename = os.path.join(
|
|
180
|
+
os.path.dirname(dll_filename),
|
|
181
|
+
os.path.basename(dll_filename)[len(package_prefix) :],
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
for filename in _getNonVersionedDllFilenames2(dll_filename):
|
|
185
|
+
yield filename
|
|
144
186
|
|
|
145
187
|
|
|
146
188
|
def _resolveBinaryPathDLLsMacOS(
|
|
@@ -159,11 +201,17 @@ def _resolveBinaryPathDLLsMacOS(
|
|
|
159
201
|
for path in paths:
|
|
160
202
|
if path.startswith("@rpath/"):
|
|
161
203
|
# Resolve rpath to just the ones given, first match.
|
|
204
|
+
library_name = path[7:]
|
|
205
|
+
|
|
162
206
|
for rpath in rpaths:
|
|
163
|
-
if os.path.exists(os.path.join(rpath,
|
|
207
|
+
if os.path.exists(os.path.join(rpath, library_name)):
|
|
164
208
|
resolved_path = os.path.normpath(os.path.join(rpath, path[7:]))
|
|
165
209
|
break
|
|
166
210
|
else:
|
|
211
|
+
# These have become virtual in later macOS, spell-checker: ignore libz
|
|
212
|
+
if library_name in ("libc++.1.dylib", "libz.1.dylib"):
|
|
213
|
+
continue
|
|
214
|
+
|
|
167
215
|
# This is only a guess, might be missing package specific directories.
|
|
168
216
|
resolved_path = os.path.normpath(os.path.join(original_dir, path[7:]))
|
|
169
217
|
elif path.startswith("@loader_path/"):
|
|
@@ -199,38 +247,70 @@ def _resolveBinaryPathDLLsMacOS(
|
|
|
199
247
|
)
|
|
200
248
|
|
|
201
249
|
# Some extension modules seem to reference themselves by a different
|
|
202
|
-
# extension module name, so use that if it exists
|
|
203
|
-
|
|
250
|
+
# extension module name, so use that if it exists, and some versioned
|
|
251
|
+
# DLL dependencies do not matter.
|
|
252
|
+
if python_version >= 0x300:
|
|
204
253
|
so_suffixes = getSharedLibrarySuffixes()[:-1]
|
|
205
254
|
|
|
206
255
|
specific_suffix = so_suffixes[0]
|
|
207
256
|
abi_suffix = so_suffixes[1]
|
|
208
257
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if candidate is not None and os.path.exists(candidate):
|
|
217
|
-
resolved_path = candidate
|
|
218
|
-
|
|
219
|
-
# Sometimes self-dependencies are on a numbered version, but deployed is
|
|
220
|
-
# one version without it. The macOS just ignores that, and so we do.
|
|
221
|
-
if not os.path.exists(resolved_path):
|
|
222
|
-
match = re.match(r"^(.*)\.\d+\.dylib$", resolved_path)
|
|
258
|
+
for resolved_path_candidate in _getNonVersionedDllFilenames(
|
|
259
|
+
dll_filename=resolved_path, package_name=package_name
|
|
260
|
+
):
|
|
261
|
+
if os.path.exists(resolved_path_candidate):
|
|
262
|
+
resolved_path = resolved_path_candidate
|
|
263
|
+
break
|
|
223
264
|
|
|
224
|
-
|
|
225
|
-
|
|
265
|
+
if resolved_path_candidate.endswith(specific_suffix):
|
|
266
|
+
candidate = (
|
|
267
|
+
resolved_path_candidate[: -len(specific_suffix)] + abi_suffix
|
|
268
|
+
)
|
|
269
|
+
elif resolved_path_candidate.endswith(abi_suffix):
|
|
270
|
+
candidate = (
|
|
271
|
+
resolved_path_candidate[: -len(specific_suffix)] + abi_suffix
|
|
272
|
+
)
|
|
273
|
+
else:
|
|
274
|
+
candidate = None
|
|
226
275
|
|
|
227
|
-
if os.path.exists(candidate):
|
|
276
|
+
if candidate is not None and os.path.exists(candidate):
|
|
228
277
|
resolved_path = candidate
|
|
229
|
-
|
|
230
|
-
candidate = os.path.join(original_dir, os.path.basename(candidate))
|
|
278
|
+
break
|
|
231
279
|
|
|
232
|
-
|
|
233
|
-
|
|
280
|
+
# Sometimes self-dependencies are on a numbered version, but deployed is
|
|
281
|
+
# one version without it. Also be tolerant about changing suffixes
|
|
282
|
+
# internally. The macOS just ignores that, and so we do.
|
|
283
|
+
if not os.path.exists(resolved_path):
|
|
284
|
+
if os.path.basename(resolved_path) == os.path.basename(binary_filename):
|
|
285
|
+
resolved_path = binary_filename
|
|
286
|
+
else:
|
|
287
|
+
for suffix1, suffix2 in (
|
|
288
|
+
(".dylib", ".dylib"),
|
|
289
|
+
(".so", ".so"),
|
|
290
|
+
(".dylib", ".so"),
|
|
291
|
+
(".so", ".dylib"),
|
|
292
|
+
):
|
|
293
|
+
pattern = r"^(.*?)(\.\d+)*%s$" % re.escape(suffix1)
|
|
294
|
+
|
|
295
|
+
match = re.match(pattern, resolved_path)
|
|
296
|
+
|
|
297
|
+
if match:
|
|
298
|
+
candidate = match.group(1) + suffix2
|
|
299
|
+
|
|
300
|
+
if os.path.exists(candidate):
|
|
301
|
+
resolved_path = candidate
|
|
302
|
+
else:
|
|
303
|
+
candidate = os.path.join(
|
|
304
|
+
original_dir, os.path.basename(candidate)
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
if os.path.exists(candidate):
|
|
308
|
+
resolved_path = candidate
|
|
309
|
+
elif os.path.basename(candidate) == os.path.basename(
|
|
310
|
+
binary_filename
|
|
311
|
+
):
|
|
312
|
+
# Versioned dependency on itself in non-existent path.
|
|
313
|
+
resolved_path = binary_filename
|
|
234
314
|
|
|
235
315
|
if not os.path.exists(resolved_path):
|
|
236
316
|
acceptable, plugin_name = Plugins.isAcceptableMissingDLL(
|
|
@@ -241,6 +321,17 @@ def _resolveBinaryPathDLLsMacOS(
|
|
|
241
321
|
# TODO: Missing DLLs that are accepted, are not really forbidden, we
|
|
242
322
|
# should instead acknowledge them as missing, and treat that properly
|
|
243
323
|
# in using code.
|
|
324
|
+
if acceptable is True:
|
|
325
|
+
raise NuitkaForbiddenDLLEncounter(binary_filename, plugin_name)
|
|
326
|
+
|
|
327
|
+
# We check both the user and the used DLL if they are listed. This
|
|
328
|
+
# might be a form of bug hiding, that the later is not sufficient,
|
|
329
|
+
# that we should address later.
|
|
330
|
+
acceptable, plugin_name = Plugins.isAcceptableMissingDLL(
|
|
331
|
+
package_name=package_name,
|
|
332
|
+
filename=resolved_path,
|
|
333
|
+
)
|
|
334
|
+
|
|
244
335
|
if acceptable is True:
|
|
245
336
|
raise NuitkaForbiddenDLLEncounter(binary_filename, plugin_name)
|
|
246
337
|
|
|
@@ -318,7 +409,7 @@ def fixupBinaryDLLPathsMacOS(
|
|
|
318
409
|
inclusion_logger.sysexit(
|
|
319
410
|
"""\
|
|
320
411
|
Error, problem with dependency scan of '%s' with '%s' please report the bug."""
|
|
321
|
-
% (original_location, rpath_filename)
|
|
412
|
+
% (getReportPath(original_location), rpath_filename)
|
|
322
413
|
)
|
|
323
414
|
|
|
324
415
|
mapping.append((rpath_filename, "@executable_path/" + dist_path))
|
|
@@ -330,3 +421,19 @@ def fixupBinaryDLLPathsMacOS(
|
|
|
330
421
|
id_path=os.path.basename(binary_filename) if had_self else None,
|
|
331
422
|
rpath=None,
|
|
332
423
|
)
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
427
|
+
# integrates with CPython, but also works on its own.
|
|
428
|
+
#
|
|
429
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
430
|
+
# you may not use this file except in compliance with the License.
|
|
431
|
+
# You may obtain a copy of the License at
|
|
432
|
+
#
|
|
433
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
434
|
+
#
|
|
435
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
436
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
437
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
438
|
+
# See the License for the specific language governing permissions and
|
|
439
|
+
# limitations under the License.
|
|
@@ -1,25 +1,10 @@
|
|
|
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
|
"""DLL dependency scan methods for POSIX (Linux, *BSD, MSYS2).
|
|
19
5
|
|
|
20
6
|
"""
|
|
21
7
|
|
|
22
|
-
|
|
23
8
|
import os
|
|
24
9
|
import sys
|
|
25
10
|
|
|
@@ -28,7 +13,11 @@ from nuitka.PythonFlavors import isAnacondaPython
|
|
|
28
13
|
from nuitka.Tracing import inclusion_logger
|
|
29
14
|
from nuitka.utils.Execution import executeProcess, withEnvironmentPathAdded
|
|
30
15
|
from nuitka.utils.SharedLibraries import getSharedLibraryRPATH
|
|
31
|
-
from nuitka.utils.Utils import
|
|
16
|
+
from nuitka.utils.Utils import (
|
|
17
|
+
isAlpineLinux,
|
|
18
|
+
isAndroidBasedLinux,
|
|
19
|
+
isPosixWindows,
|
|
20
|
+
)
|
|
32
21
|
|
|
33
22
|
from .DllDependenciesCommon import getLdLibraryPath
|
|
34
23
|
|
|
@@ -204,6 +193,9 @@ _linux_dll_ignore_list = [
|
|
|
204
193
|
# The DRM layer should also be taken from the OS in question and won't
|
|
205
194
|
# allow loading native drivers otherwise.
|
|
206
195
|
"libdrm.so",
|
|
196
|
+
# The zlib can be assumed to be everywhere, and outside dependencies
|
|
197
|
+
# may actually load it.
|
|
198
|
+
"libz.so",
|
|
207
199
|
]
|
|
208
200
|
|
|
209
201
|
if isAnacondaPython() or isAlpineLinux():
|
|
@@ -211,3 +203,21 @@ if isAnacondaPython() or isAlpineLinux():
|
|
|
211
203
|
# so they have to be included.
|
|
212
204
|
# Alpine linux does not include `libstdc++.so` by default.
|
|
213
205
|
_linux_dll_ignore_list.remove("libstdc++.so")
|
|
206
|
+
|
|
207
|
+
if isAndroidBasedLinux():
|
|
208
|
+
_linux_dll_ignore_list.remove("libz.so")
|
|
209
|
+
|
|
210
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
211
|
+
# integrates with CPython, but also works on its own.
|
|
212
|
+
#
|
|
213
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
214
|
+
# you may not use this file except in compliance with the License.
|
|
215
|
+
# You may obtain a copy of the License at
|
|
216
|
+
#
|
|
217
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
218
|
+
#
|
|
219
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
220
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
221
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
222
|
+
# See the License for the specific language governing permissions and
|
|
223
|
+
# limitations under the License.
|
|
@@ -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
|
"""DLL dependency scan methods for Win32 Windows.
|
|
19
5
|
|
|
20
6
|
Note: MSYS2, aka POSIX Windows is dealt with in the "DllDependenciesPosix" module.
|
|
@@ -28,6 +14,7 @@ from nuitka.build.SconsUtils import readSconsReport
|
|
|
28
14
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
29
15
|
from nuitka.Options import isShowProgress
|
|
30
16
|
from nuitka.plugins.Plugins import Plugins
|
|
17
|
+
from nuitka.PythonVersions import getSystemPrefixPath
|
|
31
18
|
from nuitka.Tracing import inclusion_logger
|
|
32
19
|
from nuitka.utils.AppDirs import getCacheDir
|
|
33
20
|
from nuitka.utils.FileOperations import (
|
|
@@ -50,12 +37,13 @@ from .DllDependenciesCommon import getPackageSpecificDLLDirectories
|
|
|
50
37
|
_scan_dir_cache = {}
|
|
51
38
|
|
|
52
39
|
|
|
53
|
-
def
|
|
40
|
+
def detectBinaryPathDLLsWin32(
|
|
54
41
|
is_main_executable,
|
|
55
42
|
source_dir,
|
|
56
43
|
original_dir,
|
|
57
44
|
binary_filename,
|
|
58
45
|
package_name,
|
|
46
|
+
use_path,
|
|
59
47
|
use_cache,
|
|
60
48
|
update_cache,
|
|
61
49
|
):
|
|
@@ -68,6 +56,7 @@ def detectBinaryPathDLLsWindowsDependencyWalker(
|
|
|
68
56
|
original_dir=original_dir,
|
|
69
57
|
binary_filename=binary_filename,
|
|
70
58
|
package_name=package_name,
|
|
59
|
+
use_path=use_path,
|
|
71
60
|
)
|
|
72
61
|
|
|
73
62
|
if use_cache:
|
|
@@ -92,7 +81,9 @@ def detectBinaryPathDLLsWindowsDependencyWalker(
|
|
|
92
81
|
if isShowProgress():
|
|
93
82
|
inclusion_logger.info("Analyzing dependencies of '%s'." % binary_filename)
|
|
94
83
|
|
|
95
|
-
scan_dirs = _getScanDirectories(
|
|
84
|
+
scan_dirs = _getScanDirectories(
|
|
85
|
+
package_name=package_name, original_dir=original_dir, use_path=use_path
|
|
86
|
+
)
|
|
96
87
|
|
|
97
88
|
result = detectDLLsWithDependencyWalker(
|
|
98
89
|
binary_filename=binary_filename, source_dir=source_dir, scan_dirs=scan_dirs
|
|
@@ -104,7 +95,7 @@ def detectBinaryPathDLLsWindowsDependencyWalker(
|
|
|
104
95
|
return result
|
|
105
96
|
|
|
106
97
|
|
|
107
|
-
def _getScanDirectories(package_name, original_dir):
|
|
98
|
+
def _getScanDirectories(package_name, original_dir, use_path):
|
|
108
99
|
# TODO: Move PyWin32 specific stuff to yaml dll section
|
|
109
100
|
# pylint: disable=too-many-branches
|
|
110
101
|
|
|
@@ -113,10 +104,15 @@ def _getScanDirectories(package_name, original_dir):
|
|
|
113
104
|
if cache_key in _scan_dir_cache:
|
|
114
105
|
return _scan_dir_cache[cache_key]
|
|
115
106
|
|
|
116
|
-
scan_dirs = [sys.
|
|
107
|
+
scan_dirs = [os.path.dirname(sys.executable), getSystemPrefixPath()]
|
|
117
108
|
|
|
118
109
|
if package_name is not None:
|
|
119
|
-
scan_dirs.extend(
|
|
110
|
+
scan_dirs.extend(
|
|
111
|
+
getPackageSpecificDLLDirectories(
|
|
112
|
+
package_name=package_name,
|
|
113
|
+
consider_plugins=False,
|
|
114
|
+
)
|
|
115
|
+
)
|
|
120
116
|
|
|
121
117
|
if original_dir is not None:
|
|
122
118
|
scan_dirs.append(original_dir)
|
|
@@ -128,18 +124,23 @@ def _getScanDirectories(package_name, original_dir):
|
|
|
128
124
|
if py_win32_dir is not None:
|
|
129
125
|
scan_dirs.append(py_win32_dir)
|
|
130
126
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
if use_path:
|
|
128
|
+
for path_dir in os.environ["PATH"].split(";"):
|
|
129
|
+
if not os.path.isdir(path_dir):
|
|
130
|
+
continue
|
|
134
131
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
132
|
+
if areSamePaths(path_dir, os.path.join(os.environ["SYSTEMROOT"])):
|
|
133
|
+
continue
|
|
134
|
+
if areSamePaths(
|
|
135
|
+
path_dir, os.path.join(os.environ["SYSTEMROOT"], "System32")
|
|
136
|
+
):
|
|
137
|
+
continue
|
|
138
|
+
if areSamePaths(
|
|
139
|
+
path_dir, os.path.join(os.environ["SYSTEMROOT"], "SysWOW64")
|
|
140
|
+
):
|
|
141
|
+
continue
|
|
141
142
|
|
|
142
|
-
|
|
143
|
+
scan_dirs.append(path_dir)
|
|
143
144
|
|
|
144
145
|
result = []
|
|
145
146
|
|
|
@@ -169,6 +170,7 @@ def _getCacheFilename(
|
|
|
169
170
|
original_dir,
|
|
170
171
|
binary_filename,
|
|
171
172
|
package_name,
|
|
173
|
+
use_path,
|
|
172
174
|
):
|
|
173
175
|
original_filename = os.path.join(original_dir, os.path.basename(binary_filename))
|
|
174
176
|
original_filename = os.path.normcase(original_filename)
|
|
@@ -200,7 +202,27 @@ def _getCacheFilename(
|
|
|
200
202
|
# Take Nuitka version into account as well, ought to catch code changes.
|
|
201
203
|
hash_value.updateFromValues(version_string)
|
|
202
204
|
|
|
203
|
-
|
|
205
|
+
# Using PATH or not, should also be considered different.
|
|
206
|
+
if use_path:
|
|
207
|
+
hash_value.updateFromValues(os.getenv("PATH"))
|
|
208
|
+
|
|
209
|
+
cache_dir = os.path.join(getCacheDir("library_dependencies"), dependency_tool)
|
|
204
210
|
makePath(cache_dir)
|
|
205
211
|
|
|
206
212
|
return os.path.join(cache_dir, hash_value.asHexDigest())
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
216
|
+
# integrates with CPython, but also works on its own.
|
|
217
|
+
#
|
|
218
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
219
|
+
# you may not use this file except in compliance with the License.
|
|
220
|
+
# You may obtain a copy of the License at
|
|
221
|
+
#
|
|
222
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
223
|
+
#
|
|
224
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
225
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
226
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
227
|
+
# See the License for the specific language governing permissions and
|
|
228
|
+
# limitations under the License.
|