Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
nuitka/MainControl.py
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# integrates with CPython, but also works on its own.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
#
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
18
4
|
""" This is the main actions of Nuitka.
|
|
19
5
|
|
|
20
6
|
This can do all the steps to translate one module to a target language using
|
|
@@ -28,8 +14,15 @@ import os
|
|
|
28
14
|
import sys
|
|
29
15
|
|
|
30
16
|
from nuitka.build.DataComposerInterface import runDataComposer
|
|
31
|
-
from nuitka.build.SconsUtils import
|
|
32
|
-
|
|
17
|
+
from nuitka.build.SconsUtils import (
|
|
18
|
+
getSconsReportValue,
|
|
19
|
+
readSconsErrorReport,
|
|
20
|
+
readSconsReport,
|
|
21
|
+
)
|
|
22
|
+
from nuitka.code_generation.ConstantCodes import (
|
|
23
|
+
addDistributionMetadataValue,
|
|
24
|
+
getDistributionMetadataValues,
|
|
25
|
+
)
|
|
33
26
|
from nuitka.freezer.IncludedDataFiles import (
|
|
34
27
|
addIncludedDataFilesFromFileOptions,
|
|
35
28
|
addIncludedDataFilesFromPackageOptions,
|
|
@@ -48,9 +41,11 @@ from nuitka.Options import (
|
|
|
48
41
|
hasPythonFlagIsolated,
|
|
49
42
|
hasPythonFlagNoAnnotations,
|
|
50
43
|
hasPythonFlagNoAsserts,
|
|
44
|
+
hasPythonFlagNoBytecodeRuntimeCache,
|
|
51
45
|
hasPythonFlagNoDocStrings,
|
|
52
46
|
hasPythonFlagNoWarnings,
|
|
53
47
|
hasPythonFlagUnbuffered,
|
|
48
|
+
isExperimental,
|
|
54
49
|
)
|
|
55
50
|
from nuitka.plugins.Plugins import Plugins
|
|
56
51
|
from nuitka.PostProcessing import executePostProcessing
|
|
@@ -61,19 +56,21 @@ from nuitka.Progress import (
|
|
|
61
56
|
)
|
|
62
57
|
from nuitka.PythonFlavors import (
|
|
63
58
|
isApplePython,
|
|
59
|
+
isArchPackagePython,
|
|
64
60
|
isDebianPackagePython,
|
|
65
61
|
isFedoraPackagePython,
|
|
66
62
|
isNuitkaPython,
|
|
67
63
|
isPyenvPython,
|
|
68
64
|
)
|
|
69
65
|
from nuitka.PythonVersions import (
|
|
66
|
+
getModuleLinkerLibs,
|
|
70
67
|
getPythonABI,
|
|
71
68
|
getSupportedPythonVersions,
|
|
72
69
|
python_version,
|
|
73
70
|
python_version_str,
|
|
74
71
|
)
|
|
75
72
|
from nuitka.Serialization import ConstantAccessor
|
|
76
|
-
from nuitka.Tracing import general, inclusion_logger
|
|
73
|
+
from nuitka.Tracing import general, inclusion_logger, pgo_logger
|
|
77
74
|
from nuitka.tree import SyntaxErrors
|
|
78
75
|
from nuitka.tree.ReformulationMultidist import createMultidistMainSourceCode
|
|
79
76
|
from nuitka.utils import InstanceCounters
|
|
@@ -91,19 +88,21 @@ from nuitka.utils.FileOperations import (
|
|
|
91
88
|
removeDirectory,
|
|
92
89
|
resetDirectory,
|
|
93
90
|
)
|
|
94
|
-
from nuitka.utils.Importing import
|
|
91
|
+
from nuitka.utils.Importing import (
|
|
92
|
+
getPackageDirFilename,
|
|
93
|
+
getSharedLibrarySuffix,
|
|
94
|
+
)
|
|
95
95
|
from nuitka.utils.MemoryUsage import reportMemoryUsage, showMemoryTrace
|
|
96
96
|
from nuitka.utils.ModuleNames import ModuleName
|
|
97
97
|
from nuitka.utils.ReExecute import callExecProcess, reExecuteNuitka
|
|
98
98
|
from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
|
|
99
|
-
from nuitka.utils.Utils import isMacOS, isWin32Windows
|
|
99
|
+
from nuitka.utils.Utils import getArchitecture, isMacOS, isWin32Windows
|
|
100
100
|
from nuitka.Version import getCommercialVersion, getNuitkaVersion
|
|
101
101
|
|
|
102
102
|
from . import ModuleRegistry, Options, OutputDirectories
|
|
103
103
|
from .build.SconsInterface import (
|
|
104
104
|
asBoolStr,
|
|
105
105
|
cleanSconsDirectory,
|
|
106
|
-
getSconsDataPath,
|
|
107
106
|
runScons,
|
|
108
107
|
setCommonSconsOptions,
|
|
109
108
|
)
|
|
@@ -123,16 +122,6 @@ from .tree.SourceHandling import writeSourceCode
|
|
|
123
122
|
from .TreeXML import dumpTreeXMLToFile
|
|
124
123
|
|
|
125
124
|
|
|
126
|
-
def _setupFromMainFilenames():
|
|
127
|
-
main_filenames = Options.getMainEntryPointFilenames()
|
|
128
|
-
for filename in main_filenames:
|
|
129
|
-
# Inform the importing layer about the main script directory, so it can use
|
|
130
|
-
# it when attempting to follow imports.
|
|
131
|
-
Importing.addMainScriptDirectory(
|
|
132
|
-
main_dir=os.path.dirname(os.path.abspath(filename))
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
|
|
136
125
|
def _createMainModule():
|
|
137
126
|
"""Create a node tree.
|
|
138
127
|
|
|
@@ -142,24 +131,19 @@ def _createMainModule():
|
|
|
142
131
|
directory paths.
|
|
143
132
|
|
|
144
133
|
"""
|
|
145
|
-
# Many cases to deal with, pylint: disable=too-many-branches
|
|
134
|
+
# Many cases and details to deal with, pylint: disable=too-many-branches
|
|
146
135
|
|
|
147
136
|
Plugins.onBeforeCodeParsing()
|
|
148
137
|
|
|
149
|
-
main_filenames = Options.getMainEntryPointFilenames()
|
|
150
|
-
|
|
151
138
|
# First, build the raw node tree from the source code.
|
|
152
|
-
if
|
|
139
|
+
if Options.isMultidistMode():
|
|
153
140
|
assert not Options.shallMakeModule()
|
|
154
141
|
|
|
155
142
|
main_module = buildMainModuleTree(
|
|
156
|
-
|
|
157
|
-
filename=main_filenames[0],
|
|
158
|
-
source_code=createMultidistMainSourceCode(main_filenames),
|
|
143
|
+
source_code=createMultidistMainSourceCode(),
|
|
159
144
|
)
|
|
160
145
|
else:
|
|
161
146
|
main_module = buildMainModuleTree(
|
|
162
|
-
filename=main_filenames[0],
|
|
163
147
|
source_code=None,
|
|
164
148
|
)
|
|
165
149
|
|
|
@@ -174,7 +158,11 @@ def _createMainModule():
|
|
|
174
158
|
% distribution_name
|
|
175
159
|
)
|
|
176
160
|
|
|
177
|
-
addDistributionMetadataValue(
|
|
161
|
+
addDistributionMetadataValue(
|
|
162
|
+
distribution_name=distribution_name,
|
|
163
|
+
distribution=distribution,
|
|
164
|
+
reason="user requested",
|
|
165
|
+
)
|
|
178
166
|
|
|
179
167
|
# First remove old object files and old generated files, old binary or
|
|
180
168
|
# module, and standalone mode program directory if any, they can only do
|
|
@@ -187,11 +175,19 @@ def _createMainModule():
|
|
|
187
175
|
# Prepare the ".dist" directory, throwing away what was there before.
|
|
188
176
|
if Options.isStandaloneMode():
|
|
189
177
|
standalone_dir = OutputDirectories.getStandaloneDirectoryPath(bundle=False)
|
|
190
|
-
resetDirectory(
|
|
178
|
+
resetDirectory(
|
|
179
|
+
path=standalone_dir,
|
|
180
|
+
logger=general,
|
|
181
|
+
ignore_errors=True,
|
|
182
|
+
extra_recommendation="Stop previous binary.",
|
|
183
|
+
)
|
|
191
184
|
|
|
192
185
|
if Options.shallCreateAppBundle():
|
|
193
186
|
resetDirectory(
|
|
194
|
-
path=changeFilenameExtension(standalone_dir, ".app"),
|
|
187
|
+
path=changeFilenameExtension(standalone_dir, ".app"),
|
|
188
|
+
logger=general,
|
|
189
|
+
ignore_errors=True,
|
|
190
|
+
extra_recommendation=None,
|
|
195
191
|
)
|
|
196
192
|
|
|
197
193
|
# Delete result file, to avoid confusion with previous build and to
|
|
@@ -246,7 +242,9 @@ def _createMainModule():
|
|
|
246
242
|
)
|
|
247
243
|
|
|
248
244
|
Recursion.checkPluginSinglePath(
|
|
249
|
-
plugin_filename=module_filename,
|
|
245
|
+
plugin_filename=module_filename,
|
|
246
|
+
module_package=module_name.getPackageName(),
|
|
247
|
+
package_only=True,
|
|
250
248
|
)
|
|
251
249
|
|
|
252
250
|
# Allow plugins to add more modules based on the initial set being complete.
|
|
@@ -262,6 +260,14 @@ def _createMainModule():
|
|
|
262
260
|
if Options.isStandaloneMode():
|
|
263
261
|
checkFreezingModuleSet()
|
|
264
262
|
|
|
263
|
+
# Check if distribution meta data is included, that cannot be used.
|
|
264
|
+
for distribution_name, meta_data_value in getDistributionMetadataValues():
|
|
265
|
+
if not ModuleRegistry.hasDoneModule(meta_data_value.module_name):
|
|
266
|
+
inclusion_logger.sysexit(
|
|
267
|
+
"Error, including metadata for distribution '%s' without including related package '%s'."
|
|
268
|
+
% (distribution_name, meta_data_value.module_name)
|
|
269
|
+
)
|
|
270
|
+
|
|
265
271
|
# Allow plugins to comment on final module set.
|
|
266
272
|
Plugins.onModuleCompleteSet()
|
|
267
273
|
|
|
@@ -280,7 +286,7 @@ def dumpTreeXML():
|
|
|
280
286
|
filename = Options.getXMLDumpOutputFilename()
|
|
281
287
|
|
|
282
288
|
if filename is not None:
|
|
283
|
-
with openTextFile(filename, "
|
|
289
|
+
with openTextFile(filename, "wb") as output_file:
|
|
284
290
|
# XML output only.
|
|
285
291
|
for module in ModuleRegistry.getDoneModules():
|
|
286
292
|
dumpTreeXMLToFile(tree=module.asXml(), output_file=output_file)
|
|
@@ -524,11 +530,11 @@ def _runCPgoBinary():
|
|
|
524
530
|
source_dir=OutputDirectories.getSourceDirectoryPath(), key="PATH"
|
|
525
531
|
),
|
|
526
532
|
):
|
|
527
|
-
|
|
533
|
+
exit_code_pgo = _runPgoBinary()
|
|
528
534
|
|
|
529
535
|
pgo_data_collected = os.path.exists(msvc_pgc_filename)
|
|
530
536
|
else:
|
|
531
|
-
|
|
537
|
+
exit_code_pgo = _runPgoBinary()
|
|
532
538
|
|
|
533
539
|
# gcc file suffix, spell-checker: ignore gcda
|
|
534
540
|
gcc_constants_pgo_filename = os.path.join(
|
|
@@ -537,12 +543,21 @@ def _runCPgoBinary():
|
|
|
537
543
|
|
|
538
544
|
pgo_data_collected = os.path.exists(gcc_constants_pgo_filename)
|
|
539
545
|
|
|
546
|
+
if exit_code_pgo != 0:
|
|
547
|
+
pgo_logger.warning(
|
|
548
|
+
"""\
|
|
549
|
+
Error, the C PGO compiled program error exited. Make sure it works \
|
|
550
|
+
fully before using '--pgo-c' option."""
|
|
551
|
+
)
|
|
552
|
+
|
|
540
553
|
if not pgo_data_collected:
|
|
541
|
-
|
|
542
|
-
"
|
|
554
|
+
pgo_logger.sysexit(
|
|
555
|
+
"""\
|
|
556
|
+
Error, no C PGO compiled program did not produce expected information, \
|
|
557
|
+
did the created binary run at all?"""
|
|
543
558
|
)
|
|
544
559
|
|
|
545
|
-
|
|
560
|
+
pgo_logger.info("Successfully collected C level PGO information.", style="blue")
|
|
546
561
|
|
|
547
562
|
|
|
548
563
|
def _runPythonPgoBinary():
|
|
@@ -553,11 +568,14 @@ def _runPythonPgoBinary():
|
|
|
553
568
|
pgo_filename = OutputDirectories.getPgoRunInputFilename()
|
|
554
569
|
|
|
555
570
|
with withEnvironmentVarOverridden("NUITKA_PGO_OUTPUT", pgo_filename):
|
|
556
|
-
|
|
571
|
+
exit_code = _runPgoBinary()
|
|
557
572
|
|
|
558
573
|
if not os.path.exists(pgo_filename):
|
|
559
574
|
general.sysexit(
|
|
560
|
-
"
|
|
575
|
+
"""\
|
|
576
|
+
Error, no Python PGO information produced, did the created binary
|
|
577
|
+
run (exit code %d) as expected?"""
|
|
578
|
+
% exit_code
|
|
561
579
|
)
|
|
562
580
|
|
|
563
581
|
return pgo_filename
|
|
@@ -569,19 +587,18 @@ def runSconsBackend():
|
|
|
569
587
|
# pylint: disable=too-many-branches,too-many-statements
|
|
570
588
|
|
|
571
589
|
options = {
|
|
572
|
-
"result_name": OutputDirectories.getResultBasePath(onefile=False),
|
|
573
590
|
"source_dir": OutputDirectories.getSourceDirectoryPath(),
|
|
574
591
|
"nuitka_python": asBoolStr(isNuitkaPython()),
|
|
575
592
|
"debug_mode": asBoolStr(Options.is_debug),
|
|
593
|
+
"debugger_mode": asBoolStr(Options.shallRunInDebugger()),
|
|
576
594
|
"python_debug": asBoolStr(Options.shallUsePythonDebug()),
|
|
577
595
|
"module_mode": asBoolStr(Options.shallMakeModule()),
|
|
578
596
|
"full_compat": asBoolStr(Options.is_full_compat),
|
|
579
597
|
"experimental": ",".join(Options.getExperimentalIndications()),
|
|
580
598
|
"trace_mode": asBoolStr(Options.shallTraceExecution()),
|
|
581
|
-
"python_version": python_version_str,
|
|
582
|
-
"nuitka_src": getSconsDataPath(),
|
|
583
599
|
"file_reference_mode": Options.getFileReferenceMode(),
|
|
584
600
|
"module_count": "%d" % len(ModuleRegistry.getDoneModules()),
|
|
601
|
+
"gil_mode": asBoolStr(Options.isPythonWithGil()),
|
|
585
602
|
}
|
|
586
603
|
|
|
587
604
|
if Options.isLowMemory():
|
|
@@ -602,13 +619,12 @@ def runSconsBackend():
|
|
|
602
619
|
|
|
603
620
|
if isDebianPackagePython():
|
|
604
621
|
options["debian_python"] = asBoolStr(True)
|
|
605
|
-
|
|
606
622
|
if isFedoraPackagePython():
|
|
607
623
|
options["fedora_python"] = asBoolStr(True)
|
|
608
|
-
|
|
624
|
+
if isArchPackagePython():
|
|
625
|
+
options["arch_python"] = asBoolStr(True)
|
|
609
626
|
if isApplePython():
|
|
610
627
|
options["apple_python"] = asBoolStr(True)
|
|
611
|
-
|
|
612
628
|
if isPyenvPython():
|
|
613
629
|
options["pyenv_python"] = asBoolStr(True)
|
|
614
630
|
|
|
@@ -621,12 +637,20 @@ def runSconsBackend():
|
|
|
621
637
|
if Options.isOnefileTempDirMode():
|
|
622
638
|
options["onefile_temp_mode"] = asBoolStr(True)
|
|
623
639
|
|
|
640
|
+
# TODO: Some things are going to hate that, we might need to bundle
|
|
641
|
+
# for accelerated mode still.
|
|
642
|
+
if Options.shallCreateAppBundle():
|
|
643
|
+
options["macos_bundle_mode"] = asBoolStr(True)
|
|
644
|
+
|
|
624
645
|
if Options.getForcedStdoutPath():
|
|
625
646
|
options["forced_stdout_path"] = Options.getForcedStdoutPath()
|
|
626
647
|
|
|
627
648
|
if Options.getForcedStderrPath():
|
|
628
649
|
options["forced_stderr_path"] = Options.getForcedStderrPath()
|
|
629
650
|
|
|
651
|
+
if Options.isProfile():
|
|
652
|
+
options["profile_mode"] = asBoolStr(True)
|
|
653
|
+
|
|
630
654
|
if Options.shallTreatUninstalledPython():
|
|
631
655
|
options["uninstalled_python"] = asBoolStr(True)
|
|
632
656
|
|
|
@@ -635,9 +659,6 @@ def runSconsBackend():
|
|
|
635
659
|
len(ModuleRegistry.getUncompiledTechnicalModules())
|
|
636
660
|
)
|
|
637
661
|
|
|
638
|
-
if Options.isProfile():
|
|
639
|
-
options["profile_mode"] = asBoolStr(True)
|
|
640
|
-
|
|
641
662
|
if hasPythonFlagNoWarnings():
|
|
642
663
|
options["no_python_warnings"] = asBoolStr(True)
|
|
643
664
|
|
|
@@ -665,7 +686,7 @@ def runSconsBackend():
|
|
|
665
686
|
if sys.flags.bytes_warning:
|
|
666
687
|
options["python_sysflag_bytes_warning"] = asBoolStr(True)
|
|
667
688
|
|
|
668
|
-
if int(os.
|
|
689
|
+
if int(os.getenv("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
|
|
669
690
|
options["python_sysflag_no_site"] = asBoolStr(True)
|
|
670
691
|
|
|
671
692
|
if Options.hasPythonFlagTraceImports():
|
|
@@ -680,6 +701,9 @@ def runSconsBackend():
|
|
|
680
701
|
if python_version >= 0x370 and sys.flags.utf8_mode:
|
|
681
702
|
options["python_sysflag_utf8"] = asBoolStr(True)
|
|
682
703
|
|
|
704
|
+
if hasPythonFlagNoBytecodeRuntimeCache():
|
|
705
|
+
options["python_sysflag_unbuffered"] = asBoolStr(True)
|
|
706
|
+
|
|
683
707
|
if hasPythonFlagUnbuffered():
|
|
684
708
|
options["python_sysflag_unbuffered"] = asBoolStr(True)
|
|
685
709
|
|
|
@@ -691,14 +715,20 @@ def runSconsBackend():
|
|
|
691
715
|
options["abiflags"] = abiflags
|
|
692
716
|
|
|
693
717
|
if Options.shallMakeModule():
|
|
694
|
-
options["
|
|
718
|
+
options["result_exe"] = OutputDirectories.getResultBasePath(
|
|
719
|
+
onefile=False
|
|
720
|
+
) + getSharedLibrarySuffix(preferred=True)
|
|
721
|
+
|
|
722
|
+
link_module_libs = getModuleLinkerLibs()
|
|
723
|
+
if link_module_libs:
|
|
724
|
+
options["link_module_libs"] = ",".join(link_module_libs)
|
|
695
725
|
|
|
696
726
|
env_values = setCommonSconsOptions(options)
|
|
697
727
|
|
|
698
728
|
# Allow plugins to build definitions.
|
|
699
729
|
env_values.update(Plugins.getBuildDefinitions())
|
|
700
730
|
|
|
701
|
-
if Options.
|
|
731
|
+
if Options.shallCreatePythonPgoInput():
|
|
702
732
|
options["pgo_mode"] = "python"
|
|
703
733
|
|
|
704
734
|
result = runScons(
|
|
@@ -717,11 +747,11 @@ def runSconsBackend():
|
|
|
717
747
|
return True, options
|
|
718
748
|
|
|
719
749
|
# Need to restart compilation from scratch here.
|
|
720
|
-
if Options.
|
|
750
|
+
if Options.isCPgoMode():
|
|
721
751
|
# For C level PGO, we have a 2 pass system. TODO: Make it more global for onefile
|
|
722
752
|
# and standalone mode proper support, which might need data files to be
|
|
723
753
|
# there, which currently are not yet there, so it won't run.
|
|
724
|
-
if Options.
|
|
754
|
+
if Options.isCPgoMode():
|
|
725
755
|
options["pgo_mode"] = "generate"
|
|
726
756
|
|
|
727
757
|
result = runScons(
|
|
@@ -754,12 +784,7 @@ def runSconsBackend():
|
|
|
754
784
|
return result
|
|
755
785
|
|
|
756
786
|
|
|
757
|
-
def callExecPython(args,
|
|
758
|
-
old_python_path = os.environ.get("PYTHONPATH")
|
|
759
|
-
|
|
760
|
-
if clean_path and old_python_path is not None:
|
|
761
|
-
os.environ["PYTHONPATH"] = ""
|
|
762
|
-
|
|
787
|
+
def callExecPython(args, add_path, uac):
|
|
763
788
|
if add_path:
|
|
764
789
|
if "PYTHONPATH" in os.environ:
|
|
765
790
|
os.environ["PYTHONPATH"] += ":" + Options.getOutputDir()
|
|
@@ -769,23 +794,27 @@ def callExecPython(args, clean_path, add_path):
|
|
|
769
794
|
# Add the main arguments, previous separated.
|
|
770
795
|
args += Options.getPositionalArgs()[1:] + Options.getMainArgs()
|
|
771
796
|
|
|
772
|
-
callExecProcess(args)
|
|
797
|
+
callExecProcess(args, uac=uac)
|
|
773
798
|
|
|
774
799
|
|
|
775
|
-
def
|
|
800
|
+
def _executeMain(binary_filename):
|
|
776
801
|
# Wrap in debugger, unless the CMD file contains that call already.
|
|
777
802
|
if Options.shallRunInDebugger() and not Options.shallCreateCmdFileForExecution():
|
|
778
803
|
args = wrapCommandForDebuggerForExec(binary_filename)
|
|
779
804
|
else:
|
|
780
805
|
args = (binary_filename, binary_filename)
|
|
781
806
|
|
|
782
|
-
callExecPython(
|
|
807
|
+
callExecPython(
|
|
808
|
+
args=args,
|
|
809
|
+
add_path=False,
|
|
810
|
+
uac=isWin32Windows() and Options.shallAskForWindowsAdminRights(),
|
|
811
|
+
)
|
|
783
812
|
|
|
784
813
|
|
|
785
|
-
def
|
|
814
|
+
def _executeModule(tree):
|
|
786
815
|
"""Execute the extension module just created."""
|
|
787
816
|
|
|
788
|
-
if python_version <
|
|
817
|
+
if python_version < 0x300:
|
|
789
818
|
python_command_template = """\
|
|
790
819
|
import os, imp;\
|
|
791
820
|
assert os.path.normcase(os.path.abspath(os.path.normpath(\
|
|
@@ -798,6 +827,15 @@ assert os.path.normcase(os.path.abspath(os.path.normpath(\
|
|
|
798
827
|
importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
|
|
799
828
|
'Error, cannot launch extension module %(module_name)s, original package is in the way.'"""
|
|
800
829
|
|
|
830
|
+
output_dir = os.path.normpath(Options.getOutputDir())
|
|
831
|
+
if output_dir != ".":
|
|
832
|
+
python_command_template = (
|
|
833
|
+
"""\
|
|
834
|
+
import sys; sys.path.insert(0, %(output_dir)r)
|
|
835
|
+
"""
|
|
836
|
+
+ python_command_template
|
|
837
|
+
)
|
|
838
|
+
|
|
801
839
|
python_command_template += ";__import__('%(module_name)s')"
|
|
802
840
|
|
|
803
841
|
python_command = python_command_template % {
|
|
@@ -807,6 +845,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
|
|
|
807
845
|
os.path.normpath(OutputDirectories.getResultFullpath(onefile=False))
|
|
808
846
|
)
|
|
809
847
|
),
|
|
848
|
+
"output_dir": output_dir,
|
|
810
849
|
}
|
|
811
850
|
|
|
812
851
|
if Options.shallRunInDebugger():
|
|
@@ -814,7 +853,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
|
|
|
814
853
|
else:
|
|
815
854
|
args = (sys.executable, "python", "-c", python_command)
|
|
816
855
|
|
|
817
|
-
callExecPython(
|
|
856
|
+
callExecPython(args=args, add_path=True, uac=False)
|
|
818
857
|
|
|
819
858
|
|
|
820
859
|
def compileTree():
|
|
@@ -827,9 +866,11 @@ def compileTree():
|
|
|
827
866
|
|
|
828
867
|
reportMemoryUsage(
|
|
829
868
|
"before_c_code_generation",
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
869
|
+
(
|
|
870
|
+
"Total memory usage before generating C code:"
|
|
871
|
+
if Options.isShowProgress() or Options.isShowMemory()
|
|
872
|
+
else None
|
|
873
|
+
),
|
|
833
874
|
)
|
|
834
875
|
|
|
835
876
|
# Now build the target language code for the whole tree.
|
|
@@ -855,16 +896,17 @@ def compileTree():
|
|
|
855
896
|
|
|
856
897
|
reportMemoryUsage(
|
|
857
898
|
"before_running_scons",
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
899
|
+
(
|
|
900
|
+
"Total memory usage before running scons"
|
|
901
|
+
if Options.isShowProgress() or Options.isShowMemory()
|
|
902
|
+
else None
|
|
903
|
+
),
|
|
861
904
|
)
|
|
862
905
|
|
|
863
906
|
if Options.isShowMemory():
|
|
864
907
|
InstanceCounters.printStats()
|
|
865
908
|
|
|
866
|
-
|
|
867
|
-
Reports.doMissingOptimizationReport()
|
|
909
|
+
Reports.doMissingOptimizationReport()
|
|
868
910
|
|
|
869
911
|
if Options.shallNotDoExecCCompilerCall():
|
|
870
912
|
return True, {}
|
|
@@ -878,9 +920,9 @@ def compileTree():
|
|
|
878
920
|
general.info("Running C compilation via Scons.")
|
|
879
921
|
|
|
880
922
|
# Run the Scons to build things.
|
|
881
|
-
result,
|
|
923
|
+
result, scons_options = runSconsBackend()
|
|
882
924
|
|
|
883
|
-
return result,
|
|
925
|
+
return result, scons_options
|
|
884
926
|
|
|
885
927
|
|
|
886
928
|
def handleSyntaxError(e):
|
|
@@ -938,12 +980,16 @@ def _main():
|
|
|
938
980
|
|
|
939
981
|
reportMemoryUsage(
|
|
940
982
|
"after_launch",
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
983
|
+
(
|
|
984
|
+
"Total memory usage before processing:"
|
|
985
|
+
if Options.isShowProgress() or Options.isShowMemory()
|
|
986
|
+
else None
|
|
987
|
+
),
|
|
944
988
|
)
|
|
945
989
|
|
|
946
|
-
|
|
990
|
+
# Initialize the importing layer from options, main filenames, debugging
|
|
991
|
+
# options, etc.
|
|
992
|
+
Importing.setupImportingFromOptions()
|
|
947
993
|
|
|
948
994
|
addIncludedDataFilesFromFileOptions()
|
|
949
995
|
addIncludedDataFilesFromPackageOptions()
|
|
@@ -959,14 +1005,18 @@ def _main():
|
|
|
959
1005
|
dumpTreeXML()
|
|
960
1006
|
|
|
961
1007
|
# Make the actual compilation.
|
|
962
|
-
result,
|
|
1008
|
+
result, scons_options = compileTree()
|
|
963
1009
|
|
|
964
1010
|
# Exit if compilation failed.
|
|
965
1011
|
if not result:
|
|
966
|
-
general.sysexit(
|
|
1012
|
+
general.sysexit(
|
|
1013
|
+
message="Failed unexpectedly in Scons C backend compilation.",
|
|
1014
|
+
mnemonic="scons-backend-failure",
|
|
1015
|
+
reporting=True,
|
|
1016
|
+
)
|
|
967
1017
|
|
|
968
1018
|
# Relaunch in case of Python PGO input to be produced.
|
|
969
|
-
if Options.
|
|
1019
|
+
if Options.shallCreatePythonPgoInput():
|
|
970
1020
|
# Will not return.
|
|
971
1021
|
pgo_filename = OutputDirectories.getPgoRunInputFilename()
|
|
972
1022
|
general.info(
|
|
@@ -983,10 +1033,8 @@ def _main():
|
|
|
983
1033
|
|
|
984
1034
|
executePostProcessing()
|
|
985
1035
|
|
|
986
|
-
copyDataFiles()
|
|
987
|
-
|
|
988
1036
|
if Options.isStandaloneMode():
|
|
989
|
-
binary_filename =
|
|
1037
|
+
binary_filename = scons_options["result_exe"]
|
|
990
1038
|
|
|
991
1039
|
setMainEntryPoint(binary_filename)
|
|
992
1040
|
|
|
@@ -1005,6 +1053,9 @@ def _main():
|
|
|
1005
1053
|
standalone_entry_points=getStandaloneEntryPoints(),
|
|
1006
1054
|
)
|
|
1007
1055
|
|
|
1056
|
+
copyDataFiles(standalone_entry_points=getStandaloneEntryPoints())
|
|
1057
|
+
|
|
1058
|
+
if Options.isStandaloneMode():
|
|
1008
1059
|
Plugins.onStandaloneDistributionFinished(dist_dir)
|
|
1009
1060
|
|
|
1010
1061
|
if Options.isOnefileMode():
|
|
@@ -1013,7 +1064,12 @@ def _main():
|
|
|
1013
1064
|
if Options.isRemoveBuildDir():
|
|
1014
1065
|
general.info("Removing dist folder '%s'." % dist_dir)
|
|
1015
1066
|
|
|
1016
|
-
removeDirectory(
|
|
1067
|
+
removeDirectory(
|
|
1068
|
+
path=dist_dir,
|
|
1069
|
+
logger=general,
|
|
1070
|
+
ignore_errors=False,
|
|
1071
|
+
extra_recommendation=None,
|
|
1072
|
+
)
|
|
1017
1073
|
else:
|
|
1018
1074
|
general.info(
|
|
1019
1075
|
"Keeping dist folder '%s' for inspection, no need to use it."
|
|
@@ -1028,7 +1084,14 @@ def _main():
|
|
|
1028
1084
|
|
|
1029
1085
|
# Make sure the scons report is cached before deleting it.
|
|
1030
1086
|
readSconsReport(source_dir)
|
|
1031
|
-
|
|
1087
|
+
readSconsErrorReport(source_dir)
|
|
1088
|
+
|
|
1089
|
+
removeDirectory(
|
|
1090
|
+
path=source_dir,
|
|
1091
|
+
logger=general,
|
|
1092
|
+
ignore_errors=False,
|
|
1093
|
+
extra_recommendation=None,
|
|
1094
|
+
)
|
|
1032
1095
|
assert not os.path.exists(source_dir)
|
|
1033
1096
|
else:
|
|
1034
1097
|
general.info("Keeping build directory '%s'." % source_dir)
|
|
@@ -1040,22 +1103,32 @@ def _main():
|
|
|
1040
1103
|
if Options.isStandaloneMode() and isMacOS():
|
|
1041
1104
|
general.info(
|
|
1042
1105
|
"Created binary that runs on macOS %s (%s) or higher."
|
|
1043
|
-
% (
|
|
1106
|
+
% (scons_options["macos_min_version"], scons_options["macos_target_arch"])
|
|
1044
1107
|
)
|
|
1045
1108
|
|
|
1109
|
+
if scons_options["macos_target_arch"] != getArchitecture():
|
|
1110
|
+
general.warning(
|
|
1111
|
+
"It will only work as well as 'arch -%s %s %s' does."
|
|
1112
|
+
% (
|
|
1113
|
+
scons_options["macos_target_arch"],
|
|
1114
|
+
sys.executable,
|
|
1115
|
+
Options.getMainEntryPointFilenames()[0],
|
|
1116
|
+
),
|
|
1117
|
+
mnemonic="macos-cross-compile",
|
|
1118
|
+
)
|
|
1119
|
+
|
|
1046
1120
|
Plugins.onFinalResult(final_filename)
|
|
1047
1121
|
|
|
1048
1122
|
if Options.shallMakeModule():
|
|
1049
1123
|
base_path = OutputDirectories.getResultBasePath(onefile=False)
|
|
1050
1124
|
|
|
1051
|
-
if os.path.isdir(base_path) and
|
|
1052
|
-
os.path.join(base_path, "__init__.py")
|
|
1053
|
-
):
|
|
1125
|
+
if os.path.isdir(base_path) and getPackageDirFilename(base_path):
|
|
1054
1126
|
general.warning(
|
|
1055
1127
|
"""\
|
|
1056
1128
|
The compilation result is hidden by package directory '%s'. Importing will \
|
|
1057
1129
|
not use compiled code while it exists."""
|
|
1058
|
-
% base_path
|
|
1130
|
+
% base_path,
|
|
1131
|
+
mnemonic="compiled-package-hidden-by-package",
|
|
1059
1132
|
)
|
|
1060
1133
|
|
|
1061
1134
|
general.info("Successfully created '%s'." % final_filename)
|
|
@@ -1068,18 +1141,12 @@ not use compiled code while it exists."""
|
|
|
1068
1141
|
|
|
1069
1142
|
# Execute the module immediately if option was given.
|
|
1070
1143
|
if Options.shallExecuteImmediately():
|
|
1071
|
-
general.info("Launching '%s'" % run_filename)
|
|
1144
|
+
general.info("Launching '%s'." % run_filename)
|
|
1072
1145
|
|
|
1073
1146
|
if Options.shallMakeModule():
|
|
1074
|
-
|
|
1075
|
-
tree=main_module,
|
|
1076
|
-
clean_path=Options.shallClearPythonPathEnvironment(),
|
|
1077
|
-
)
|
|
1147
|
+
_executeModule(tree=main_module)
|
|
1078
1148
|
else:
|
|
1079
|
-
|
|
1080
|
-
binary_filename=run_filename,
|
|
1081
|
-
clean_path=Options.shallClearPythonPathEnvironment(),
|
|
1082
|
-
)
|
|
1149
|
+
_executeMain(run_filename)
|
|
1083
1150
|
else:
|
|
1084
1151
|
if run_filename != final_filename:
|
|
1085
1152
|
general.info(
|
|
@@ -1094,7 +1161,33 @@ def main():
|
|
|
1094
1161
|
except BaseException:
|
|
1095
1162
|
try:
|
|
1096
1163
|
writeCompilationReports(aborted=True)
|
|
1164
|
+
except KeyboardInterrupt:
|
|
1165
|
+
general.warning("""Report writing was prevented by user interrupt.""")
|
|
1097
1166
|
except BaseException as e: # Catch all the things, pylint: disable=broad-except
|
|
1098
|
-
general.warning(
|
|
1167
|
+
general.warning(
|
|
1168
|
+
"""\
|
|
1169
|
+
Report writing was prevented by exception %r, use option \
|
|
1170
|
+
'--experimental=debug-report-traceback' for full traceback."""
|
|
1171
|
+
% e
|
|
1172
|
+
)
|
|
1173
|
+
|
|
1174
|
+
if isExperimental("debug-report-traceback"):
|
|
1175
|
+
raise
|
|
1099
1176
|
|
|
1100
1177
|
raise
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1181
|
+
# integrates with CPython, but also works on its own.
|
|
1182
|
+
#
|
|
1183
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1184
|
+
# you may not use this file except in compliance with the License.
|
|
1185
|
+
# You may obtain a copy of the License at
|
|
1186
|
+
#
|
|
1187
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1188
|
+
#
|
|
1189
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1190
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1191
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1192
|
+
# See the License for the specific language governing permissions and
|
|
1193
|
+
# limitations under the License.
|