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
|
""" Nuitka distutils integration.
|
|
19
5
|
|
|
20
6
|
"""
|
|
@@ -34,6 +20,11 @@ from nuitka.importing.Importing import (
|
|
|
34
20
|
flushImportCache,
|
|
35
21
|
locateModule,
|
|
36
22
|
)
|
|
23
|
+
from nuitka.PythonVersions import python_version
|
|
24
|
+
from nuitka.reports.CompilationReportReader import (
|
|
25
|
+
getEmbeddedDataFilenames,
|
|
26
|
+
parseCompilationReport,
|
|
27
|
+
)
|
|
37
28
|
from nuitka.Tracing import wheel_logger
|
|
38
29
|
from nuitka.utils.Execution import check_call
|
|
39
30
|
from nuitka.utils.FileOperations import deleteFile, getFileList, renameFile
|
|
@@ -44,6 +35,7 @@ def setupNuitkaDistutilsCommands(dist, keyword, value):
|
|
|
44
35
|
# If the user project setup.py includes the key "build_with_nuitka=True" all
|
|
45
36
|
# build operations (build, bdist_wheel, install etc) will run via Nuitka.
|
|
46
37
|
# pylint: disable=unused-argument
|
|
38
|
+
# spell-checker: ignore cmdclass
|
|
47
39
|
|
|
48
40
|
if not value:
|
|
49
41
|
return
|
|
@@ -226,6 +218,9 @@ class build(distutils.command.build.build):
|
|
|
226
218
|
|
|
227
219
|
@staticmethod
|
|
228
220
|
def _parseOptionsEntry(option, value):
|
|
221
|
+
if option == "build_with_nuitka":
|
|
222
|
+
return
|
|
223
|
+
|
|
229
224
|
option = "--" + option.lstrip("-")
|
|
230
225
|
|
|
231
226
|
if type(value) is tuple and len(value) == 2 and value[0] == "setup.py":
|
|
@@ -244,7 +239,8 @@ class build(distutils.command.build.build):
|
|
|
244
239
|
yield "%s=%s" % (option, value)
|
|
245
240
|
|
|
246
241
|
def _build(self, build_lib):
|
|
247
|
-
# High complexity,
|
|
242
|
+
# High complexity,
|
|
243
|
+
# pylint: disable=too-many-branches,too-many-locals,too-many-statements
|
|
248
244
|
|
|
249
245
|
old_dir = os.getcwd()
|
|
250
246
|
|
|
@@ -262,6 +258,8 @@ class build(distutils.command.build.build):
|
|
|
262
258
|
# Search in the build directory preferably.
|
|
263
259
|
addMainScriptDirectory(main_package_dir)
|
|
264
260
|
|
|
261
|
+
embedded_data_files = set()
|
|
262
|
+
|
|
265
263
|
for is_package, module_name in self._findBuildTasks():
|
|
266
264
|
# Nuitka wants the main package by filename, probably we should stop
|
|
267
265
|
# needing that.
|
|
@@ -289,7 +287,12 @@ class build(distutils.command.build.build):
|
|
|
289
287
|
"--enable-plugin=pylint-warnings",
|
|
290
288
|
"--output-dir=%s" % output_dir,
|
|
291
289
|
"--nofollow-import-to=*.tests",
|
|
290
|
+
"--nowarn-mnemonic=compiled-package-hidden-by-package",
|
|
292
291
|
"--remove-output",
|
|
292
|
+
# Note: For when we are debugging module mode of Nuitka, not for general use.
|
|
293
|
+
# "--debug",
|
|
294
|
+
# "--trace",
|
|
295
|
+
# "--python-flag=-v"
|
|
293
296
|
]
|
|
294
297
|
|
|
295
298
|
if package_name is not None:
|
|
@@ -306,13 +309,17 @@ class build(distutils.command.build.build):
|
|
|
306
309
|
else:
|
|
307
310
|
command.append("--include-module=%s" % include_package_name)
|
|
308
311
|
|
|
309
|
-
toml_filename = os.
|
|
312
|
+
toml_filename = os.getenv("NUITKA_TOML_FILE")
|
|
310
313
|
if toml_filename:
|
|
311
314
|
# Import toml parser like "build" module does.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
315
|
+
if python_version >= 0x3B0:
|
|
316
|
+
# stdlib only for 3.11, pylint: disable=I0021,import-error
|
|
317
|
+
from tomllib import loads as toml_loads
|
|
318
|
+
else:
|
|
319
|
+
try:
|
|
320
|
+
from tomli import loads as toml_loads
|
|
321
|
+
except ImportError:
|
|
322
|
+
from toml import loads as toml_loads
|
|
316
323
|
|
|
317
324
|
# Cannot use FileOperations.getFileContents() here, because of non-Nuitka process
|
|
318
325
|
# pylint: disable=unspecified-encoding
|
|
@@ -323,12 +330,30 @@ class build(distutils.command.build.build):
|
|
|
323
330
|
for option, value in toml_options.get("nuitka", {}).items():
|
|
324
331
|
command.extend(self._parseOptionsEntry(option, value))
|
|
325
332
|
|
|
333
|
+
for option, value in (
|
|
334
|
+
toml_options.get("tool", {}).get("nuitka", {}).items()
|
|
335
|
+
):
|
|
336
|
+
command.extend(self._parseOptionsEntry(option, value))
|
|
337
|
+
|
|
338
|
+
report_filename = None
|
|
339
|
+
|
|
326
340
|
# Process any extra options from setuptools
|
|
327
341
|
if "nuitka" in self.distribution.command_options:
|
|
328
342
|
for option, value in self.distribution.command_options[
|
|
329
343
|
"nuitka"
|
|
330
344
|
].items():
|
|
331
|
-
|
|
345
|
+
for option in self._parseOptionsEntry(option, value):
|
|
346
|
+
command.append(option)
|
|
347
|
+
|
|
348
|
+
if option.startswith("--report="):
|
|
349
|
+
report_filename = option.split("=", 1)[1]
|
|
350
|
+
|
|
351
|
+
if report_filename is None:
|
|
352
|
+
command.append("--report=compilation-report.xml")
|
|
353
|
+
report_filename = "compilation-report.xml"
|
|
354
|
+
delete_report = True
|
|
355
|
+
else:
|
|
356
|
+
delete_report = False
|
|
332
357
|
|
|
333
358
|
command.append(main_filename)
|
|
334
359
|
|
|
@@ -341,17 +366,26 @@ class build(distutils.command.build.build):
|
|
|
341
366
|
"Finished compilation of '%s'." % module_name.asString(), style="green"
|
|
342
367
|
)
|
|
343
368
|
|
|
344
|
-
|
|
369
|
+
report = parseCompilationReport(report_filename)
|
|
345
370
|
|
|
346
|
-
|
|
371
|
+
embedded_data_files.update(getEmbeddedDataFilenames(report))
|
|
372
|
+
|
|
373
|
+
if delete_report:
|
|
374
|
+
os.unlink(report_filename)
|
|
375
|
+
|
|
376
|
+
self.build_lib = build_lib
|
|
347
377
|
|
|
348
378
|
# Remove Python code from build folder, that's our job now.
|
|
349
|
-
for
|
|
350
|
-
|
|
351
|
-
|
|
379
|
+
for filename in getFileList(
|
|
380
|
+
build_lib, only_suffixes=(".py", ".pyw", ".pyc", ".pyo")
|
|
381
|
+
):
|
|
382
|
+
os.unlink(filename)
|
|
352
383
|
|
|
353
|
-
|
|
354
|
-
|
|
384
|
+
# Remove data files from build folder, that's our job now too
|
|
385
|
+
for filename in embedded_data_files:
|
|
386
|
+
os.unlink(filename)
|
|
387
|
+
|
|
388
|
+
os.chdir(old_dir)
|
|
355
389
|
|
|
356
390
|
|
|
357
391
|
# Required by distutils, used as command name, pylint: disable=invalid-name
|
|
@@ -359,7 +393,8 @@ class install(distutils.command.install.install):
|
|
|
359
393
|
# pylint: disable=attribute-defined-outside-init
|
|
360
394
|
def finalize_options(self):
|
|
361
395
|
distutils.command.install.install.finalize_options(self)
|
|
362
|
-
# Ensure the purelib folder is not used
|
|
396
|
+
# Ensure the "purelib" folder is not used
|
|
397
|
+
# spell-checker: ignore purelib,platlib
|
|
363
398
|
self.install_lib = self.install_platlib
|
|
364
399
|
|
|
365
400
|
|
|
@@ -379,8 +414,8 @@ class bdist_nuitka(wheel.bdist_wheel.bdist_wheel):
|
|
|
379
414
|
wheel.bdist_wheel.bdist_wheel.finalize_options(self)
|
|
380
415
|
# Force module to use correct platform in name
|
|
381
416
|
self.root_is_pure = False
|
|
382
|
-
self.plat_name_supplied = self.plat_name is not None
|
|
383
417
|
|
|
418
|
+
# virtual method name, spell-checker: ignore wheelfile
|
|
384
419
|
def write_wheelfile(self, wheelfile_base, generator=None):
|
|
385
420
|
if generator is None:
|
|
386
421
|
from nuitka.Version import getNuitkaVersion
|
|
@@ -390,3 +425,19 @@ class bdist_nuitka(wheel.bdist_wheel.bdist_wheel):
|
|
|
390
425
|
wheel.bdist_wheel.bdist_wheel.write_wheelfile(
|
|
391
426
|
self, wheelfile_base=wheelfile_base, generator=generator
|
|
392
427
|
)
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
431
|
+
# integrates with CPython, but also works on its own.
|
|
432
|
+
#
|
|
433
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
434
|
+
# you may not use this file except in compliance with the License.
|
|
435
|
+
# You may obtain a copy of the License at
|
|
436
|
+
#
|
|
437
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
438
|
+
#
|
|
439
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
440
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
441
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
442
|
+
# See the License for the specific language governing permissions and
|
|
443
|
+
# limitations under the License.
|
nuitka/distutils/__init__.py
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Dummy file to make this directory a package. """
|
|
5
|
+
|
|
3
6
|
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
4
7
|
# integrates with CPython, but also works on its own.
|
|
5
8
|
#
|
|
@@ -14,5 +17,3 @@
|
|
|
14
17
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
18
|
# See the License for the specific language governing permissions and
|
|
16
19
|
# limitations under the License.
|
|
17
|
-
#
|
|
18
|
-
""" Dummy file to make this directory a package. """
|
|
@@ -1,5 +1,24 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Finalizations. Last steps directly before code creation is called.
|
|
5
|
+
|
|
6
|
+
Here the final tasks are executed. Things normally volatile during optimization
|
|
7
|
+
can be computed here, so the code generation can be quick and doesn't have to
|
|
8
|
+
check it many times.
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from nuitka.tree import Operations
|
|
13
|
+
|
|
14
|
+
from .FinalizeMarkups import FinalizeMarkups
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def prepareCodeGeneration(module):
|
|
18
|
+
visitor = FinalizeMarkups(module)
|
|
19
|
+
Operations.visitTree(module, visitor)
|
|
20
|
+
|
|
21
|
+
|
|
3
22
|
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
4
23
|
# integrates with CPython, but also works on its own.
|
|
5
24
|
#
|
|
@@ -14,19 +33,3 @@
|
|
|
14
33
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
34
|
# See the License for the specific language governing permissions and
|
|
16
35
|
# limitations under the License.
|
|
17
|
-
#
|
|
18
|
-
""" Finalizations. Last steps directly before code creation is called.
|
|
19
|
-
|
|
20
|
-
Here the final tasks are executed. Things normally volatile during optimization
|
|
21
|
-
can be computed here, so the code generation can be quick and doesn't have to
|
|
22
|
-
check it many times.
|
|
23
|
-
|
|
24
|
-
"""
|
|
25
|
-
from nuitka.tree import Operations
|
|
26
|
-
|
|
27
|
-
from .FinalizeMarkups import FinalizeMarkups
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def prepareCodeGeneration(tree):
|
|
31
|
-
visitor = FinalizeMarkups()
|
|
32
|
-
Operations.visitTree(tree, visitor)
|
|
@@ -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
|
""" Finalize the markups
|
|
19
5
|
|
|
20
6
|
Set flags on functions and classes to indicate if a locals dict is really
|
|
@@ -31,21 +17,15 @@ are in another context.
|
|
|
31
17
|
|
|
32
18
|
"""
|
|
33
19
|
|
|
34
|
-
|
|
35
20
|
from nuitka import Tracing
|
|
36
|
-
from nuitka.__past__ import unicode
|
|
37
|
-
from nuitka.containers.OrderedSets import OrderedSet
|
|
38
21
|
from nuitka.PythonVersions import python_version
|
|
39
22
|
from nuitka.tree.Operations import VisitorNoopMixin
|
|
40
23
|
|
|
41
|
-
imported_names = OrderedSet()
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def getImportedNames():
|
|
45
|
-
return imported_names
|
|
46
|
-
|
|
47
24
|
|
|
48
25
|
class FinalizeMarkups(VisitorNoopMixin):
|
|
26
|
+
def __init__(self, module):
|
|
27
|
+
self.module = module
|
|
28
|
+
|
|
49
29
|
def onEnterNode(self, node):
|
|
50
30
|
try:
|
|
51
31
|
self._onEnterNode(node)
|
|
@@ -60,36 +40,17 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
60
40
|
# This has many different things it deals with, so there need to be a
|
|
61
41
|
# lot of branches and statements, pylint: disable=too-many-branches
|
|
62
42
|
|
|
63
|
-
# Also all self specific things have been done on the outside,
|
|
64
|
-
# pylint: disable=no-self-use
|
|
65
43
|
if node.isStatementReturn() or node.isStatementGeneratorReturn():
|
|
66
|
-
search = node
|
|
67
|
-
|
|
68
|
-
in_tried_block = False
|
|
69
|
-
|
|
70
44
|
# Search up to the containing function, and check for a try/finally
|
|
71
45
|
# containing the "return" statement.
|
|
72
|
-
search =
|
|
46
|
+
search = node.getParentReturnConsumer()
|
|
73
47
|
|
|
74
48
|
if (
|
|
75
49
|
search.isExpressionGeneratorObjectBody()
|
|
76
50
|
or search.isExpressionCoroutineObjectBody()
|
|
77
51
|
or search.isExpressionAsyncgenObjectBody()
|
|
78
52
|
):
|
|
79
|
-
|
|
80
|
-
search.markAsNeedsGeneratorReturnHandling(2)
|
|
81
|
-
else:
|
|
82
|
-
search.markAsNeedsGeneratorReturnHandling(1)
|
|
83
|
-
|
|
84
|
-
if node.isExpressionBuiltinImport() and node.follow_attempted:
|
|
85
|
-
module_name = node.subnode_name
|
|
86
|
-
|
|
87
|
-
if module_name.isCompileTimeConstant():
|
|
88
|
-
imported_module_name = module_name.getCompileTimeConstant()
|
|
89
|
-
|
|
90
|
-
if type(imported_module_name) in (str, unicode):
|
|
91
|
-
if imported_module_name:
|
|
92
|
-
imported_names.add(imported_module_name)
|
|
53
|
+
search.markAsNeedsGeneratorReturnHandling()
|
|
93
54
|
|
|
94
55
|
if node.isExpressionFunctionCreation():
|
|
95
56
|
if (
|
|
@@ -105,11 +66,10 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
105
66
|
function_body = node.getFunctionBody()
|
|
106
67
|
parent_module = function_body.getParentModule()
|
|
107
68
|
|
|
108
|
-
|
|
109
|
-
if node_module is not parent_module:
|
|
69
|
+
if self.module is not parent_module:
|
|
110
70
|
function_body.markAsCrossModuleUsed()
|
|
111
71
|
|
|
112
|
-
|
|
72
|
+
self.module.addCrossUsedFunction(function_body)
|
|
113
73
|
|
|
114
74
|
if node.isStatementAssignmentVariable():
|
|
115
75
|
target_var = node.getVariable()
|
|
@@ -118,10 +78,7 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
118
78
|
if assign_source.isExpressionOperationBinary():
|
|
119
79
|
left_arg = assign_source.subnode_left
|
|
120
80
|
|
|
121
|
-
if (
|
|
122
|
-
left_arg.isExpressionVariableRef()
|
|
123
|
-
or left_arg.isExpressionTempVariableRef()
|
|
124
|
-
):
|
|
81
|
+
if left_arg.isExpressionVariableRefOrTempVariableRef():
|
|
125
82
|
if assign_source.subnode_left.getVariable() is target_var:
|
|
126
83
|
if assign_source.isInplaceSuspect():
|
|
127
84
|
node.markAsInplaceSuspect()
|
|
@@ -129,6 +86,9 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
129
86
|
# TODO: This might be bad.
|
|
130
87
|
assign_source.removeMarkAsInplaceSuspect()
|
|
131
88
|
|
|
89
|
+
if target_var.isModuleVariable():
|
|
90
|
+
pass
|
|
91
|
+
|
|
132
92
|
if python_version < 0x300 and node.isStatementPublishException():
|
|
133
93
|
node.getParentStatementsFrame().markAsFrameExceptionPreserving()
|
|
134
94
|
|
|
@@ -136,7 +96,7 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
136
96
|
if (
|
|
137
97
|
node.isExpressionYield()
|
|
138
98
|
or node.isExpressionYieldFrom()
|
|
139
|
-
or node.
|
|
99
|
+
or node.isExpressionYieldFromAwaitable()
|
|
140
100
|
):
|
|
141
101
|
search = node.getParent()
|
|
142
102
|
|
|
@@ -158,3 +118,19 @@ class FinalizeMarkups(VisitorNoopMixin):
|
|
|
158
118
|
):
|
|
159
119
|
node.markAsExceptionPreserving()
|
|
160
120
|
break
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
124
|
+
# integrates with CPython, but also works on its own.
|
|
125
|
+
#
|
|
126
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
127
|
+
# you may not use this file except in compliance with the License.
|
|
128
|
+
# You may obtain a copy of the License at
|
|
129
|
+
#
|
|
130
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
131
|
+
#
|
|
132
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
133
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
134
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
135
|
+
# See the License for the specific language governing permissions and
|
|
136
|
+
# limitations under the License.
|
nuitka/finalizations/__init__.py
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Dummy file to make this directory a package. """
|
|
5
|
+
|
|
3
6
|
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
4
7
|
# integrates with CPython, but also works on its own.
|
|
5
8
|
#
|
|
@@ -14,5 +17,3 @@
|
|
|
14
17
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
18
|
# See the License for the specific language governing permissions and
|
|
16
19
|
# limitations under the License.
|
|
17
|
-
#
|
|
18
|
-
""" Dummy file to make this directory a package. """
|
nuitka/freezer/DependsExe.py
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
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
|
""" Interface to depends.exe on Windows.
|
|
19
5
|
|
|
20
|
-
We use depends.exe to investigate needed DLLs of Python DLLs.
|
|
6
|
+
We use "depends.exe" to investigate needed DLLs of Python DLLs.
|
|
21
7
|
|
|
22
8
|
"""
|
|
23
9
|
|
|
24
10
|
import os
|
|
25
11
|
|
|
12
|
+
# pylint: disable=I0021,import-error,redefined-builtin
|
|
13
|
+
from nuitka.__past__ import WindowsError
|
|
26
14
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
27
15
|
from nuitka.Options import assumeYesForDownloads
|
|
28
16
|
from nuitka.Tracing import inclusion_logger
|
|
@@ -32,7 +20,10 @@ from nuitka.utils.FileOperations import (
|
|
|
32
20
|
deleteFile,
|
|
33
21
|
getExternalUsePath,
|
|
34
22
|
getFileContentByLine,
|
|
23
|
+
getNormalizedPath,
|
|
24
|
+
getWindowsLongPathName,
|
|
35
25
|
isFilenameBelowPath,
|
|
26
|
+
isFilesystemEncodable,
|
|
36
27
|
putTextFileContents,
|
|
37
28
|
withFileLock,
|
|
38
29
|
)
|
|
@@ -52,9 +43,11 @@ def getDependsExePath():
|
|
|
52
43
|
depends_url = "https://dependencywalker.com/depends22_x64.zip"
|
|
53
44
|
|
|
54
45
|
return getCachedDownload(
|
|
46
|
+
name="dependency walker",
|
|
55
47
|
url=depends_url,
|
|
56
48
|
is_arch_specific=getArchitecture(),
|
|
57
49
|
binary="depends.exe",
|
|
50
|
+
unzip=True,
|
|
58
51
|
flatten=True,
|
|
59
52
|
specificity="", # Note: If there ever was an update, put version here.
|
|
60
53
|
message="""\
|
|
@@ -75,6 +68,7 @@ def _attemptToFindNotFoundDLL(dll_filename):
|
|
|
75
68
|
if dll_filename in currently_loaded_dlls:
|
|
76
69
|
return currently_loaded_dlls[dll_filename]
|
|
77
70
|
|
|
71
|
+
# Lets try the Windows system, spell-checker: ignore systemroot
|
|
78
72
|
dll_filename = os.path.join(
|
|
79
73
|
os.environ["SYSTEMROOT"],
|
|
80
74
|
"SysWOW64" if getArchitecture() == "x86_64" else "System32",
|
|
@@ -135,25 +129,40 @@ def _parseDependsExeOutput2(lines):
|
|
|
135
129
|
else:
|
|
136
130
|
continue
|
|
137
131
|
|
|
138
|
-
|
|
132
|
+
# The executable itself is of course exempted. We cannot check its path
|
|
133
|
+
# because depends.exe mistreats unicode paths.
|
|
134
|
+
if first:
|
|
135
|
+
first = False
|
|
136
|
+
continue
|
|
139
137
|
|
|
140
138
|
dll_filename = os.path.abspath(dll_filename)
|
|
141
139
|
|
|
140
|
+
# Ignore errors trying to resolve the filename. Sometimes Chinese
|
|
141
|
+
# directory paths do not resolve to long filenames.
|
|
142
|
+
try:
|
|
143
|
+
dll_filename = getWindowsLongPathName(dll_filename)
|
|
144
|
+
except WindowsError:
|
|
145
|
+
pass
|
|
146
|
+
|
|
142
147
|
dll_name = os.path.basename(dll_filename)
|
|
143
148
|
|
|
144
149
|
# Ignore this runtime DLL of Python2, will be coming via manifest.
|
|
150
|
+
# spell-checker: ignore msvcr90
|
|
145
151
|
if dll_name in ("msvcr90.dll",):
|
|
146
152
|
continue
|
|
147
153
|
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
if
|
|
151
|
-
|
|
154
|
+
# Ignore API DLLs, they can come in from PATH, but we do not want to
|
|
155
|
+
# include them.
|
|
156
|
+
if dll_name.startswith("api-ms-win-"):
|
|
157
|
+
continue
|
|
158
|
+
|
|
159
|
+
# Ignore UCRT runtime, this must come from OS, spell-checker: ignore ucrtbase
|
|
160
|
+
if dll_name == "ucrtbase.dll":
|
|
152
161
|
continue
|
|
153
162
|
|
|
154
163
|
assert os.path.isfile(dll_filename), (dll_filename, line)
|
|
155
164
|
|
|
156
|
-
result.add(os.path.normcase(
|
|
165
|
+
result.add(getNormalizedPath(os.path.normcase(dll_filename)))
|
|
157
166
|
|
|
158
167
|
return result
|
|
159
168
|
|
|
@@ -163,10 +172,14 @@ def parseDependsExeOutput(filename):
|
|
|
163
172
|
|
|
164
173
|
|
|
165
174
|
def detectDLLsWithDependencyWalker(binary_filename, source_dir, scan_dirs):
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
)
|
|
175
|
+
source_dir = getExternalUsePath(source_dir)
|
|
176
|
+
temp_base_name = os.path.basename(binary_filename)
|
|
177
|
+
|
|
178
|
+
if not isFilesystemEncodable(temp_base_name):
|
|
179
|
+
temp_base_name = "dependency_walker"
|
|
180
|
+
|
|
181
|
+
dwp_filename = os.path.join(source_dir, temp_base_name + ".dwp")
|
|
182
|
+
output_filename = os.path.join(source_dir, temp_base_name + ".depends")
|
|
170
183
|
|
|
171
184
|
# User query should only happen once if at all.
|
|
172
185
|
with withFileLock(
|
|
@@ -204,14 +217,15 @@ SxS
|
|
|
204
217
|
"-f1",
|
|
205
218
|
"-pa1",
|
|
206
219
|
"-ps1",
|
|
207
|
-
binary_filename,
|
|
220
|
+
getExternalUsePath(binary_filename),
|
|
208
221
|
),
|
|
209
222
|
external_cwd=True,
|
|
210
223
|
)
|
|
211
224
|
|
|
212
225
|
if not os.path.exists(output_filename):
|
|
213
226
|
inclusion_logger.sysexit(
|
|
214
|
-
"Error, 'depends.exe' failed to produce expected output."
|
|
227
|
+
"Error, 'depends.exe' failed to produce expected output for binary '%s'."
|
|
228
|
+
% binary_filename
|
|
215
229
|
)
|
|
216
230
|
|
|
217
231
|
# Opening the result under lock, so it is not getting locked by new processes.
|
|
@@ -224,3 +238,19 @@ SxS
|
|
|
224
238
|
deleteFile(dwp_filename, must_exist=True)
|
|
225
239
|
|
|
226
240
|
return result
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
244
|
+
# integrates with CPython, but also works on its own.
|
|
245
|
+
#
|
|
246
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
247
|
+
# you may not use this file except in compliance with the License.
|
|
248
|
+
# You may obtain a copy of the License at
|
|
249
|
+
#
|
|
250
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
251
|
+
#
|
|
252
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
253
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
254
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
255
|
+
# See the License for the specific language governing permissions and
|
|
256
|
+
# limitations under the License.
|