Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__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.4.8.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
- Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +18 -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 +400 -0
- nuitka/MainControl.py +200 -112
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +368 -175
- nuitka/Options.py +632 -213
- nuitka/OutputDirectories.py +40 -21
- nuitka/PostProcessing.py +73 -50
- nuitka/Progress.py +58 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +106 -19
- nuitka/Serialization.py +68 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +108 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +21 -7
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +202 -140
- nuitka/build/CCompilerVersion.scons +39 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +50 -54
- nuitka/build/SconsCaching.py +93 -90
- nuitka/build/SconsCompilerSettings.py +157 -69
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +154 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +147 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +105 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +18 -18
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
- 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 +91 -53
- 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 +29 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- 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 +593 -190
- 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 -18
- 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 +17 -17
- 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 +24 -22
- 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 +32 -20
- nuitka/build/include/nuitka/helper/iterators.h +17 -17
- 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 +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -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_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 +17 -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 +17 -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 +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +29 -17
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +14 -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 +38 -20
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +128 -46
- nuitka/build/include/nuitka/printing.h +22 -17
- 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 +32 -33
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +27 -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/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 +176 -182
- nuitka/build/static_src/CompiledCellType.c +63 -40
- nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
- nuitka/build/static_src/CompiledCoroutineType.c +196 -203
- nuitka/build/static_src/CompiledFrameType.c +287 -133
- nuitka/build/static_src/CompiledFunctionType.c +389 -95
- nuitka/build/static_src/CompiledGeneratorType.c +376 -252
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
- nuitka/build/static_src/CompiledMethodType.c +83 -71
- nuitka/build/static_src/HelpersAllocator.c +88 -19
- nuitka/build/static_src/HelpersAttributes.c +33 -54
- nuitka/build/static_src/HelpersBuiltin.c +43 -33
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +33 -30
- nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonEq.c +518 -492
- nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
- nuitka/build/static_src/HelpersComparisonGe.c +513 -497
- nuitka/build/static_src/HelpersComparisonGt.c +512 -496
- nuitka/build/static_src/HelpersComparisonLe.c +513 -497
- nuitka/build/static_src/HelpersComparisonLt.c +512 -496
- nuitka/build/static_src/HelpersComparisonNe.c +520 -492
- nuitka/build/static_src/HelpersConsole.c +96 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +51 -29
- nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
- 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 +161 -50
- nuitka/build/static_src/HelpersFiles.c +37 -17
- 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 +48 -20
- nuitka/build/static_src/HelpersImportHard.c +53 -17
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +140 -50
- 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 +173 -146
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
- nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
- nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
- nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
- nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
- nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
- nuitka/build/static_src/HelpersProfiling.c +24 -23
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +88 -20
- 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 +234 -37
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +68 -23
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +359 -263
- nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
- nuitka/build/static_src/OnefileBootstrap.c +276 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +19 -17
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +20 -17
- nuitka/code_generation/CallCodes.py +19 -17
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +48 -27
- nuitka/code_generation/CodeHelperSelection.py +19 -17
- nuitka/code_generation/CodeHelpers.py +24 -20
- nuitka/code_generation/CodeObjectCodes.py +34 -24
- nuitka/code_generation/ComparisonCodes.py +38 -20
- nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +152 -26
- nuitka/code_generation/CoroutineCodes.py +19 -17
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +25 -23
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +27 -33
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +27 -18
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +24 -20
- nuitka/code_generation/FunctionCodes.py +24 -21
- nuitka/code_generation/GeneratorCodes.py +23 -20
- nuitka/code_generation/GlobalConstants.py +43 -23
- nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
- 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 +19 -17
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +19 -17
- 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 +43 -25
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +29 -31
- nuitka/code_generation/PackageResourceCodes.py +59 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +19 -17
- nuitka/code_generation/Reports.py +19 -17
- nuitka/code_generation/ReturnCodes.py +19 -17
- 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 +19 -17
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +71 -0
- nuitka/code_generation/VariableCodes.py +26 -22
- nuitka/code_generation/VariableDeclarations.py +20 -17
- nuitka/code_generation/YieldCodes.py +22 -20
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +19 -17
- 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 +19 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
- nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
- nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
- nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -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 +18 -18
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
- 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 +121 -48
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
- 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/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
- 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 +44 -32
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
- 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 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
- 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 +19 -18
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +19 -18
- nuitka/distutils/DistutilCommands.py +34 -23
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +20 -17
- nuitka/finalizations/FinalizeMarkups.py +21 -41
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +48 -28
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +147 -57
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +29 -21
- nuitka/freezer/ImportDetection.py +20 -17
- nuitka/freezer/IncludedDataFiles.py +118 -47
- nuitka/freezer/IncludedEntryPoints.py +102 -38
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +105 -50
- 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 +286 -92
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +131 -47
- nuitka/importing/StandardLibrary.py +46 -28
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +19 -17
- 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 +24 -20
- 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 +68 -19
- 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 +1250 -302
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +21 -23
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +19 -17
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +29 -17
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +54 -32
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +19 -17
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +81 -35
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +21 -19
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +545 -129
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +436 -446
- 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 +45 -43
- nuitka/nodes/NodeMakingHelpers.py +21 -19
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +20 -17
- nuitka/nodes/OsSysNodes.py +66 -18
- nuitka/nodes/OutlineNodes.py +22 -20
- 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 -77
- nuitka/nodes/StatementNodes.py +19 -17
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +26 -24
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +40 -17
- 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 +145 -39
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +40 -17
- nuitka/nodes/shapes/StandardShapes.py +27 -20
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +19 -17
- 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 +610 -109
- nuitka/plugins/Plugins.py +241 -58
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
- 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 +407 -46
- nuitka/plugins/standard/KivyPlugin.py +30 -17
- nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
- 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/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +74 -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 +103 -53
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +94 -30
- 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 +3449 -1299
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
- nuitka/reports/CompilationReportReader.py +67 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +352 -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 +30 -20
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +67 -22
- nuitka/specs/ParameterSpecs.py +56 -41
- 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 +19 -21
- 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 +93 -71
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +31 -27
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +106 -52
- 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 +36 -29
- 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 +22 -25
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
- nuitka/tools/watch/AutoStage.py +144 -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 +176 -147
- nuitka/tree/ComplexCallHelperFunctions.py +80 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +20 -17
- nuitka/tree/ReformulationAssignmentStatements.py +92 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +146 -98
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +40 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +58 -54
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +244 -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 +21 -19
- 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 +84 -19
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +73 -34
- nuitka/utils/FileOperations.py +318 -74
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +118 -24
- nuitka/utils/InstalledPythons.py +80 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +19 -17
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- 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 +115 -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.4.8.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
nuitka/plugins/PluginBase.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
|
Plugins: Welcome to Nuitka! This is your shortest way to become part of it.
|
|
20
6
|
|
|
@@ -31,9 +17,10 @@ import functools
|
|
|
31
17
|
import inspect
|
|
32
18
|
import os
|
|
33
19
|
import sys
|
|
20
|
+
import unittest
|
|
34
21
|
|
|
35
22
|
from nuitka import Options
|
|
36
|
-
from nuitka.__past__ import
|
|
23
|
+
from nuitka.__past__ import iter_modules, unicode
|
|
37
24
|
from nuitka.containers.Namedtuples import makeNamedtupleClass
|
|
38
25
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
39
26
|
from nuitka.freezer.IncludedDataFiles import (
|
|
@@ -50,27 +37,53 @@ from nuitka.freezer.IncludedEntryPoints import (
|
|
|
50
37
|
)
|
|
51
38
|
from nuitka.ModuleRegistry import (
|
|
52
39
|
addModuleInfluencingCondition,
|
|
40
|
+
addModuleInfluencingDetection,
|
|
41
|
+
addModuleInfluencingParameter,
|
|
42
|
+
addModuleInfluencingVariable,
|
|
53
43
|
getModuleInclusionInfoByName,
|
|
54
44
|
)
|
|
55
45
|
from nuitka.Options import (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
getCompanyName,
|
|
47
|
+
getFileVersion,
|
|
48
|
+
getProductFileVersion,
|
|
49
|
+
getProductName,
|
|
50
|
+
getProductVersion,
|
|
59
51
|
isDeploymentMode,
|
|
52
|
+
isOnefileMode,
|
|
53
|
+
isOnefileTempDirMode,
|
|
60
54
|
isStandaloneMode,
|
|
61
55
|
shallCreateAppBundle,
|
|
62
56
|
shallMakeModule,
|
|
63
57
|
shallShowExecutedCommands,
|
|
64
58
|
)
|
|
65
|
-
from nuitka.PythonFlavors import
|
|
59
|
+
from nuitka.PythonFlavors import (
|
|
60
|
+
isAnacondaPython,
|
|
61
|
+
isDebianPackagePython,
|
|
62
|
+
isNuitkaPython,
|
|
63
|
+
)
|
|
66
64
|
from nuitka.PythonVersions import (
|
|
67
65
|
getTestExecutionPythonVersions,
|
|
68
66
|
python_version,
|
|
67
|
+
python_version_full_str,
|
|
68
|
+
python_version_str,
|
|
69
69
|
)
|
|
70
70
|
from nuitka.Tracing import plugins_logger
|
|
71
|
-
from nuitka.utils.
|
|
72
|
-
from nuitka.utils.
|
|
73
|
-
|
|
71
|
+
from nuitka.utils.AppDirs import getAppdirsModule
|
|
72
|
+
from nuitka.utils.Distributions import (
|
|
73
|
+
getDistributionFromModuleName,
|
|
74
|
+
getDistributionName,
|
|
75
|
+
isDistributionCondaPackage,
|
|
76
|
+
)
|
|
77
|
+
from nuitka.utils.Execution import (
|
|
78
|
+
NuitkaCalledProcessError,
|
|
79
|
+
check_output,
|
|
80
|
+
withEnvironmentVarsOverridden,
|
|
81
|
+
)
|
|
82
|
+
from nuitka.utils.FileOperations import (
|
|
83
|
+
changeFilenameExtension,
|
|
84
|
+
getFileContents,
|
|
85
|
+
)
|
|
86
|
+
from nuitka.utils.Importing import getSharedLibrarySuffix, isBuiltinModuleName
|
|
74
87
|
from nuitka.utils.ModuleNames import (
|
|
75
88
|
ModuleName,
|
|
76
89
|
makeTriggerModuleName,
|
|
@@ -78,11 +91,15 @@ from nuitka.utils.ModuleNames import (
|
|
|
78
91
|
pre_module_load_trigger_name,
|
|
79
92
|
)
|
|
80
93
|
from nuitka.utils.SharedLibraries import locateDLL, locateDLLsInDirectory
|
|
94
|
+
from nuitka.utils.SlotMetaClasses import getMetaClassBase
|
|
95
|
+
from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
|
|
81
96
|
from nuitka.utils.Utils import (
|
|
82
97
|
getArchitecture,
|
|
98
|
+
isAndroidBasedLinux,
|
|
83
99
|
isLinux,
|
|
84
100
|
isMacOS,
|
|
85
101
|
isWin32Windows,
|
|
102
|
+
withNoWarning,
|
|
86
103
|
)
|
|
87
104
|
|
|
88
105
|
_warned_unused_plugins = set()
|
|
@@ -94,6 +111,127 @@ _package_versions = {}
|
|
|
94
111
|
# "getEvaluationConditionControlTags" value.
|
|
95
112
|
control_tags = {}
|
|
96
113
|
|
|
114
|
+
_context_dict = None
|
|
115
|
+
|
|
116
|
+
# Populated when "constants" and "variables" yaml sections get evaluated.
|
|
117
|
+
_module_config_constants = {}
|
|
118
|
+
_module_config_variables = {}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _getImportLibModule():
|
|
122
|
+
try:
|
|
123
|
+
import importlib
|
|
124
|
+
except ImportError:
|
|
125
|
+
return None
|
|
126
|
+
else:
|
|
127
|
+
return importlib
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _makeEvaluationContext(logger, full_name, config_name):
|
|
131
|
+
context = TagContext(logger=logger, full_name=full_name, config_name=config_name)
|
|
132
|
+
context.update(control_tags)
|
|
133
|
+
|
|
134
|
+
context.update(_getEvaluationContext())
|
|
135
|
+
|
|
136
|
+
return context
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def _getEvaluationContext():
|
|
140
|
+
# Using global here, as this is really a singleton, in the form of a module,
|
|
141
|
+
# pylint: disable=global-statement
|
|
142
|
+
global _context_dict
|
|
143
|
+
|
|
144
|
+
if _context_dict is None:
|
|
145
|
+
_context_dict = {
|
|
146
|
+
"macos": isMacOS(),
|
|
147
|
+
"win32": isWin32Windows(),
|
|
148
|
+
"linux": isLinux(),
|
|
149
|
+
"android": isAndroidBasedLinux(),
|
|
150
|
+
"android32": isAndroidBasedLinux() and sys.maxsize < 2**32,
|
|
151
|
+
"android64": isAndroidBasedLinux() and sys.maxsize >= 2**64 - 1,
|
|
152
|
+
"anaconda": isAnacondaPython(),
|
|
153
|
+
"is_conda_package": isDistributionCondaPackage,
|
|
154
|
+
"debian_python": isDebianPackagePython(),
|
|
155
|
+
"nuitka_python": isNuitkaPython(),
|
|
156
|
+
"standalone": isStandaloneMode(),
|
|
157
|
+
"onefile": isOnefileMode(),
|
|
158
|
+
"onefile_cached": not isOnefileTempDirMode(),
|
|
159
|
+
"module_mode": shallMakeModule(),
|
|
160
|
+
"deployment": isDeploymentMode(),
|
|
161
|
+
# Version information
|
|
162
|
+
"company": getCompanyName(),
|
|
163
|
+
"product": getProductName(),
|
|
164
|
+
"file_version": getFileVersion(),
|
|
165
|
+
"product_version": getProductVersion(),
|
|
166
|
+
"combined_version": getProductFileVersion(),
|
|
167
|
+
# Querying package versions.
|
|
168
|
+
"version": _getPackageVersion,
|
|
169
|
+
"version_str": _getPackageVersionStr,
|
|
170
|
+
"get_dist_name": _getDistributionNameFromPackageName,
|
|
171
|
+
"plugin": _isPluginActive,
|
|
172
|
+
# Iterating packages
|
|
173
|
+
"iterate_modules": _iterate_module_names,
|
|
174
|
+
# Locating package directories
|
|
175
|
+
"_get_module_directory": _getModuleDirectory,
|
|
176
|
+
# Querying package properties
|
|
177
|
+
"has_builtin_module": isBuiltinModuleName,
|
|
178
|
+
# Architectures
|
|
179
|
+
"arch_x86": getArchitecture() == "x86",
|
|
180
|
+
"arch_amd64": getArchitecture() == "x86_64",
|
|
181
|
+
"arch_arm64": getArchitecture() == "arm64",
|
|
182
|
+
# Frequent used modules
|
|
183
|
+
"sys": sys,
|
|
184
|
+
"os": os,
|
|
185
|
+
"importlib": _getImportLibModule(),
|
|
186
|
+
"appdirs": getAppdirsModule(),
|
|
187
|
+
"unittest": unittest,
|
|
188
|
+
# Python version string
|
|
189
|
+
"python_version_str": python_version_str,
|
|
190
|
+
"python_version_full_str": python_version_full_str,
|
|
191
|
+
# Technical requirements
|
|
192
|
+
"static_libpython": getSystemStaticLibPythonPath() is not None,
|
|
193
|
+
# Builtins
|
|
194
|
+
"True": True,
|
|
195
|
+
"False": False,
|
|
196
|
+
"None": None,
|
|
197
|
+
"repr": repr,
|
|
198
|
+
"len": len,
|
|
199
|
+
"str": str,
|
|
200
|
+
"bool": bool,
|
|
201
|
+
"int": int,
|
|
202
|
+
"tuple": tuple,
|
|
203
|
+
"list": list,
|
|
204
|
+
"dict": dict,
|
|
205
|
+
"set": set,
|
|
206
|
+
"getattr": getattr,
|
|
207
|
+
"hasattr": hasattr,
|
|
208
|
+
"frozenset": frozenset,
|
|
209
|
+
"__import__": __import__,
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
versions = getTestExecutionPythonVersions()
|
|
213
|
+
|
|
214
|
+
for version in versions:
|
|
215
|
+
big, major = version.split(".")
|
|
216
|
+
numeric_version = int(big) * 256 + int(major) * 16
|
|
217
|
+
is_same_or_higher_version = python_version >= numeric_version
|
|
218
|
+
|
|
219
|
+
_context_dict["python" + big + major + "_or_higher"] = (
|
|
220
|
+
is_same_or_higher_version
|
|
221
|
+
)
|
|
222
|
+
_context_dict["before_python" + big + major] = not is_same_or_higher_version
|
|
223
|
+
|
|
224
|
+
_context_dict["before_python3"] = python_version < 0x300
|
|
225
|
+
_context_dict["python3_or_higher"] = python_version >= 0x300
|
|
226
|
+
|
|
227
|
+
if not isNuitkaPython():
|
|
228
|
+
_context_dict["extension_std_suffix"] = getSharedLibrarySuffix(
|
|
229
|
+
preferred=True
|
|
230
|
+
)
|
|
231
|
+
_context_dict["extension_suffix"] = getSharedLibrarySuffix(preferred=False)
|
|
232
|
+
|
|
233
|
+
return _context_dict
|
|
234
|
+
|
|
97
235
|
|
|
98
236
|
def _convertVersionToTuple(version_str):
|
|
99
237
|
def numberize(v):
|
|
@@ -104,6 +242,8 @@ def _convertVersionToTuple(version_str):
|
|
|
104
242
|
|
|
105
243
|
|
|
106
244
|
def _getPackageNameFromDistributionName(distribution_name):
|
|
245
|
+
# spell-checker: ignore opencv, pyobjc, objc
|
|
246
|
+
|
|
107
247
|
if distribution_name in ("opencv-python", "opencv-python-headless"):
|
|
108
248
|
return "cv2"
|
|
109
249
|
elif distribution_name == "pyobjc":
|
|
@@ -112,6 +252,16 @@ def _getPackageNameFromDistributionName(distribution_name):
|
|
|
112
252
|
return distribution_name
|
|
113
253
|
|
|
114
254
|
|
|
255
|
+
def _getDistributionNameFromPackageName(package_name):
|
|
256
|
+
package_name = ModuleName(package_name)
|
|
257
|
+
distribution = getDistributionFromModuleName(package_name)
|
|
258
|
+
|
|
259
|
+
if distribution is None:
|
|
260
|
+
return package_name.asString()
|
|
261
|
+
else:
|
|
262
|
+
return getDistributionName(distribution)
|
|
263
|
+
|
|
264
|
+
|
|
115
265
|
def _getPackageVersion(distribution_name):
|
|
116
266
|
if distribution_name not in _package_versions:
|
|
117
267
|
try:
|
|
@@ -157,13 +307,48 @@ def _getPackageVersion(distribution_name):
|
|
|
157
307
|
return _package_versions[distribution_name]
|
|
158
308
|
|
|
159
309
|
|
|
310
|
+
def _getPackageVersionStr(distribution_name):
|
|
311
|
+
version = _getPackageVersion(distribution_name)
|
|
312
|
+
|
|
313
|
+
if version is not None:
|
|
314
|
+
version = ".".join(str(d) for d in version)
|
|
315
|
+
|
|
316
|
+
return version
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def _getModuleDirectory(module_name):
|
|
320
|
+
from nuitka.importing.Importing import locateModule
|
|
321
|
+
|
|
322
|
+
_module_name, module_filename, _module_kind, _finding = locateModule(
|
|
323
|
+
module_name=ModuleName(module_name), parent_package=None, level=0
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
return module_filename
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
def _iterate_module_names(package_name):
|
|
330
|
+
package_name = ModuleName(package_name)
|
|
331
|
+
package_path = _getModuleDirectory(module_name=package_name)
|
|
332
|
+
|
|
333
|
+
result = []
|
|
334
|
+
|
|
335
|
+
for module_info in iter_modules([package_path]):
|
|
336
|
+
module_name = package_name.getChildNamed(module_info.name)
|
|
337
|
+
result.append(module_name.asString())
|
|
338
|
+
|
|
339
|
+
if module_info.ispkg: # spell-checker: ignore ispkg
|
|
340
|
+
result.extend(_iterate_module_names(package_name=module_name))
|
|
341
|
+
|
|
342
|
+
return result
|
|
343
|
+
|
|
344
|
+
|
|
160
345
|
def _isPluginActive(plugin_name):
|
|
161
346
|
from .Plugins import getUserActivatedPluginNames
|
|
162
347
|
|
|
163
348
|
return plugin_name in getUserActivatedPluginNames()
|
|
164
349
|
|
|
165
350
|
|
|
166
|
-
class NuitkaPluginBase(getMetaClassBase("Plugin")):
|
|
351
|
+
class NuitkaPluginBase(getMetaClassBase("Plugin", require_slots=False)):
|
|
167
352
|
"""Nuitka base class for all plugins.
|
|
168
353
|
|
|
169
354
|
Derive your plugin from "NuitkaPluginBase" please.
|
|
@@ -273,7 +458,7 @@ class NuitkaPluginBase(getMetaClassBase("Plugin")):
|
|
|
273
458
|
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
274
459
|
return ()
|
|
275
460
|
|
|
276
|
-
def onModuleSourceCode(self, module_name, source_code):
|
|
461
|
+
def onModuleSourceCode(self, module_name, source_filename, source_code):
|
|
277
462
|
"""Inspect or modify source code.
|
|
278
463
|
|
|
279
464
|
Args:
|
|
@@ -286,6 +471,7 @@ class NuitkaPluginBase(getMetaClassBase("Plugin")):
|
|
|
286
471
|
going to allow simply checking the source code without the need to
|
|
287
472
|
pass it back.
|
|
288
473
|
"""
|
|
474
|
+
# Virtual method, pylint: disable=unused-argument
|
|
289
475
|
self.checkModuleSourceCode(module_name, source_code)
|
|
290
476
|
|
|
291
477
|
return source_code
|
|
@@ -431,6 +617,25 @@ class NuitkaPluginBase(getMetaClassBase("Plugin")):
|
|
|
431
617
|
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
432
618
|
return None
|
|
433
619
|
|
|
620
|
+
def onModuleUsageLookAhead(
|
|
621
|
+
self, module_name, module_filename, module_kind, get_module_source
|
|
622
|
+
):
|
|
623
|
+
"""React to tentative recursion of a module coming up.
|
|
624
|
+
|
|
625
|
+
For definite usage, use onModuleRecursion where it's a fact and
|
|
626
|
+
happening next. This may be a usage that is later optimized away
|
|
627
|
+
and doesn't impact anything. The main usage is to setup e.g.
|
|
628
|
+
hard imports as a factory, e.g. with detectable lazy loaders.
|
|
629
|
+
|
|
630
|
+
Args:
|
|
631
|
+
module_name: full module name
|
|
632
|
+
module_filename: filename
|
|
633
|
+
module_kind: one of "py", "extension" (shared library)
|
|
634
|
+
get_module_source: callable to get module source code if any
|
|
635
|
+
Returns:
|
|
636
|
+
None
|
|
637
|
+
"""
|
|
638
|
+
|
|
434
639
|
def onModuleRecursion(
|
|
435
640
|
self,
|
|
436
641
|
module_name,
|
|
@@ -440,7 +645,7 @@ class NuitkaPluginBase(getMetaClassBase("Plugin")):
|
|
|
440
645
|
source_ref,
|
|
441
646
|
reason,
|
|
442
647
|
):
|
|
443
|
-
"""React to recursion
|
|
648
|
+
"""React to recursion of a module coming up.
|
|
444
649
|
|
|
445
650
|
Args:
|
|
446
651
|
module_name: full module name
|
|
@@ -555,22 +760,28 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
555
760
|
"""
|
|
556
761
|
return locateDLLsInDirectory(directory)
|
|
557
762
|
|
|
558
|
-
def makeDllEntryPoint(
|
|
763
|
+
def makeDllEntryPoint(
|
|
764
|
+
self, source_path, dest_path, module_name, package_name, reason
|
|
765
|
+
):
|
|
559
766
|
"""Create an entry point, as expected to be provided by getExtraDlls."""
|
|
560
767
|
return makeDllEntryPoint(
|
|
561
768
|
logger=self,
|
|
562
769
|
source_path=source_path,
|
|
563
770
|
dest_path=dest_path,
|
|
771
|
+
module_name=module_name,
|
|
564
772
|
package_name=package_name,
|
|
565
773
|
reason=reason,
|
|
566
774
|
)
|
|
567
775
|
|
|
568
|
-
def makeExeEntryPoint(
|
|
776
|
+
def makeExeEntryPoint(
|
|
777
|
+
self, source_path, dest_path, module_name, package_name, reason
|
|
778
|
+
):
|
|
569
779
|
"""Create an entry point, as expected to be provided by getExtraDlls."""
|
|
570
780
|
return makeExeEntryPoint(
|
|
571
781
|
logger=self,
|
|
572
782
|
source_path=source_path,
|
|
573
783
|
dest_path=dest_path,
|
|
784
|
+
module_name=module_name,
|
|
574
785
|
package_name=package_name,
|
|
575
786
|
reason=reason,
|
|
576
787
|
)
|
|
@@ -716,6 +927,7 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
716
927
|
ignore_suffixes=(),
|
|
717
928
|
only_suffixes=(),
|
|
718
929
|
normalize=True,
|
|
930
|
+
raw=False,
|
|
719
931
|
):
|
|
720
932
|
return makeIncludedDataDirectory(
|
|
721
933
|
source_path=source_path,
|
|
@@ -728,6 +940,7 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
728
940
|
ignore_suffixes=ignore_suffixes,
|
|
729
941
|
only_suffixes=only_suffixes,
|
|
730
942
|
normalize=normalize,
|
|
943
|
+
raw=raw,
|
|
731
944
|
)
|
|
732
945
|
|
|
733
946
|
def makeIncludedEmptyDirectory(self, dest_path, reason, tags):
|
|
@@ -866,6 +1079,18 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
866
1079
|
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
867
1080
|
return None
|
|
868
1081
|
|
|
1082
|
+
def decideAnnotations(self, module_name):
|
|
1083
|
+
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
1084
|
+
return None
|
|
1085
|
+
|
|
1086
|
+
def decideDocStrings(self, module_name):
|
|
1087
|
+
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
1088
|
+
return None
|
|
1089
|
+
|
|
1090
|
+
def decideAssertions(self, module_name):
|
|
1091
|
+
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
1092
|
+
return None
|
|
1093
|
+
|
|
869
1094
|
def getPreprocessorSymbols(self):
|
|
870
1095
|
"""Decide which C defines to be used in compilation.
|
|
871
1096
|
|
|
@@ -904,6 +1129,21 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
904
1129
|
# Virtual method, pylint: disable=no-self-use
|
|
905
1130
|
return None
|
|
906
1131
|
|
|
1132
|
+
@classmethod
|
|
1133
|
+
def getPluginDataFilesDir(cls):
|
|
1134
|
+
"""Helper function that returns path, where data files for the plugin are stored."""
|
|
1135
|
+
plugin_filename = sys.modules[cls.__module__].__file__
|
|
1136
|
+
return changeFilenameExtension(plugin_filename, "")
|
|
1137
|
+
|
|
1138
|
+
def getPluginDataFileContents(self, filename):
|
|
1139
|
+
"""Helper function that returns contents of a plugin data file."""
|
|
1140
|
+
return getFileContents(
|
|
1141
|
+
os.path.join(
|
|
1142
|
+
self.getPluginDataFilesDir(),
|
|
1143
|
+
filename,
|
|
1144
|
+
)
|
|
1145
|
+
)
|
|
1146
|
+
|
|
907
1147
|
def getExtraCodeFiles(self):
|
|
908
1148
|
"""Add extra code files to the compilation.
|
|
909
1149
|
|
|
@@ -992,7 +1232,8 @@ Unwanted import of '%(unwanted)s' that %(problem)s '%(binding_name)s' encountere
|
|
|
992
1232
|
_runtime_information_cache = {}
|
|
993
1233
|
|
|
994
1234
|
def queryRuntimeInformationMultiple(self, info_name, setup_codes, values):
|
|
995
|
-
info_name = self.plugin_name
|
|
1235
|
+
info_name = self.plugin_name + "_" + info_name
|
|
1236
|
+
info_name = info_name.replace("-", "_").replace(".", "_")
|
|
996
1237
|
|
|
997
1238
|
if info_name in self._runtime_information_cache:
|
|
998
1239
|
return self._runtime_information_cache[info_name]
|
|
@@ -1028,13 +1269,20 @@ except ImportError:
|
|
|
1028
1269
|
}
|
|
1029
1270
|
|
|
1030
1271
|
if shallShowExecutedCommands():
|
|
1031
|
-
self.info("Executing query command:\n%s" % cmd)
|
|
1272
|
+
self.info("Executing query command:\n%s" % cmd, keep_format=True)
|
|
1273
|
+
|
|
1274
|
+
env = dict(os.environ)
|
|
1275
|
+
env["PYTHONIOENCODING"] = "utf8"
|
|
1032
1276
|
|
|
1033
1277
|
try:
|
|
1034
|
-
feedback = check_output([sys.executable, "-c", cmd])
|
|
1278
|
+
feedback = check_output([sys.executable, "-c", cmd], env=env)
|
|
1035
1279
|
except NuitkaCalledProcessError as e:
|
|
1036
1280
|
if e.returncode == 38:
|
|
1037
1281
|
return None
|
|
1282
|
+
|
|
1283
|
+
if Options.is_debug:
|
|
1284
|
+
self.info(cmd, keep_format=True)
|
|
1285
|
+
|
|
1038
1286
|
raise
|
|
1039
1287
|
|
|
1040
1288
|
if str is not bytes: # We want to work with strings, that's hopefully OK.
|
|
@@ -1079,6 +1327,14 @@ except ImportError:
|
|
|
1079
1327
|
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
1080
1328
|
return False
|
|
1081
1329
|
|
|
1330
|
+
def onClassBodyParsing(self, module_name, class_name, node):
|
|
1331
|
+
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
1332
|
+
"""Provide a different class body for the class of that module.
|
|
1333
|
+
|
|
1334
|
+
Should return a boolean, indicating if any actual change was done.
|
|
1335
|
+
"""
|
|
1336
|
+
return False
|
|
1337
|
+
|
|
1082
1338
|
def getCacheContributionValues(self, module_name):
|
|
1083
1339
|
"""Provide values that represent the include of a plugin on the compilation.
|
|
1084
1340
|
|
|
@@ -1090,6 +1346,11 @@ except ImportError:
|
|
|
1090
1346
|
# Virtual method, pylint: disable=unused-argument
|
|
1091
1347
|
return self.plugin_name
|
|
1092
1348
|
|
|
1349
|
+
def getExtraConstantDefaultPopulation(self):
|
|
1350
|
+
"""Provide extra global constant values to code generation."""
|
|
1351
|
+
# Virtual method, pylint: disable=no-self-use
|
|
1352
|
+
return ()
|
|
1353
|
+
|
|
1093
1354
|
def decideAllowOutsideDependencies(self, module_name):
|
|
1094
1355
|
"""Decide if outside of Python dependencies are allowed.
|
|
1095
1356
|
|
|
@@ -1100,14 +1361,218 @@ except ImportError:
|
|
|
1100
1361
|
return None
|
|
1101
1362
|
|
|
1102
1363
|
@staticmethod
|
|
1103
|
-
def getPackageVersion(
|
|
1364
|
+
def getPackageVersion(module_name):
|
|
1104
1365
|
"""Provide package version of a distribution."""
|
|
1366
|
+
distribution_name = _getDistributionNameFromPackageName(module_name)
|
|
1367
|
+
|
|
1105
1368
|
return _getPackageVersion(distribution_name)
|
|
1106
1369
|
|
|
1107
1370
|
def getEvaluationConditionControlTags(self):
|
|
1108
1371
|
# Virtual method, pylint: disable=no-self-use
|
|
1109
1372
|
return {}
|
|
1110
1373
|
|
|
1374
|
+
@staticmethod
|
|
1375
|
+
def isValueForEvaluation(expression):
|
|
1376
|
+
return '"' in expression or "'" in expression or "(" in expression
|
|
1377
|
+
|
|
1378
|
+
def evaluateExpressionOrConstant(
|
|
1379
|
+
self, full_name, expression, config_name, extra_context, single_value
|
|
1380
|
+
):
|
|
1381
|
+
if self.isValueForEvaluation(expression):
|
|
1382
|
+
return self.evaluateExpression(
|
|
1383
|
+
full_name=full_name,
|
|
1384
|
+
expression=expression,
|
|
1385
|
+
config_name=config_name,
|
|
1386
|
+
extra_context=extra_context,
|
|
1387
|
+
single_value=single_value,
|
|
1388
|
+
)
|
|
1389
|
+
else:
|
|
1390
|
+
return expression
|
|
1391
|
+
|
|
1392
|
+
def getExpressionConstants(self, full_name):
|
|
1393
|
+
if full_name not in _module_config_constants:
|
|
1394
|
+
constants = {}
|
|
1395
|
+
|
|
1396
|
+
for count, constant_config in enumerate(
|
|
1397
|
+
self.config.get(full_name, section="constants"), start=1
|
|
1398
|
+
):
|
|
1399
|
+
declarations = constant_config.get("declarations")
|
|
1400
|
+
|
|
1401
|
+
if declarations and self.evaluateCondition(
|
|
1402
|
+
full_name=full_name,
|
|
1403
|
+
condition=constant_config.get("when", "True"),
|
|
1404
|
+
):
|
|
1405
|
+
for constant_name, constant_value in declarations.items():
|
|
1406
|
+
constants[constant_name] = self.evaluateExpressionOrConstant(
|
|
1407
|
+
full_name=full_name,
|
|
1408
|
+
expression=constant_value,
|
|
1409
|
+
config_name="constants config #%d" % count,
|
|
1410
|
+
extra_context=None,
|
|
1411
|
+
single_value=False,
|
|
1412
|
+
)
|
|
1413
|
+
|
|
1414
|
+
_module_config_constants[full_name] = constants
|
|
1415
|
+
|
|
1416
|
+
return _module_config_constants[full_name]
|
|
1417
|
+
|
|
1418
|
+
def getExpressionVariables(self, full_name):
|
|
1419
|
+
if full_name not in _module_config_variables:
|
|
1420
|
+
variables = {}
|
|
1421
|
+
|
|
1422
|
+
for count, variable_config in enumerate(
|
|
1423
|
+
self.config.get(full_name, section="variables")
|
|
1424
|
+
):
|
|
1425
|
+
environment = variable_config.get("environment", {})
|
|
1426
|
+
setup_codes = variable_config.get("setup_code", [])
|
|
1427
|
+
if type(setup_codes) is str:
|
|
1428
|
+
setup_codes = setup_codes.splitlines()
|
|
1429
|
+
declarations = variable_config.get("declarations", {})
|
|
1430
|
+
|
|
1431
|
+
if len(declarations) < 1:
|
|
1432
|
+
self.sysexit(
|
|
1433
|
+
"Error, no variable 'declarations' for %s makes no sense."
|
|
1434
|
+
% full_name
|
|
1435
|
+
)
|
|
1436
|
+
|
|
1437
|
+
if self.evaluateCondition(
|
|
1438
|
+
full_name=full_name,
|
|
1439
|
+
condition=variable_config.get("when", "True"),
|
|
1440
|
+
):
|
|
1441
|
+
setup_codes.extend(
|
|
1442
|
+
"%s=%r" % (constant_name, constant_value)
|
|
1443
|
+
for (
|
|
1444
|
+
constant_name,
|
|
1445
|
+
constant_value,
|
|
1446
|
+
) in self.getExpressionConstants(full_name=full_name).items()
|
|
1447
|
+
)
|
|
1448
|
+
|
|
1449
|
+
env_variables = {}
|
|
1450
|
+
|
|
1451
|
+
for env_name, env_value in environment.items():
|
|
1452
|
+
env_variables[env_name] = self.evaluateExpressionOrConstant(
|
|
1453
|
+
full_name=full_name,
|
|
1454
|
+
expression=env_value,
|
|
1455
|
+
config_name="variables config #%d" % count,
|
|
1456
|
+
extra_context=None,
|
|
1457
|
+
single_value=True,
|
|
1458
|
+
)
|
|
1459
|
+
|
|
1460
|
+
with withEnvironmentVarsOverridden(env_variables):
|
|
1461
|
+
info = self.queryRuntimeInformationMultiple(
|
|
1462
|
+
"%s_variables_%s" % (full_name.asString(), count),
|
|
1463
|
+
setup_codes=setup_codes,
|
|
1464
|
+
values=tuple(declarations.items()),
|
|
1465
|
+
)
|
|
1466
|
+
|
|
1467
|
+
if Options.isExperimental("display-yaml-variables"):
|
|
1468
|
+
self.info("Evaluated %r" % info)
|
|
1469
|
+
|
|
1470
|
+
if info is None:
|
|
1471
|
+
self.sysexit(
|
|
1472
|
+
"Error, failed to evaluate variables for %s." % full_name
|
|
1473
|
+
)
|
|
1474
|
+
|
|
1475
|
+
variables.update(info.asDict())
|
|
1476
|
+
|
|
1477
|
+
_module_config_variables[full_name] = variables
|
|
1478
|
+
|
|
1479
|
+
return _module_config_variables[full_name]
|
|
1480
|
+
|
|
1481
|
+
def evaluateExpression(
|
|
1482
|
+
self, full_name, expression, config_name, extra_context, single_value
|
|
1483
|
+
):
|
|
1484
|
+
context = _makeEvaluationContext(
|
|
1485
|
+
logger=self, full_name=full_name, config_name=config_name
|
|
1486
|
+
)
|
|
1487
|
+
|
|
1488
|
+
def get_variable(variable_name):
|
|
1489
|
+
assert type(variable_name) is str, variable_name
|
|
1490
|
+
|
|
1491
|
+
result = self.getExpressionVariables(full_name=full_name)[variable_name]
|
|
1492
|
+
|
|
1493
|
+
addModuleInfluencingVariable(
|
|
1494
|
+
module_name=full_name,
|
|
1495
|
+
plugin_name=self.plugin_name,
|
|
1496
|
+
variable_name=variable_name,
|
|
1497
|
+
control_tags=context.used_tags,
|
|
1498
|
+
result=result,
|
|
1499
|
+
)
|
|
1500
|
+
|
|
1501
|
+
return result
|
|
1502
|
+
|
|
1503
|
+
def get_constant(constant_name):
|
|
1504
|
+
assert type(constant_name) is str, constant_name
|
|
1505
|
+
|
|
1506
|
+
result = self.getExpressionConstants(full_name=full_name)[constant_name]
|
|
1507
|
+
|
|
1508
|
+
# TODO: Record the constant value in report.
|
|
1509
|
+
|
|
1510
|
+
return result
|
|
1511
|
+
|
|
1512
|
+
context["get_variable"] = get_variable
|
|
1513
|
+
context["get_constant"] = get_constant
|
|
1514
|
+
|
|
1515
|
+
def get_parameter(parameter_name, default):
|
|
1516
|
+
result = Options.getModuleParameter(full_name, parameter_name)
|
|
1517
|
+
|
|
1518
|
+
if result is None:
|
|
1519
|
+
result = default
|
|
1520
|
+
|
|
1521
|
+
self.addModuleInfluencingParameter(
|
|
1522
|
+
module_name=full_name,
|
|
1523
|
+
parameter_name=parameter_name,
|
|
1524
|
+
condition_tags_used=context.used_tags,
|
|
1525
|
+
result=result,
|
|
1526
|
+
)
|
|
1527
|
+
|
|
1528
|
+
return result
|
|
1529
|
+
|
|
1530
|
+
context["get_parameter"] = get_parameter
|
|
1531
|
+
|
|
1532
|
+
if extra_context:
|
|
1533
|
+
context.update(extra_context)
|
|
1534
|
+
|
|
1535
|
+
with withNoWarning():
|
|
1536
|
+
# We trust the yaml files, pylint: disable=eval-used
|
|
1537
|
+
try:
|
|
1538
|
+
result = eval(expression, context)
|
|
1539
|
+
except Exception as e: # Catch all the things, pylint: disable=broad-except
|
|
1540
|
+
if Options.is_debug:
|
|
1541
|
+
raise
|
|
1542
|
+
|
|
1543
|
+
self.sysexit(
|
|
1544
|
+
"Error, failed to evaluate expression %r in this context, exception was '%s'."
|
|
1545
|
+
% (expression, e)
|
|
1546
|
+
)
|
|
1547
|
+
|
|
1548
|
+
if type(result) not in (str, unicode):
|
|
1549
|
+
if single_value:
|
|
1550
|
+
self.sysexit(
|
|
1551
|
+
"""\
|
|
1552
|
+
Error, expression '%s' for module '%s' did not evaluate to 'str' result."""
|
|
1553
|
+
% (expression, full_name)
|
|
1554
|
+
)
|
|
1555
|
+
else:
|
|
1556
|
+
if type(result) not in (tuple, list):
|
|
1557
|
+
self.sysexit(
|
|
1558
|
+
"""\
|
|
1559
|
+
Error, expression '%s' for module '%s' did not evaluate to 'str', 'tuple[str]' or 'list[str]' result."""
|
|
1560
|
+
% (expression, full_name)
|
|
1561
|
+
)
|
|
1562
|
+
|
|
1563
|
+
for v in result:
|
|
1564
|
+
if type(v) not in (str, unicode):
|
|
1565
|
+
self.sysexit(
|
|
1566
|
+
"""\
|
|
1567
|
+
Error, expression '%s' for module '%s' did not evaluate to 'str', 'tuple[str]' or 'list[str]' result."""
|
|
1568
|
+
% (expression, full_name)
|
|
1569
|
+
)
|
|
1570
|
+
|
|
1571
|
+
# Make it immutable in case it's a list.
|
|
1572
|
+
result = tuple(result)
|
|
1573
|
+
|
|
1574
|
+
return result
|
|
1575
|
+
|
|
1111
1576
|
def evaluateCondition(self, full_name, condition):
|
|
1112
1577
|
# Note: Caching makes no sense yet, this should all be very fast and
|
|
1113
1578
|
# cache themselves. TODO: Allow plugins to contribute their own control
|
|
@@ -1117,64 +1582,40 @@ except ImportError:
|
|
|
1117
1582
|
if condition == "False":
|
|
1118
1583
|
return False
|
|
1119
1584
|
|
|
1120
|
-
|
|
1121
|
-
context
|
|
1122
|
-
|
|
1123
|
-
context.update(
|
|
1124
|
-
{
|
|
1125
|
-
"macos": isMacOS(),
|
|
1126
|
-
"win32": isWin32Windows(),
|
|
1127
|
-
"linux": isLinux(),
|
|
1128
|
-
"anaconda": isAnacondaPython(),
|
|
1129
|
-
"is_conda_package": isDistributionCondaPackage,
|
|
1130
|
-
"debian_python": isDebianPackagePython(),
|
|
1131
|
-
"standalone": isStandaloneMode(),
|
|
1132
|
-
"module_mode": shallMakeModule(),
|
|
1133
|
-
"deployment": isDeploymentMode(),
|
|
1134
|
-
# Querying package versions.
|
|
1135
|
-
"version": _getPackageVersion,
|
|
1136
|
-
"plugin": _isPluginActive,
|
|
1137
|
-
"no_asserts": hasPythonFlagNoAsserts(),
|
|
1138
|
-
"no_docstrings": hasPythonFlagNoDocStrings(),
|
|
1139
|
-
"no_annotations": hasPythonFlagNoAnnotations(),
|
|
1140
|
-
# Querying package properties
|
|
1141
|
-
"has_builtin_module": isBuiltinModuleName,
|
|
1142
|
-
}
|
|
1585
|
+
# TODO: Maybe add module name to config name?
|
|
1586
|
+
context = _makeEvaluationContext(
|
|
1587
|
+
logger=self, full_name=full_name, config_name="'when' configuration"
|
|
1143
1588
|
)
|
|
1144
1589
|
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
{
|
|
1148
|
-
"arch_x86": getArchitecture() == "x86",
|
|
1149
|
-
"arch_amd64": getArchitecture() == "x86_64",
|
|
1150
|
-
"arch_arm64": getArchitecture() == "arm64",
|
|
1151
|
-
}
|
|
1152
|
-
)
|
|
1590
|
+
def get_parameter(parameter_name, default):
|
|
1591
|
+
result = Options.getModuleParameter(full_name, parameter_name)
|
|
1153
1592
|
|
|
1154
|
-
|
|
1593
|
+
if result is None:
|
|
1594
|
+
result = default
|
|
1155
1595
|
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1596
|
+
self.addModuleInfluencingParameter(
|
|
1597
|
+
module_name=full_name,
|
|
1598
|
+
parameter_name=parameter_name,
|
|
1599
|
+
condition_tags_used=context.used_tags,
|
|
1600
|
+
result=result,
|
|
1601
|
+
)
|
|
1160
1602
|
|
|
1161
|
-
|
|
1162
|
-
context["before_python" + big + major] = not is_same_or_higher_version
|
|
1603
|
+
return result
|
|
1163
1604
|
|
|
1164
|
-
context["
|
|
1165
|
-
context["python3_or_higher"] = python_version >= 0x300
|
|
1605
|
+
context["get_parameter"] = get_parameter
|
|
1166
1606
|
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1607
|
+
with withNoWarning():
|
|
1608
|
+
# We trust the yaml files, pylint: disable=eval-used
|
|
1609
|
+
try:
|
|
1610
|
+
result = eval(condition, context)
|
|
1611
|
+
except Exception as e: # Catch all the things, pylint: disable=broad-except
|
|
1612
|
+
if Options.is_debug:
|
|
1613
|
+
raise
|
|
1614
|
+
|
|
1615
|
+
self.sysexit(
|
|
1616
|
+
"Error, failed to evaluate condition '%s' in this context, exception was '%s'."
|
|
1617
|
+
% (condition, e)
|
|
1618
|
+
)
|
|
1178
1619
|
|
|
1179
1620
|
if type(result) is not bool:
|
|
1180
1621
|
self.sysexit(
|
|
@@ -1192,6 +1633,27 @@ except ImportError:
|
|
|
1192
1633
|
|
|
1193
1634
|
return result
|
|
1194
1635
|
|
|
1636
|
+
def addModuleInfluencingParameter(
|
|
1637
|
+
self, module_name, parameter_name, condition_tags_used, result
|
|
1638
|
+
):
|
|
1639
|
+
addModuleInfluencingParameter(
|
|
1640
|
+
module_name=module_name,
|
|
1641
|
+
plugin_name=self.plugin_name,
|
|
1642
|
+
parameter_name=parameter_name,
|
|
1643
|
+
condition_tags_used=condition_tags_used,
|
|
1644
|
+
result=result,
|
|
1645
|
+
)
|
|
1646
|
+
|
|
1647
|
+
def addModuleInfluencingDetection(
|
|
1648
|
+
self, module_name, detection_name, detection_value
|
|
1649
|
+
):
|
|
1650
|
+
addModuleInfluencingDetection(
|
|
1651
|
+
module_name=module_name,
|
|
1652
|
+
plugin_name=self.plugin_name,
|
|
1653
|
+
detection_name=detection_name,
|
|
1654
|
+
detection_value=detection_value,
|
|
1655
|
+
)
|
|
1656
|
+
|
|
1195
1657
|
@classmethod
|
|
1196
1658
|
def warning(cls, message, **kwargs):
|
|
1197
1659
|
# Doing keyword only arguments manually, to keep older Python compatibility, and avoid
|
|
@@ -1203,40 +1665,31 @@ except ImportError:
|
|
|
1203
1665
|
plugins_logger.warning(cls.plugin_name + ": " + message, mnemonic=mnemonic)
|
|
1204
1666
|
|
|
1205
1667
|
@classmethod
|
|
1206
|
-
def info(cls, message):
|
|
1207
|
-
plugins_logger.info(cls.plugin_name
|
|
1668
|
+
def info(cls, message, keep_format=False):
|
|
1669
|
+
plugins_logger.info(message, prefix=cls.plugin_name, keep_format=keep_format)
|
|
1670
|
+
|
|
1671
|
+
@classmethod
|
|
1672
|
+
def debug(cls, message, keep_format=False):
|
|
1673
|
+
if Options.is_debug:
|
|
1674
|
+
cls.info(message, keep_format=keep_format)
|
|
1208
1675
|
|
|
1209
1676
|
@classmethod
|
|
1210
|
-
def sysexit(cls, message, mnemonic=None):
|
|
1677
|
+
def sysexit(cls, message, mnemonic=None, reporting=True):
|
|
1211
1678
|
plugins_logger.sysexit(
|
|
1212
|
-
cls.plugin_name + ": " + message, mnemonic=mnemonic, reporting=
|
|
1679
|
+
cls.plugin_name + ": " + message, mnemonic=mnemonic, reporting=reporting
|
|
1213
1680
|
)
|
|
1214
1681
|
|
|
1215
1682
|
|
|
1216
|
-
def standalone_only(func):
|
|
1217
|
-
"""For plugins that have functionality that should be done in standalone mode only."""
|
|
1218
|
-
|
|
1219
|
-
@functools.wraps(func)
|
|
1220
|
-
def wrapped(*args, **kwargs):
|
|
1221
|
-
if isStandaloneMode():
|
|
1222
|
-
return func(*args, **kwargs)
|
|
1223
|
-
else:
|
|
1224
|
-
if inspect.isgeneratorfunction(func):
|
|
1225
|
-
return ()
|
|
1226
|
-
else:
|
|
1227
|
-
return None
|
|
1228
|
-
|
|
1229
|
-
return wrapped
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
1683
|
class TagContext(dict):
|
|
1233
|
-
def __init__(self, logger, full_name,
|
|
1234
|
-
dict.__init__(self
|
|
1684
|
+
def __init__(self, logger, full_name, config_name):
|
|
1685
|
+
dict.__init__(self)
|
|
1235
1686
|
|
|
1236
1687
|
self.logger = logger
|
|
1237
1688
|
self.full_name = full_name
|
|
1689
|
+
self.config_name = config_name
|
|
1238
1690
|
|
|
1239
1691
|
self.used_tags = OrderedSet()
|
|
1692
|
+
self.used_variables = OrderedSet()
|
|
1240
1693
|
|
|
1241
1694
|
def __getitem__(self, key):
|
|
1242
1695
|
try:
|
|
@@ -1247,7 +1700,55 @@ class TagContext(dict):
|
|
|
1247
1700
|
if key.startswith("use_"):
|
|
1248
1701
|
return False
|
|
1249
1702
|
|
|
1703
|
+
if key == "no_asserts":
|
|
1704
|
+
# TODO: This should be better decoupled.
|
|
1705
|
+
from .Plugins import Plugins
|
|
1706
|
+
|
|
1707
|
+
return Plugins.decideAssertions(self.full_name) is False
|
|
1708
|
+
|
|
1709
|
+
if key == "no_docstrings":
|
|
1710
|
+
from .Plugins import Plugins
|
|
1711
|
+
|
|
1712
|
+
return Plugins.decideDocStrings(self.full_name) is False
|
|
1713
|
+
|
|
1714
|
+
if key == "no_annotations":
|
|
1715
|
+
from .Plugins import Plugins
|
|
1716
|
+
|
|
1717
|
+
return Plugins.decideAnnotations(self.full_name) is False
|
|
1718
|
+
|
|
1250
1719
|
self.logger.sysexit(
|
|
1251
|
-
"Identifier '%s' in
|
|
1252
|
-
% (key, self.full_name)
|
|
1720
|
+
"Identifier '%s' in %s of module '%s' is unknown."
|
|
1721
|
+
% (key, self.config_name, self.full_name)
|
|
1253
1722
|
)
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
def standalone_only(func):
|
|
1726
|
+
"""For plugins that have functionality that should be done in standalone mode only."""
|
|
1727
|
+
|
|
1728
|
+
@functools.wraps(func)
|
|
1729
|
+
def wrapped(*args, **kwargs):
|
|
1730
|
+
if isStandaloneMode():
|
|
1731
|
+
return func(*args, **kwargs)
|
|
1732
|
+
else:
|
|
1733
|
+
if inspect.isgeneratorfunction(func):
|
|
1734
|
+
return ()
|
|
1735
|
+
else:
|
|
1736
|
+
return None
|
|
1737
|
+
|
|
1738
|
+
return wrapped
|
|
1739
|
+
|
|
1740
|
+
|
|
1741
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1742
|
+
# integrates with CPython, but also works on its own.
|
|
1743
|
+
#
|
|
1744
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1745
|
+
# you may not use this file except in compliance with the License.
|
|
1746
|
+
# You may obtain a copy of the License at
|
|
1747
|
+
#
|
|
1748
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1749
|
+
#
|
|
1750
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1751
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1752
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1753
|
+
# See the License for the specific language governing permissions and
|
|
1754
|
+
# limitations under the License.
|