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/plugins/Plugins.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
|
"""
|
|
19
5
|
|
|
20
6
|
Plugins: Welcome to Nuitka! This is your shortest way to become part of it.
|
|
@@ -39,6 +25,7 @@ from nuitka.__past__ import basestring, iter_modules
|
|
|
39
25
|
from nuitka.build.DataComposerInterface import deriveModuleConstantsBlobName
|
|
40
26
|
from nuitka.containers.OrderedDicts import OrderedDict
|
|
41
27
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
28
|
+
from nuitka.Errors import NuitkaSyntaxError
|
|
42
29
|
from nuitka.freezer.IncludedDataFiles import IncludedDataFile
|
|
43
30
|
from nuitka.freezer.IncludedEntryPoints import IncludedEntryPoint
|
|
44
31
|
from nuitka.ModuleRegistry import addUsedModule
|
|
@@ -46,6 +33,7 @@ from nuitka.PythonVersions import python_version
|
|
|
46
33
|
from nuitka.Tracing import plugins_logger, printLine
|
|
47
34
|
from nuitka.utils.FileOperations import (
|
|
48
35
|
getDllBasename,
|
|
36
|
+
getNormalizedPath,
|
|
49
37
|
makePath,
|
|
50
38
|
putTextFileContents,
|
|
51
39
|
)
|
|
@@ -119,10 +107,8 @@ def _addActivePlugin(plugin_class, args, force=False):
|
|
|
119
107
|
else:
|
|
120
108
|
plugin_args = {}
|
|
121
109
|
|
|
122
|
-
|
|
110
|
+
with withPluginProblemReporting(plugin_class, "plugin initialization", ()):
|
|
123
111
|
plugin_instance = plugin_class(**plugin_args)
|
|
124
|
-
except TypeError as e:
|
|
125
|
-
plugin_class.sysexit("Problem initializing plugin: %s" % e)
|
|
126
112
|
|
|
127
113
|
assert isinstance(plugin_instance, NuitkaPluginBase), plugin_instance
|
|
128
114
|
|
|
@@ -440,7 +426,7 @@ class Plugins(object):
|
|
|
440
426
|
except Exception:
|
|
441
427
|
plugin.warning(
|
|
442
428
|
"Problem locating '%s' for implicit imports of '%s'."
|
|
443
|
-
% (module.getFullName()
|
|
429
|
+
% (full_name, module.getFullName())
|
|
444
430
|
)
|
|
445
431
|
raise
|
|
446
432
|
|
|
@@ -465,8 +451,8 @@ class Plugins(object):
|
|
|
465
451
|
|
|
466
452
|
@staticmethod
|
|
467
453
|
def _reportImplicitImports(plugin, module, implicit_imports):
|
|
468
|
-
from nuitka.importing import Recursion
|
|
469
454
|
from nuitka.importing.Importing import getModuleNameAndKindFromFilename
|
|
455
|
+
from nuitka.importing.Recursion import decideRecursion, recurseTo
|
|
470
456
|
|
|
471
457
|
for full_name, module_filename in implicit_imports:
|
|
472
458
|
# TODO: The module_kind should be forwarded from previous in the class using locateModule code.
|
|
@@ -475,7 +461,7 @@ class Plugins(object):
|
|
|
475
461
|
)
|
|
476
462
|
|
|
477
463
|
# This will get back to all other plugins allowing them to inhibit it though.
|
|
478
|
-
decision, decision_reason =
|
|
464
|
+
decision, decision_reason = decideRecursion(
|
|
479
465
|
using_module_name=module.getFullName(),
|
|
480
466
|
module_filename=module_filename,
|
|
481
467
|
module_name=full_name,
|
|
@@ -483,7 +469,7 @@ class Plugins(object):
|
|
|
483
469
|
)
|
|
484
470
|
|
|
485
471
|
if decision:
|
|
486
|
-
imported_module =
|
|
472
|
+
imported_module = recurseTo(
|
|
487
473
|
module_name=full_name,
|
|
488
474
|
module_filename=module_filename,
|
|
489
475
|
module_kind=module_kind,
|
|
@@ -799,9 +785,11 @@ class Plugins(object):
|
|
|
799
785
|
|
|
800
786
|
try:
|
|
801
787
|
trigger_module = buildModule(
|
|
802
|
-
module_filename=
|
|
803
|
-
os.path.
|
|
804
|
-
|
|
788
|
+
module_filename=getNormalizedPath(
|
|
789
|
+
os.path.join(
|
|
790
|
+
os.path.dirname(module.getCompileTimeFilename()),
|
|
791
|
+
module_name.asPath() + ".py",
|
|
792
|
+
)
|
|
805
793
|
),
|
|
806
794
|
module_name=module_name,
|
|
807
795
|
reason="trigger",
|
|
@@ -827,7 +815,6 @@ class Plugins(object):
|
|
|
827
815
|
def onModuleDiscovered(cls, module):
|
|
828
816
|
# We offer plugins many ways to provide extra stuff
|
|
829
817
|
# pylint: disable=too-many-locals,too-many-statements
|
|
830
|
-
|
|
831
818
|
full_name = module.getFullName()
|
|
832
819
|
|
|
833
820
|
def _untangleLoadDescription(description):
|
|
@@ -840,8 +827,9 @@ class Plugins(object):
|
|
|
840
827
|
|
|
841
828
|
for desc in description:
|
|
842
829
|
if desc is None:
|
|
843
|
-
|
|
844
|
-
|
|
830
|
+
continue
|
|
831
|
+
|
|
832
|
+
if len(desc) == 2:
|
|
845
833
|
code, reason = desc
|
|
846
834
|
flags = ()
|
|
847
835
|
else:
|
|
@@ -870,6 +858,12 @@ class Plugins(object):
|
|
|
870
858
|
post_module_load_descriptions = []
|
|
871
859
|
fake_module_descriptions = []
|
|
872
860
|
|
|
861
|
+
if module.isMainModule():
|
|
862
|
+
plugin = None
|
|
863
|
+
pre_module_load_descriptions.extend(
|
|
864
|
+
_untangleLoadDescription(_getMainModulePreloadCodes())
|
|
865
|
+
)
|
|
866
|
+
|
|
873
867
|
for plugin in getActivePlugins():
|
|
874
868
|
plugin.onModuleDiscovered(module)
|
|
875
869
|
|
|
@@ -972,7 +966,7 @@ class Plugins(object):
|
|
|
972
966
|
fake_modules[full_name].append((fake_module, plugin, reason))
|
|
973
967
|
|
|
974
968
|
@staticmethod
|
|
975
|
-
def onModuleSourceCode(module_name, source_code):
|
|
969
|
+
def onModuleSourceCode(module_name, source_filename, source_code):
|
|
976
970
|
assert type(module_name) is ModuleName
|
|
977
971
|
assert type(source_code) is str
|
|
978
972
|
|
|
@@ -980,7 +974,11 @@ class Plugins(object):
|
|
|
980
974
|
|
|
981
975
|
for plugin in getActivePlugins():
|
|
982
976
|
with withPluginModuleNameProblemReporting(plugin, module_name):
|
|
983
|
-
new_source_code = plugin.onModuleSourceCode(
|
|
977
|
+
new_source_code = plugin.onModuleSourceCode(
|
|
978
|
+
module_name=module_name,
|
|
979
|
+
source_filename=source_filename,
|
|
980
|
+
source_code=source_code,
|
|
981
|
+
)
|
|
984
982
|
if new_source_code is not None and new_source_code != source_code:
|
|
985
983
|
source_code = new_source_code
|
|
986
984
|
contributing_plugins.add(plugin)
|
|
@@ -1039,6 +1037,52 @@ class Plugins(object):
|
|
|
1039
1037
|
|
|
1040
1038
|
return result, deciding_plugins
|
|
1041
1039
|
|
|
1040
|
+
module_usage_looked_ahead_cache = set()
|
|
1041
|
+
|
|
1042
|
+
@classmethod
|
|
1043
|
+
def onModuleUsageLookAhead(cls, module_name, module_filename, module_kind):
|
|
1044
|
+
if module_name in cls.module_usage_looked_ahead_cache:
|
|
1045
|
+
return
|
|
1046
|
+
|
|
1047
|
+
cls.module_usage_looked_ahead_cache.add(module_name)
|
|
1048
|
+
|
|
1049
|
+
# Lazy load the source code if a plugin wants it, the pre_load caches
|
|
1050
|
+
# the result for later usage.
|
|
1051
|
+
def getModuleSourceCode():
|
|
1052
|
+
if module_kind != "py":
|
|
1053
|
+
return None
|
|
1054
|
+
|
|
1055
|
+
from nuitka.tree.SourceHandling import readSourceCodeFromFilename
|
|
1056
|
+
|
|
1057
|
+
if os.path.isdir(module_filename):
|
|
1058
|
+
source_filename = os.path.join(module_filename, "__init__.py")
|
|
1059
|
+
else:
|
|
1060
|
+
source_filename = module_filename
|
|
1061
|
+
|
|
1062
|
+
if not os.path.isfile(source_filename):
|
|
1063
|
+
return None
|
|
1064
|
+
|
|
1065
|
+
try:
|
|
1066
|
+
return readSourceCodeFromFilename(
|
|
1067
|
+
module_name=module_name,
|
|
1068
|
+
source_filename=source_filename,
|
|
1069
|
+
pre_load=True,
|
|
1070
|
+
)
|
|
1071
|
+
except SyntaxError as e:
|
|
1072
|
+
# Look ahead just not possible.
|
|
1073
|
+
raise NuitkaSyntaxError(e)
|
|
1074
|
+
|
|
1075
|
+
try:
|
|
1076
|
+
for plugin in getActivePlugins():
|
|
1077
|
+
plugin.onModuleUsageLookAhead(
|
|
1078
|
+
module_name=module_name,
|
|
1079
|
+
module_filename=module_filename,
|
|
1080
|
+
module_kind=module_kind,
|
|
1081
|
+
get_module_source=getModuleSourceCode,
|
|
1082
|
+
)
|
|
1083
|
+
except NuitkaSyntaxError:
|
|
1084
|
+
pass
|
|
1085
|
+
|
|
1042
1086
|
@staticmethod
|
|
1043
1087
|
def onModuleRecursion(
|
|
1044
1088
|
module_name, module_filename, module_kind, using_module_name, source_ref, reason
|
|
@@ -1217,7 +1261,7 @@ class Plugins(object):
|
|
|
1217
1261
|
# We order per plugin, but from the plugins, lets just take a dict
|
|
1218
1262
|
# and achieve determinism by ordering the files by name.
|
|
1219
1263
|
for key, value in sorted(value.items()):
|
|
1220
|
-
if (for_onefile and
|
|
1264
|
+
if (for_onefile and "onefile_" not in key) or (
|
|
1221
1265
|
not for_onefile and "onefile_" in key
|
|
1222
1266
|
):
|
|
1223
1267
|
continue
|
|
@@ -1303,9 +1347,9 @@ class Plugins(object):
|
|
|
1303
1347
|
|
|
1304
1348
|
@classmethod
|
|
1305
1349
|
def encodeDataComposerName(cls, name):
|
|
1350
|
+
# Encoding needs to match generated source code output.
|
|
1306
1351
|
if str is not bytes:
|
|
1307
|
-
|
|
1308
|
-
name = name.encode("latin1")
|
|
1352
|
+
name = name.encode("utf8")
|
|
1309
1353
|
|
|
1310
1354
|
for plugin in getActivePlugins():
|
|
1311
1355
|
r = plugin.encodeDataComposerName(name)
|
|
@@ -1329,6 +1373,19 @@ class Plugins(object):
|
|
|
1329
1373
|
body=body,
|
|
1330
1374
|
)
|
|
1331
1375
|
|
|
1376
|
+
@classmethod
|
|
1377
|
+
def onClassBodyParsing(cls, provider, class_name, node):
|
|
1378
|
+
module_name = provider.getParentModule().getFullName()
|
|
1379
|
+
|
|
1380
|
+
for plugin in getActivePlugins():
|
|
1381
|
+
# TODO: Could record what classes got modified by what plugin
|
|
1382
|
+
# and in what way checking the return value
|
|
1383
|
+
plugin.onClassBodyParsing(
|
|
1384
|
+
module_name=module_name,
|
|
1385
|
+
class_name=class_name,
|
|
1386
|
+
node=node,
|
|
1387
|
+
)
|
|
1388
|
+
|
|
1332
1389
|
@classmethod
|
|
1333
1390
|
def getCacheContributionValues(cls, module_name):
|
|
1334
1391
|
for plugin in getActivePlugins():
|
|
@@ -1336,42 +1393,133 @@ class Plugins(object):
|
|
|
1336
1393
|
yield value
|
|
1337
1394
|
|
|
1338
1395
|
@classmethod
|
|
1339
|
-
def
|
|
1340
|
-
|
|
1341
|
-
|
|
1396
|
+
def getExtraConstantDefaultPopulation(cls):
|
|
1397
|
+
for plugin in getActivePlugins():
|
|
1398
|
+
for value in plugin.getExtraConstantDefaultPopulation():
|
|
1399
|
+
yield value
|
|
1342
1400
|
|
|
1343
|
-
|
|
1401
|
+
@classmethod
|
|
1402
|
+
def _decideWithoutDisagreement(
|
|
1403
|
+
cls,
|
|
1404
|
+
method_name,
|
|
1405
|
+
call_per_plugin,
|
|
1406
|
+
legal_values,
|
|
1407
|
+
abstain_values,
|
|
1408
|
+
get_default_value,
|
|
1409
|
+
):
|
|
1410
|
+
result = abstain_values[0]
|
|
1344
1411
|
plugin_name = None
|
|
1345
1412
|
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
value = plugin.decideAllowOutsideDependencies(module_name)
|
|
1413
|
+
for plugin in getActivePlugins():
|
|
1414
|
+
value = call_per_plugin(plugin)
|
|
1349
1415
|
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
)
|
|
1416
|
+
if value not in legal_values:
|
|
1417
|
+
plugin.sysexit(
|
|
1418
|
+
"Error, can only return '%s' from '%s' not %r"
|
|
1419
|
+
% (legal_values, method_name, value)
|
|
1420
|
+
)
|
|
1356
1421
|
|
|
1357
|
-
|
|
1422
|
+
if value in abstain_values:
|
|
1423
|
+
continue
|
|
1424
|
+
|
|
1425
|
+
if value != result:
|
|
1426
|
+
if result in abstain_values:
|
|
1427
|
+
result = value
|
|
1358
1428
|
plugin_name = plugin.plugin_name
|
|
1429
|
+
else:
|
|
1430
|
+
plugin.sysexit(
|
|
1431
|
+
"Error, conflicting value '%s' with plug-in '%s' value '%s'."
|
|
1432
|
+
% (value, plugin_name, result)
|
|
1433
|
+
)
|
|
1434
|
+
if result in abstain_values:
|
|
1435
|
+
result = get_default_value()
|
|
1359
1436
|
|
|
1360
|
-
|
|
1361
|
-
if result is False:
|
|
1362
|
-
plugin.sysexit(
|
|
1363
|
-
"Error, conflicting allow/disallow outside dependencies of plug-in '%s'."
|
|
1364
|
-
% plugin_name
|
|
1365
|
-
)
|
|
1437
|
+
return result
|
|
1366
1438
|
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1439
|
+
decide_annotations_cache = {}
|
|
1440
|
+
|
|
1441
|
+
@classmethod
|
|
1442
|
+
def decideAnnotations(cls, module_name):
|
|
1443
|
+
# For Python2 it's not a thing.
|
|
1444
|
+
if str is bytes:
|
|
1445
|
+
return False
|
|
1446
|
+
|
|
1447
|
+
if module_name not in cls.decide_annotations_cache:
|
|
1448
|
+
cls.decide_annotations_cache[module_name] = cls._decideWithoutDisagreement(
|
|
1449
|
+
call_per_plugin=lambda plugin: plugin.decideAnnotations(module_name),
|
|
1450
|
+
legal_values=(None, True, False),
|
|
1451
|
+
abstain_values=(None,),
|
|
1452
|
+
method_name="decideAnnotations",
|
|
1453
|
+
get_default_value=lambda: not Options.hasPythonFlagNoAnnotations(),
|
|
1454
|
+
)
|
|
1455
|
+
|
|
1456
|
+
return cls.decide_annotations_cache[module_name]
|
|
1457
|
+
|
|
1458
|
+
decide_doc_strings_cache = {}
|
|
1459
|
+
|
|
1460
|
+
@classmethod
|
|
1461
|
+
def decideDocStrings(cls, module_name):
|
|
1462
|
+
if module_name not in cls.decide_doc_strings_cache:
|
|
1463
|
+
cls.decide_doc_strings_cache[module_name] = cls._decideWithoutDisagreement(
|
|
1464
|
+
call_per_plugin=lambda plugin: plugin.decideDocStrings(module_name),
|
|
1465
|
+
legal_values=(None, True, False),
|
|
1466
|
+
abstain_values=(None,),
|
|
1467
|
+
method_name="decideDocStrings",
|
|
1468
|
+
get_default_value=lambda: not Options.hasPythonFlagNoDocStrings(),
|
|
1469
|
+
)
|
|
1470
|
+
|
|
1471
|
+
return cls.decide_doc_strings_cache[module_name]
|
|
1472
|
+
|
|
1473
|
+
decide_assertions_cache = {}
|
|
1474
|
+
|
|
1475
|
+
@classmethod
|
|
1476
|
+
def decideAssertions(cls, module_name):
|
|
1477
|
+
if module_name not in cls.decide_assertions_cache:
|
|
1478
|
+
cls.decide_assertions_cache[module_name] = cls._decideWithoutDisagreement(
|
|
1479
|
+
call_per_plugin=lambda plugin: plugin.decideAssertions(module_name),
|
|
1480
|
+
legal_values=(None, True, False),
|
|
1481
|
+
abstain_values=(None,),
|
|
1482
|
+
method_name="decideAssertions",
|
|
1483
|
+
get_default_value=lambda: not Options.hasPythonFlagNoAsserts(),
|
|
1484
|
+
)
|
|
1485
|
+
|
|
1486
|
+
return cls.decide_assertions_cache[module_name]
|
|
1487
|
+
|
|
1488
|
+
@classmethod
|
|
1489
|
+
def decideAllowOutsideDependencies(cls, module_name):
|
|
1490
|
+
result = None
|
|
1491
|
+
plugin_name = None
|
|
1492
|
+
|
|
1493
|
+
assert module_name is not None
|
|
1494
|
+
|
|
1495
|
+
for plugin in getActivePlugins():
|
|
1496
|
+
value = plugin.decideAllowOutsideDependencies(module_name)
|
|
1497
|
+
|
|
1498
|
+
if value is True:
|
|
1499
|
+
if result is False:
|
|
1370
1500
|
plugin.sysexit(
|
|
1371
|
-
"Error,
|
|
1372
|
-
%
|
|
1501
|
+
"Error, conflicting allow/disallow outside dependencies of plug-in '%s'."
|
|
1502
|
+
% plugin_name
|
|
1373
1503
|
)
|
|
1374
1504
|
|
|
1505
|
+
result = True
|
|
1506
|
+
plugin_name = plugin.plugin_name
|
|
1507
|
+
|
|
1508
|
+
elif value is False:
|
|
1509
|
+
if result is False:
|
|
1510
|
+
plugin.sysexit(
|
|
1511
|
+
"Error, conflicting allow/disallow outside dependencies of plug-in '%s'."
|
|
1512
|
+
% plugin_name
|
|
1513
|
+
)
|
|
1514
|
+
|
|
1515
|
+
result = False
|
|
1516
|
+
plugin_name = plugin.plugin_name
|
|
1517
|
+
elif value is not None:
|
|
1518
|
+
plugin.sysexit(
|
|
1519
|
+
"Error, can only return True, False, None from 'decideAllowOutsideDependencies' not %r"
|
|
1520
|
+
% value
|
|
1521
|
+
)
|
|
1522
|
+
|
|
1375
1523
|
return result
|
|
1376
1524
|
|
|
1377
1525
|
@classmethod
|
|
@@ -1381,7 +1529,7 @@ class Plugins(object):
|
|
|
1381
1529
|
# Not a DLL filename, then it cannot be true, but it's kind of strange
|
|
1382
1530
|
# to get asked.
|
|
1383
1531
|
if dll_basename is None:
|
|
1384
|
-
return
|
|
1532
|
+
return None, None
|
|
1385
1533
|
|
|
1386
1534
|
result = None
|
|
1387
1535
|
plugin_name = None
|
|
@@ -1735,3 +1883,41 @@ def replaceTriggerModule(old, new):
|
|
|
1735
1883
|
def isTriggerModule(module):
|
|
1736
1884
|
"""Decide of a module is a trigger module."""
|
|
1737
1885
|
return module in pre_modules.values() or module in post_modules.values()
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
# TODO: Make this a dedicated thing generally.
|
|
1889
|
+
def _getMainModulePreloadCodes():
|
|
1890
|
+
forced_runtime_env_variable_values = tuple(
|
|
1891
|
+
Options.getForcedRuntimeEnvironmentVariableValues()
|
|
1892
|
+
)
|
|
1893
|
+
if not forced_runtime_env_variable_values:
|
|
1894
|
+
return
|
|
1895
|
+
|
|
1896
|
+
result = ["import os"]
|
|
1897
|
+
|
|
1898
|
+
for (
|
|
1899
|
+
forced_runtime_env_variable_name,
|
|
1900
|
+
forced_runtime_env_variable_value,
|
|
1901
|
+
) in forced_runtime_env_variable_values:
|
|
1902
|
+
result.append(
|
|
1903
|
+
"os.environ['%s'] = '%s'"
|
|
1904
|
+
% (forced_runtime_env_variable_name, forced_runtime_env_variable_value)
|
|
1905
|
+
)
|
|
1906
|
+
|
|
1907
|
+
yield ("\n".join(result), "forcing environment variable(s)")
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1911
|
+
# integrates with CPython, but also works on its own.
|
|
1912
|
+
#
|
|
1913
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1914
|
+
# you may not use this file except in compliance with the License.
|
|
1915
|
+
# You may obtain a copy of the License at
|
|
1916
|
+
#
|
|
1917
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1918
|
+
#
|
|
1919
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1920
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1921
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1922
|
+
# See the License for the specific language governing permissions and
|
|
1923
|
+
# limitations under the License.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
Plugins: Welcome to Nuitka! This is your shortest way to become part of it.
|
|
6
|
+
|
|
7
|
+
This is to provide the base class for all Yaml plugins. These deal with the
|
|
8
|
+
configuration files of Nuitka.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from nuitka.utils.Yaml import getYamlPackageConfiguration
|
|
12
|
+
|
|
13
|
+
from .PluginBase import NuitkaPluginBase
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NuitkaYamlPluginBase(NuitkaPluginBase):
|
|
17
|
+
"""Nuitka base class for all plugins that use yaml config"""
|
|
18
|
+
|
|
19
|
+
def __init__(self):
|
|
20
|
+
self.config = getYamlPackageConfiguration()
|
|
21
|
+
|
|
22
|
+
def getYamlConfigItem(
|
|
23
|
+
self, module_name, section, item_name, decide_relevant, default, recursive
|
|
24
|
+
):
|
|
25
|
+
while True:
|
|
26
|
+
module_configs = self.config.get(module_name, section=section)
|
|
27
|
+
|
|
28
|
+
if module_configs is not None:
|
|
29
|
+
for module_config in module_configs:
|
|
30
|
+
config_item = module_config.get(item_name, default)
|
|
31
|
+
|
|
32
|
+
# Avoid condition, if the item is not relevant
|
|
33
|
+
if decide_relevant is not None and not decide_relevant(config_item):
|
|
34
|
+
continue
|
|
35
|
+
|
|
36
|
+
if not self.evaluateCondition(
|
|
37
|
+
full_name=module_name,
|
|
38
|
+
condition=module_config.get("when", "True"),
|
|
39
|
+
):
|
|
40
|
+
continue
|
|
41
|
+
|
|
42
|
+
if recursive:
|
|
43
|
+
yield module_name, config_item
|
|
44
|
+
else:
|
|
45
|
+
yield config_item
|
|
46
|
+
|
|
47
|
+
if not recursive:
|
|
48
|
+
break
|
|
49
|
+
|
|
50
|
+
module_name = module_name.getPackageName()
|
|
51
|
+
if not module_name:
|
|
52
|
+
break
|
|
53
|
+
|
|
54
|
+
def getYamlConfigItemItems(
|
|
55
|
+
self, module_name, section, item_name, decide_relevant, recursive
|
|
56
|
+
):
|
|
57
|
+
def dict_decide_relevant(item_dict):
|
|
58
|
+
if not item_dict:
|
|
59
|
+
return False
|
|
60
|
+
|
|
61
|
+
if decide_relevant is None:
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
for key, value in item_dict.items():
|
|
65
|
+
if decide_relevant(key, value):
|
|
66
|
+
return True
|
|
67
|
+
|
|
68
|
+
return False
|
|
69
|
+
|
|
70
|
+
for item_config in self.getYamlConfigItem(
|
|
71
|
+
module_name=module_name,
|
|
72
|
+
section=section,
|
|
73
|
+
item_name=item_name,
|
|
74
|
+
decide_relevant=dict_decide_relevant,
|
|
75
|
+
default={},
|
|
76
|
+
recursive=recursive,
|
|
77
|
+
):
|
|
78
|
+
if recursive:
|
|
79
|
+
for key, value in item_config[1].items():
|
|
80
|
+
if decide_relevant(key, value):
|
|
81
|
+
yield item_config[0], key, value
|
|
82
|
+
else:
|
|
83
|
+
for key, value in item_config.items():
|
|
84
|
+
if decide_relevant(key, value):
|
|
85
|
+
yield key, value
|
|
86
|
+
|
|
87
|
+
def getYamlConfigItemSet(
|
|
88
|
+
self, module_name, section, item_name, decide_relevant, recursive
|
|
89
|
+
):
|
|
90
|
+
for item_config in self.getYamlConfigItem(
|
|
91
|
+
module_name=module_name,
|
|
92
|
+
section=section,
|
|
93
|
+
item_name=item_name,
|
|
94
|
+
decide_relevant=None,
|
|
95
|
+
default=(),
|
|
96
|
+
recursive=recursive,
|
|
97
|
+
):
|
|
98
|
+
if recursive:
|
|
99
|
+
for value in item_config[1]:
|
|
100
|
+
if decide_relevant is None or decide_relevant(value):
|
|
101
|
+
yield item_config[0], value
|
|
102
|
+
else:
|
|
103
|
+
for value in item_config:
|
|
104
|
+
if decide_relevant is None or decide_relevant(value):
|
|
105
|
+
yield value
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
109
|
+
# integrates with CPython, but also works on its own.
|
|
110
|
+
#
|
|
111
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
112
|
+
# you may not use this file except in compliance with the License.
|
|
113
|
+
# You may obtain a copy of the License at
|
|
114
|
+
#
|
|
115
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
116
|
+
#
|
|
117
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
118
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
119
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
120
|
+
# See the License for the specific language governing permissions and
|
|
121
|
+
# limitations under the License.
|
nuitka/plugins/__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. """
|