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/reports/Reports.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
|
""" Collection of information for reports and their writing.
|
|
19
5
|
|
|
20
6
|
These reports are in XML form, and with Jinja2 templates in any form you like.
|
|
@@ -29,10 +15,14 @@ import traceback
|
|
|
29
15
|
from nuitka import TreeXML
|
|
30
16
|
from nuitka.__past__ import unicode
|
|
31
17
|
from nuitka.build.DataComposerInterface import getDataComposerReportValues
|
|
18
|
+
from nuitka.build.SconsUtils import readSconsErrorReport
|
|
19
|
+
from nuitka.code_generation.ConstantCodes import getDistributionMetadataValues
|
|
32
20
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
33
21
|
from nuitka.freezer.IncludedDataFiles import getIncludedDataFiles
|
|
34
22
|
from nuitka.freezer.IncludedEntryPoints import getStandaloneEntryPoints
|
|
23
|
+
from nuitka.freezer.Standalone import getRemovedUsedDllsInfo
|
|
35
24
|
from nuitka.importing.Importing import getPackageSearchPath
|
|
25
|
+
from nuitka.importing.Recursion import getRecursionDecisions
|
|
36
26
|
from nuitka.ModuleRegistry import (
|
|
37
27
|
getDoneModules,
|
|
38
28
|
getModuleInclusionInfoByName,
|
|
@@ -43,17 +33,46 @@ from nuitka.Options import (
|
|
|
43
33
|
getCompilationReportFilename,
|
|
44
34
|
getCompilationReportTemplates,
|
|
45
35
|
getCompilationReportUserData,
|
|
36
|
+
isOnefileMode,
|
|
46
37
|
shallCreateDiffableCompilationReport,
|
|
47
38
|
)
|
|
39
|
+
from nuitka.OutputDirectories import (
|
|
40
|
+
getResultRunFilename,
|
|
41
|
+
getSourceDirectoryPath,
|
|
42
|
+
hasMainModule,
|
|
43
|
+
)
|
|
48
44
|
from nuitka.plugins.Plugins import getActivePlugins
|
|
49
45
|
from nuitka.PythonFlavors import getPythonFlavorName
|
|
50
|
-
from nuitka.PythonVersions import
|
|
46
|
+
from nuitka.PythonVersions import (
|
|
47
|
+
getLaunchingSystemPrefixPath,
|
|
48
|
+
getSystemPrefixPath,
|
|
49
|
+
python_version_full_str,
|
|
50
|
+
)
|
|
51
51
|
from nuitka.Tracing import ReportingSystemExit, reports_logger
|
|
52
|
-
from nuitka.utils.Distributions import
|
|
53
|
-
|
|
52
|
+
from nuitka.utils.Distributions import (
|
|
53
|
+
getDistributionInstallerName,
|
|
54
|
+
getDistributionLicense,
|
|
55
|
+
getDistributionName,
|
|
56
|
+
getDistributionsFromModuleName,
|
|
57
|
+
getDistributionVersion,
|
|
58
|
+
)
|
|
59
|
+
from nuitka.utils.FileOperations import (
|
|
60
|
+
getReportPath,
|
|
61
|
+
putBinaryFileContents,
|
|
62
|
+
putTextFileContents,
|
|
63
|
+
)
|
|
54
64
|
from nuitka.utils.Jinja2 import getTemplate
|
|
55
65
|
from nuitka.utils.MemoryUsage import getMemoryInfos
|
|
56
|
-
from nuitka.utils.Utils import
|
|
66
|
+
from nuitka.utils.Utils import (
|
|
67
|
+
getArchitecture,
|
|
68
|
+
getLinuxDistribution,
|
|
69
|
+
getMacOSRelease,
|
|
70
|
+
getOS,
|
|
71
|
+
getWindowsRelease,
|
|
72
|
+
isLinux,
|
|
73
|
+
isMacOS,
|
|
74
|
+
isWin32OrPosixWindows,
|
|
75
|
+
)
|
|
57
76
|
from nuitka.Version import getCommercialVersion, getNuitkaVersion
|
|
58
77
|
|
|
59
78
|
|
|
@@ -61,7 +80,8 @@ def _getReportInputData(aborted):
|
|
|
61
80
|
"""Collect all information for reporting into a dictionary."""
|
|
62
81
|
|
|
63
82
|
# used with locals for laziness and these are to populate a dictionary with
|
|
64
|
-
# many entries,
|
|
83
|
+
# many entries,
|
|
84
|
+
# pylint: disable=possibly-unused-variable,too-many-branches,too-many-locals,too-many-statements
|
|
65
85
|
|
|
66
86
|
module_names = tuple(module.getFullName() for module in getDoneModules())
|
|
67
87
|
|
|
@@ -88,8 +108,14 @@ def _getReportInputData(aborted):
|
|
|
88
108
|
for module in getDoneModules()
|
|
89
109
|
)
|
|
90
110
|
|
|
111
|
+
module_usages = dict(
|
|
112
|
+
(module.getFullName(), tuple(module.getUsedModules()))
|
|
113
|
+
for module in getDoneModules()
|
|
114
|
+
)
|
|
115
|
+
|
|
91
116
|
module_distributions = {}
|
|
92
117
|
distribution_modules = {}
|
|
118
|
+
|
|
93
119
|
for module in getDoneModules():
|
|
94
120
|
module_distributions[module.getFullName()] = getDistributionsFromModuleName(
|
|
95
121
|
module.getFullName()
|
|
@@ -100,9 +126,19 @@ def _getReportInputData(aborted):
|
|
|
100
126
|
|
|
101
127
|
distribution_modules[_distribution].add(module.getFullName())
|
|
102
128
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
129
|
+
module_distribution_usages = {}
|
|
130
|
+
for module in getDoneModules():
|
|
131
|
+
module_distribution_usages[module.getFullName()] = OrderedSet()
|
|
132
|
+
|
|
133
|
+
for _module_usage in module_usages[module.getFullName()]:
|
|
134
|
+
if _module_usage.module_name not in module_usages:
|
|
135
|
+
continue
|
|
136
|
+
|
|
137
|
+
module_distribution_usages[module.getFullName()].update(
|
|
138
|
+
dist
|
|
139
|
+
for dist in module_distributions[_module_usage.module_name]
|
|
140
|
+
if dist not in module_distributions[module.getFullName()]
|
|
141
|
+
)
|
|
106
142
|
|
|
107
143
|
module_distribution_names = dict(
|
|
108
144
|
(module.getFullName(), module.getUsedDistributions())
|
|
@@ -112,10 +148,55 @@ def _getReportInputData(aborted):
|
|
|
112
148
|
all_distributions = tuple(
|
|
113
149
|
sorted(
|
|
114
150
|
set(sum(module_distributions.values(), ())),
|
|
115
|
-
key=
|
|
151
|
+
key=getDistributionName,
|
|
116
152
|
)
|
|
117
153
|
)
|
|
118
154
|
|
|
155
|
+
module_distribution_installers = dict(
|
|
156
|
+
(
|
|
157
|
+
getDistributionName(dist),
|
|
158
|
+
getDistributionInstallerName(getDistributionName(dist)),
|
|
159
|
+
)
|
|
160
|
+
for dist in all_distributions
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
module_exclusions = dict((module.getFullName(), {}) for module in getDoneModules())
|
|
164
|
+
|
|
165
|
+
# TODO: The module filename, and other things can be None. Once we change to
|
|
166
|
+
# namedtuples, we need to adapt the type check.
|
|
167
|
+
def _replaceNoneWithString(value):
|
|
168
|
+
if type(value) is tuple:
|
|
169
|
+
return tuple(_replaceNoneWithString(element) for element in value)
|
|
170
|
+
|
|
171
|
+
return value if value is not None else ""
|
|
172
|
+
|
|
173
|
+
for (
|
|
174
|
+
_using_module_name,
|
|
175
|
+
_module_filename,
|
|
176
|
+
_module_name,
|
|
177
|
+
_module_kind,
|
|
178
|
+
_extra_recursion,
|
|
179
|
+
), (_decision, _reason) in sorted(
|
|
180
|
+
getRecursionDecisions().items(), key=_replaceNoneWithString
|
|
181
|
+
):
|
|
182
|
+
if _decision is not False:
|
|
183
|
+
continue
|
|
184
|
+
|
|
185
|
+
if _using_module_name is None:
|
|
186
|
+
continue
|
|
187
|
+
|
|
188
|
+
# We might be interrupted, and have this information, but never actually
|
|
189
|
+
# finished the module.
|
|
190
|
+
if _using_module_name not in module_exclusions:
|
|
191
|
+
continue
|
|
192
|
+
|
|
193
|
+
module_exclusions[_using_module_name][_module_name] = _reason
|
|
194
|
+
|
|
195
|
+
included_metadata = dict(
|
|
196
|
+
(distribution_name, meta_data_value.reasons)
|
|
197
|
+
for distribution_name, meta_data_value in getDistributionMetadataValues()
|
|
198
|
+
)
|
|
199
|
+
|
|
119
200
|
memory_infos = getMemoryInfos()
|
|
120
201
|
|
|
121
202
|
python_exe = sys.executable
|
|
@@ -125,6 +206,18 @@ def _getReportInputData(aborted):
|
|
|
125
206
|
os_name = getOS()
|
|
126
207
|
arch_name = getArchitecture()
|
|
127
208
|
|
|
209
|
+
# Record system encoding, spell-checker: ignore getfilesystemencoding
|
|
210
|
+
filesystem_encoding = sys.getfilesystemencoding()
|
|
211
|
+
|
|
212
|
+
if isWin32OrPosixWindows():
|
|
213
|
+
os_release = str(getWindowsRelease())
|
|
214
|
+
elif isLinux():
|
|
215
|
+
os_release = "-".join(x for x in getLinuxDistribution() if x)
|
|
216
|
+
elif isMacOS():
|
|
217
|
+
os_release = getMacOSRelease()
|
|
218
|
+
else:
|
|
219
|
+
os_release = "unknown"
|
|
220
|
+
|
|
128
221
|
nuitka_version = getNuitkaVersion()
|
|
129
222
|
nuitka_commercial_version = getCommercialVersion() or "not installed"
|
|
130
223
|
|
|
@@ -136,6 +229,17 @@ def _getReportInputData(aborted):
|
|
|
136
229
|
|
|
137
230
|
data_composer = getDataComposerReportValues()
|
|
138
231
|
|
|
232
|
+
if hasMainModule():
|
|
233
|
+
output_run_filename = os.path.abspath(
|
|
234
|
+
getResultRunFilename(onefile=isOnefileMode())
|
|
235
|
+
)
|
|
236
|
+
scons_error_report_data = readSconsErrorReport(
|
|
237
|
+
source_dir=getSourceDirectoryPath()
|
|
238
|
+
)
|
|
239
|
+
else:
|
|
240
|
+
scons_error_report_data = {}
|
|
241
|
+
output_run_filename = "failed too early"
|
|
242
|
+
|
|
139
243
|
return dict(
|
|
140
244
|
(var_name, var_value)
|
|
141
245
|
for var_name, var_value in locals().items()
|
|
@@ -154,7 +258,7 @@ def _getReportPathPrefixes():
|
|
|
154
258
|
if _report_prefixes is None:
|
|
155
259
|
_report_prefixes = []
|
|
156
260
|
|
|
157
|
-
sys_prefix =
|
|
261
|
+
sys_prefix = getLaunchingSystemPrefixPath() or sys.prefix
|
|
158
262
|
real_sys_prefix = getSystemPrefixPath()
|
|
159
263
|
|
|
160
264
|
if real_sys_prefix != sys_prefix:
|
|
@@ -171,7 +275,8 @@ def _getCompilationReportPath(path):
|
|
|
171
275
|
|
|
172
276
|
|
|
173
277
|
def _addModulesToReport(root, report_input_data, diffable):
|
|
174
|
-
# Many details to work with,
|
|
278
|
+
# Many details to work with,
|
|
279
|
+
# pylint: disable=too-many-branches,too-many-locals,too-many-statements
|
|
175
280
|
|
|
176
281
|
for module_name in report_input_data["module_names"]:
|
|
177
282
|
active_module_info = report_input_data["module_inclusion_infos"][module_name]
|
|
@@ -188,6 +293,13 @@ def _addModulesToReport(root, report_input_data, diffable):
|
|
|
188
293
|
),
|
|
189
294
|
)
|
|
190
295
|
|
|
296
|
+
distributions = report_input_data["module_distributions"][module_name]
|
|
297
|
+
|
|
298
|
+
if distributions:
|
|
299
|
+
module_xml_node.attrib["distribution"] = ",".join(
|
|
300
|
+
getDistributionName(dist) for dist in distributions
|
|
301
|
+
)
|
|
302
|
+
|
|
191
303
|
for plugin_name, influence, detail in report_input_data[
|
|
192
304
|
"module_plugin_influences"
|
|
193
305
|
][module_name]:
|
|
@@ -199,8 +311,34 @@ def _addModulesToReport(root, report_input_data, diffable):
|
|
|
199
311
|
condition, condition_tags_used, condition_result = detail
|
|
200
312
|
|
|
201
313
|
influence_xml_node.attrib["condition"] = condition
|
|
202
|
-
|
|
314
|
+
if condition_tags_used:
|
|
315
|
+
influence_xml_node.attrib["tags_used"] = ",".join(
|
|
316
|
+
condition_tags_used
|
|
317
|
+
)
|
|
203
318
|
influence_xml_node.attrib["result"] = str(condition_result).lower()
|
|
319
|
+
elif influence == "variable-used":
|
|
320
|
+
variable_name, condition_tags_used, variable_value = detail
|
|
321
|
+
|
|
322
|
+
influence_xml_node.attrib["variable"] = variable_name
|
|
323
|
+
if condition_tags_used:
|
|
324
|
+
influence_xml_node.attrib["tags_used"] = ",".join(
|
|
325
|
+
condition_tags_used
|
|
326
|
+
)
|
|
327
|
+
influence_xml_node.attrib["value"] = variable_value
|
|
328
|
+
elif influence == "parameter-used":
|
|
329
|
+
parameter_name, condition_tags_used, parameter_value = detail
|
|
330
|
+
|
|
331
|
+
influence_xml_node.attrib["parameter"] = parameter_name
|
|
332
|
+
if condition_tags_used:
|
|
333
|
+
influence_xml_node.attrib["tags_used"] = ",".join(
|
|
334
|
+
condition_tags_used
|
|
335
|
+
)
|
|
336
|
+
influence_xml_node.attrib["value"] = repr(parameter_value)
|
|
337
|
+
elif influence == "detection":
|
|
338
|
+
detection_name, detection_value = detail
|
|
339
|
+
|
|
340
|
+
influence_xml_node.attrib["detection"] = detection_name
|
|
341
|
+
influence_xml_node.attrib["value"] = repr(detection_value)
|
|
204
342
|
else:
|
|
205
343
|
assert False, influence
|
|
206
344
|
|
|
@@ -217,21 +355,35 @@ def _addModulesToReport(root, report_input_data, diffable):
|
|
|
217
355
|
"volatile" if diffable else "%.2f" % timing_info.time_used
|
|
218
356
|
)
|
|
219
357
|
|
|
358
|
+
if timing_info.micro_passes:
|
|
359
|
+
timing_xml_node.attrib["micro_passes"] = str(timing_info.micro_passes)
|
|
360
|
+
|
|
361
|
+
if timing_info.merge_counts:
|
|
362
|
+
merged_total = 0
|
|
363
|
+
|
|
364
|
+
for branch_count, merge_count in timing_info.merge_counts.items():
|
|
365
|
+
merged_total += branch_count * merge_count
|
|
366
|
+
|
|
367
|
+
max_merge_size = max(timing_info.merge_counts)
|
|
368
|
+
|
|
369
|
+
timing_xml_node.attrib["max_branch_merge"] = str(max_merge_size)
|
|
370
|
+
timing_xml_node.attrib["merged_total"] = str(merged_total)
|
|
371
|
+
|
|
220
372
|
module_xml_node.append(timing_xml_node)
|
|
221
373
|
|
|
222
|
-
distributions = report_input_data["
|
|
374
|
+
distributions = report_input_data["module_distribution_usages"][module_name]
|
|
223
375
|
|
|
224
376
|
if distributions:
|
|
225
377
|
distributions_xml_node = TreeXML.appendTreeElement(
|
|
226
378
|
module_xml_node,
|
|
227
|
-
"
|
|
379
|
+
"distribution-usages",
|
|
228
380
|
)
|
|
229
381
|
|
|
230
382
|
for distribution in distributions:
|
|
231
383
|
TreeXML.appendTreeElement(
|
|
232
384
|
distributions_xml_node,
|
|
233
|
-
"distribution-
|
|
234
|
-
name=distribution
|
|
385
|
+
"distribution-usage",
|
|
386
|
+
name=getDistributionName(distribution),
|
|
235
387
|
)
|
|
236
388
|
|
|
237
389
|
module_distribution_names = report_input_data["module_distribution_names"][
|
|
@@ -247,7 +399,7 @@ def _addModulesToReport(root, report_input_data, diffable):
|
|
|
247
399
|
for distribution_name, found in module_distribution_names.items():
|
|
248
400
|
TreeXML.appendTreeElement(
|
|
249
401
|
module_distribution_names_xml_node,
|
|
250
|
-
"distribution",
|
|
402
|
+
"distribution-lookup",
|
|
251
403
|
name=distribution_name,
|
|
252
404
|
found="yes" if found else "no",
|
|
253
405
|
)
|
|
@@ -257,15 +409,48 @@ def _addModulesToReport(root, report_input_data, diffable):
|
|
|
257
409
|
"module_usages",
|
|
258
410
|
)
|
|
259
411
|
|
|
260
|
-
for used_module in
|
|
261
|
-
|
|
412
|
+
for count, used_module in enumerate(
|
|
413
|
+
report_input_data["module_usages"][module_name]
|
|
414
|
+
):
|
|
415
|
+
# We don't want to see those parent imports, unless they have
|
|
416
|
+
# an effect.
|
|
417
|
+
if used_module.reason == "import path parent":
|
|
418
|
+
while True:
|
|
419
|
+
count += 1
|
|
420
|
+
next_used_module = report_input_data["module_usages"][module_name][
|
|
421
|
+
count
|
|
422
|
+
]
|
|
423
|
+
|
|
424
|
+
if next_used_module.reason != "import path parent":
|
|
425
|
+
break
|
|
426
|
+
|
|
427
|
+
exclusion_reason = report_input_data["module_exclusions"][
|
|
428
|
+
module_name
|
|
429
|
+
].get(next_used_module.module_name)
|
|
430
|
+
|
|
431
|
+
if exclusion_reason is None or next_used_module.finding != "not-found":
|
|
432
|
+
continue
|
|
433
|
+
|
|
434
|
+
module_usage_node = TreeXML.appendTreeElement(
|
|
262
435
|
used_modules_xml_node,
|
|
263
436
|
"module_usage",
|
|
264
437
|
name=used_module.module_name.asString(),
|
|
265
438
|
finding=used_module.finding,
|
|
266
439
|
line=str(used_module.source_ref.getLineNumber()),
|
|
440
|
+
# TODO: Add reason in a hotfix.
|
|
441
|
+
# reason=used_module.reason,
|
|
267
442
|
)
|
|
268
443
|
|
|
444
|
+
exclusion_reason = report_input_data["module_exclusions"][module_name].get(
|
|
445
|
+
used_module.module_name
|
|
446
|
+
)
|
|
447
|
+
|
|
448
|
+
# Include reason why a module was excluded unless it is obvious like
|
|
449
|
+
# with built-in modules.
|
|
450
|
+
if exclusion_reason is not None and used_module.module_kind != "built-in":
|
|
451
|
+
module_usage_node.attrib["finding"] = "excluded"
|
|
452
|
+
module_usage_node.attrib["exclusion_reason"] = exclusion_reason
|
|
453
|
+
|
|
269
454
|
|
|
270
455
|
def _addMemoryInfosToReport(performance_xml_node, memory_infos, diffable):
|
|
271
456
|
for key, value in memory_infos.items():
|
|
@@ -340,6 +525,45 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
340
525
|
|
|
341
526
|
exception_xml_node.text = "\n" + traceback.format_exc()
|
|
342
527
|
|
|
528
|
+
if report_input_data["scons_error_report_data"]:
|
|
529
|
+
scons_error_reports_node = TreeXML.appendTreeElement(
|
|
530
|
+
root, "scons_error_reports"
|
|
531
|
+
)
|
|
532
|
+
|
|
533
|
+
for cmd, (stdout, stderr) in report_input_data[
|
|
534
|
+
"scons_error_report_data"
|
|
535
|
+
].items():
|
|
536
|
+
scons_error_report_node = TreeXML.appendTreeElement(
|
|
537
|
+
scons_error_reports_node, "scons_error_report"
|
|
538
|
+
)
|
|
539
|
+
|
|
540
|
+
TreeXML.appendTreeElement(
|
|
541
|
+
scons_error_report_node,
|
|
542
|
+
"command",
|
|
543
|
+
).text = cmd
|
|
544
|
+
|
|
545
|
+
if stdout:
|
|
546
|
+
if not stdout.startswith("\n"):
|
|
547
|
+
stdout = "\n" + stdout
|
|
548
|
+
|
|
549
|
+
stdout = stdout.rstrip("\n") + "\n"
|
|
550
|
+
|
|
551
|
+
TreeXML.appendTreeElement(
|
|
552
|
+
scons_error_report_node,
|
|
553
|
+
"stdout",
|
|
554
|
+
).text = stdout
|
|
555
|
+
|
|
556
|
+
if stderr:
|
|
557
|
+
if not stderr.startswith("\n"):
|
|
558
|
+
stderr = "\n" + stderr
|
|
559
|
+
|
|
560
|
+
stderr = stderr.rstrip("\n") + "\n"
|
|
561
|
+
|
|
562
|
+
TreeXML.appendTreeElement(
|
|
563
|
+
scons_error_report_node,
|
|
564
|
+
"stderr",
|
|
565
|
+
).text = stderr
|
|
566
|
+
|
|
343
567
|
_addModulesToReport(
|
|
344
568
|
root=root, report_input_data=report_input_data, diffable=diffable
|
|
345
569
|
)
|
|
@@ -377,6 +601,22 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
377
601
|
tags=",".join(included_datafile.tags),
|
|
378
602
|
)
|
|
379
603
|
|
|
604
|
+
if report_input_data["included_metadata"]:
|
|
605
|
+
metadata_node = TreeXML.appendTreeElement(
|
|
606
|
+
root,
|
|
607
|
+
"metadata",
|
|
608
|
+
)
|
|
609
|
+
|
|
610
|
+
for distribution_name, reasons in sorted(
|
|
611
|
+
report_input_data["included_metadata"].items()
|
|
612
|
+
):
|
|
613
|
+
TreeXML.appendTreeElement(
|
|
614
|
+
metadata_node,
|
|
615
|
+
"included_metadata",
|
|
616
|
+
name=distribution_name,
|
|
617
|
+
reason=". ".join(reasons),
|
|
618
|
+
)
|
|
619
|
+
|
|
380
620
|
for standalone_entry_point in getStandaloneEntryPoints():
|
|
381
621
|
if standalone_entry_point.kind == "executable":
|
|
382
622
|
continue
|
|
@@ -397,10 +637,20 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
397
637
|
source_path=_getCompilationReportPath(standalone_entry_point.source_path),
|
|
398
638
|
package=standalone_entry_point.package_name or "",
|
|
399
639
|
ignored="yes" if ignored else "no",
|
|
400
|
-
reason=standalone_entry_point.reason
|
|
640
|
+
reason=standalone_entry_point.reason,
|
|
401
641
|
# TODO: No reason yet.
|
|
402
642
|
)
|
|
403
643
|
|
|
644
|
+
for standalone_entry_point, (reason, removed_dll_paths) in getRemovedUsedDllsInfo():
|
|
645
|
+
for removed_dll_path in removed_dll_paths:
|
|
646
|
+
TreeXML.appendTreeElement(
|
|
647
|
+
root,
|
|
648
|
+
"excluded_dll",
|
|
649
|
+
name=_getCompilationReportPath(removed_dll_path),
|
|
650
|
+
used_by=standalone_entry_point.dest_path,
|
|
651
|
+
reason=reason,
|
|
652
|
+
)
|
|
653
|
+
|
|
404
654
|
if not diffable:
|
|
405
655
|
data_composer_values = getDataComposerReportValues()
|
|
406
656
|
|
|
@@ -460,8 +710,11 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
460
710
|
TreeXML.appendTreeElement(
|
|
461
711
|
distributions_xml_node,
|
|
462
712
|
"distribution",
|
|
463
|
-
name=distribution
|
|
464
|
-
version=distribution
|
|
713
|
+
name=getDistributionName(distribution),
|
|
714
|
+
version=getDistributionVersion(distribution),
|
|
715
|
+
installer=report_input_data["module_distribution_installers"][
|
|
716
|
+
getDistributionName(distribution)
|
|
717
|
+
],
|
|
465
718
|
)
|
|
466
719
|
|
|
467
720
|
python_xml_node = TreeXML.appendTreeElement(
|
|
@@ -471,25 +724,43 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
471
724
|
python_flavor=report_input_data["python_flavor"],
|
|
472
725
|
python_version=report_input_data["python_version"],
|
|
473
726
|
os_name=report_input_data["os_name"],
|
|
727
|
+
os_release=report_input_data["os_release"],
|
|
474
728
|
arch_name=report_input_data["arch_name"],
|
|
729
|
+
filesystem_encoding=report_input_data["filesystem_encoding"],
|
|
475
730
|
)
|
|
476
731
|
|
|
477
|
-
|
|
478
|
-
python_xml_node,
|
|
479
|
-
"search_path",
|
|
480
|
-
)
|
|
732
|
+
search_path = getPackageSearchPath(None)
|
|
481
733
|
|
|
482
|
-
|
|
483
|
-
TreeXML.appendTreeElement(
|
|
484
|
-
|
|
485
|
-
"
|
|
486
|
-
value=_getCompilationReportPath(search_path),
|
|
734
|
+
if search_path is not None:
|
|
735
|
+
search_path_xml_node = TreeXML.appendTreeElement(
|
|
736
|
+
python_xml_node,
|
|
737
|
+
"search_path",
|
|
487
738
|
)
|
|
488
739
|
|
|
740
|
+
for search_path in getPackageSearchPath(None):
|
|
741
|
+
TreeXML.appendTreeElement(
|
|
742
|
+
search_path_xml_node,
|
|
743
|
+
"path",
|
|
744
|
+
value=_getCompilationReportPath(search_path),
|
|
745
|
+
)
|
|
746
|
+
|
|
489
747
|
_addUserDataToReport(root=root, user_data=report_input_data["user_data"])
|
|
490
748
|
|
|
749
|
+
python_xml_node = TreeXML.appendTreeElement(
|
|
750
|
+
root,
|
|
751
|
+
"output",
|
|
752
|
+
run_filename=_getCompilationReportPath(
|
|
753
|
+
report_input_data["output_run_filename"]
|
|
754
|
+
),
|
|
755
|
+
)
|
|
756
|
+
|
|
757
|
+
contents = TreeXML.toString(root)
|
|
758
|
+
|
|
759
|
+
if type(contents) is not bytes:
|
|
760
|
+
contents = contents.encode("utf8")
|
|
761
|
+
|
|
491
762
|
try:
|
|
492
|
-
|
|
763
|
+
putBinaryFileContents(filename=report_filename, contents=contents)
|
|
493
764
|
except OSError as e:
|
|
494
765
|
reports_logger.warning(
|
|
495
766
|
"Compilation report write to file '%s' failed due to: %s."
|
|
@@ -499,9 +770,10 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
|
|
|
499
770
|
if _crash_report_filename == report_filename:
|
|
500
771
|
_crash_report_filename = None
|
|
501
772
|
else:
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
773
|
+
if _crash_report_filename != report_filename:
|
|
774
|
+
reports_logger.info(
|
|
775
|
+
"Compilation report written to file '%s'." % report_filename
|
|
776
|
+
)
|
|
505
777
|
|
|
506
778
|
|
|
507
779
|
def writeCompilationReportFromTemplate(
|
|
@@ -514,25 +786,6 @@ def writeCompilationReportFromTemplate(
|
|
|
514
786
|
extensions=("jinja2.ext.do",),
|
|
515
787
|
)
|
|
516
788
|
|
|
517
|
-
def get_distribution_license(distribution):
|
|
518
|
-
license_name = distribution.metadata["License"]
|
|
519
|
-
|
|
520
|
-
if license_name == "UNKNOWN":
|
|
521
|
-
for classifier in (
|
|
522
|
-
value
|
|
523
|
-
for (key, value) in distribution.metadata.items()
|
|
524
|
-
if "Classifier" in key
|
|
525
|
-
):
|
|
526
|
-
parts = [part.strip() for part in classifier.split("::")]
|
|
527
|
-
if not parts:
|
|
528
|
-
continue
|
|
529
|
-
|
|
530
|
-
if parts[0] == "License":
|
|
531
|
-
license_name = parts[-1]
|
|
532
|
-
break
|
|
533
|
-
|
|
534
|
-
return license_name
|
|
535
|
-
|
|
536
789
|
def quoted(value):
|
|
537
790
|
if isinstance(value, str):
|
|
538
791
|
return "'%s'" % value
|
|
@@ -541,7 +794,11 @@ def writeCompilationReportFromTemplate(
|
|
|
541
794
|
|
|
542
795
|
report_text = template.render(
|
|
543
796
|
# Get the license text.
|
|
544
|
-
get_distribution_license=
|
|
797
|
+
get_distribution_license=getDistributionLicense,
|
|
798
|
+
# get the distribution_name
|
|
799
|
+
get_distribution_name=getDistributionName,
|
|
800
|
+
# get the distribution version
|
|
801
|
+
get_distribution_version=getDistributionVersion,
|
|
545
802
|
# Quote a list of strings.
|
|
546
803
|
quoted=quoted,
|
|
547
804
|
# For checking length of lists.
|
|
@@ -563,15 +820,20 @@ def writeCompilationReportFromTemplate(
|
|
|
563
820
|
|
|
564
821
|
|
|
565
822
|
_crash_report_filename = "nuitka-crash-report.xml"
|
|
823
|
+
_crash_report_bug_message = True
|
|
566
824
|
|
|
567
825
|
|
|
568
826
|
def _informAboutCrashReport():
|
|
569
827
|
if _crash_report_filename is not None:
|
|
828
|
+
message = (
|
|
829
|
+
"Compilation crash report written to file '%s'." % _crash_report_filename
|
|
830
|
+
)
|
|
831
|
+
|
|
832
|
+
if _crash_report_bug_message:
|
|
833
|
+
message += " Please include it in your bug report."
|
|
834
|
+
|
|
570
835
|
reports_logger.info(
|
|
571
|
-
|
|
572
|
-
Compilation crash report written to file '%s'. Please include it in \
|
|
573
|
-
your bug report."""
|
|
574
|
-
% _crash_report_filename,
|
|
836
|
+
message,
|
|
575
837
|
style="red",
|
|
576
838
|
)
|
|
577
839
|
|
|
@@ -588,6 +850,15 @@ def writeCompilationReports(aborted):
|
|
|
588
850
|
):
|
|
589
851
|
report_filename = _crash_report_filename
|
|
590
852
|
|
|
853
|
+
# Inform user about bug reporting of a bug only, if this is not some sort
|
|
854
|
+
# of reporting exit, these do not constitute definitive bugs of Nuitka but
|
|
855
|
+
# are often usage errors only.
|
|
856
|
+
|
|
857
|
+
# Using global here, as this is really a singleton
|
|
858
|
+
# pylint: disable=global-statement
|
|
859
|
+
global _crash_report_bug_message
|
|
860
|
+
_crash_report_bug_message = sys.exc_info()[0] is not ReportingSystemExit
|
|
861
|
+
|
|
591
862
|
atexit.register(_informAboutCrashReport)
|
|
592
863
|
|
|
593
864
|
if report_filename or template_specs:
|
|
@@ -625,3 +896,19 @@ def writeCompilationReports(aborted):
|
|
|
625
896
|
report_filename=report_filename,
|
|
626
897
|
report_input_data=report_input_data,
|
|
627
898
|
)
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
902
|
+
# integrates with CPython, but also works on its own.
|
|
903
|
+
#
|
|
904
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
905
|
+
# you may not use this file except in compliance with the License.
|
|
906
|
+
# You may obtain a copy of the License at
|
|
907
|
+
#
|
|
908
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
909
|
+
#
|
|
910
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
911
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
912
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
913
|
+
# See the License for the specific language governing permissions and
|
|
914
|
+
# limitations under the License.
|
nuitka/reports/__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. """
|