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/Options.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
|
""" Options module
|
|
19
5
|
|
|
20
6
|
This exposes the choices made by the user. Defaults will be applied here, and
|
|
@@ -35,12 +21,21 @@ import sys
|
|
|
35
21
|
from nuitka import Progress, Tracing
|
|
36
22
|
from nuitka.containers.OrderedDicts import OrderedDict
|
|
37
23
|
from nuitka.containers.OrderedSets import OrderedSet
|
|
38
|
-
from nuitka.
|
|
24
|
+
from nuitka.importing.StandardLibrary import isStandardLibraryPath
|
|
25
|
+
from nuitka.OptionParsing import (
|
|
26
|
+
parseOptions,
|
|
27
|
+
run_time_variable_names,
|
|
28
|
+
runSpecialCommandsFromOptions,
|
|
29
|
+
)
|
|
39
30
|
from nuitka.PythonFlavors import (
|
|
40
31
|
getPythonFlavorName,
|
|
41
32
|
isAnacondaPython,
|
|
42
33
|
isApplePython,
|
|
34
|
+
isArchPackagePython,
|
|
35
|
+
isCPythonOfficialPackage,
|
|
43
36
|
isDebianPackagePython,
|
|
37
|
+
isHomebrewPython,
|
|
38
|
+
isManyLinuxPython,
|
|
44
39
|
isMSYS2MingwPython,
|
|
45
40
|
isNuitkaPython,
|
|
46
41
|
isPyenvPython,
|
|
@@ -48,14 +43,17 @@ from nuitka.PythonFlavors import (
|
|
|
48
43
|
isUninstalledPython,
|
|
49
44
|
)
|
|
50
45
|
from nuitka.PythonVersions import (
|
|
46
|
+
getLaunchingSystemPrefixPath,
|
|
51
47
|
getNotYetSupportedPythonVersions,
|
|
52
48
|
getSupportedPythonVersions,
|
|
53
49
|
isDebugPython,
|
|
50
|
+
isPythonWithGil,
|
|
54
51
|
python_version,
|
|
55
52
|
python_version_str,
|
|
56
53
|
)
|
|
57
54
|
from nuitka.utils.Execution import getExecutablePath
|
|
58
55
|
from nuitka.utils.FileOperations import (
|
|
56
|
+
isLegalPath,
|
|
59
57
|
isPathExecutable,
|
|
60
58
|
openTextFile,
|
|
61
59
|
resolveShellPatternToFilenames,
|
|
@@ -65,7 +63,9 @@ from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
|
|
|
65
63
|
from nuitka.utils.Utils import (
|
|
66
64
|
getArchitecture,
|
|
67
65
|
getCPUCoreCount,
|
|
66
|
+
getLaunchingNuitkaProcessEnvironmentValue,
|
|
68
67
|
getLinuxDistribution,
|
|
68
|
+
getMacOSRelease,
|
|
69
69
|
getOS,
|
|
70
70
|
getWindowsRelease,
|
|
71
71
|
hasOnefileSupportedOS,
|
|
@@ -92,71 +92,132 @@ is_report_missing = None
|
|
|
92
92
|
is_verbose = None
|
|
93
93
|
|
|
94
94
|
|
|
95
|
+
def _convertOldStylePathSpecQuotes(value):
|
|
96
|
+
quote = None
|
|
97
|
+
|
|
98
|
+
result = ""
|
|
99
|
+
for c in value:
|
|
100
|
+
if c == "%":
|
|
101
|
+
if quote is None:
|
|
102
|
+
quote = "{"
|
|
103
|
+
result += quote
|
|
104
|
+
elif quote == "{":
|
|
105
|
+
result += "}"
|
|
106
|
+
quote = None
|
|
107
|
+
else:
|
|
108
|
+
result += c
|
|
109
|
+
|
|
110
|
+
return result
|
|
111
|
+
|
|
112
|
+
|
|
95
113
|
def checkPathSpec(value, arg_name, allow_disable):
|
|
96
114
|
# There are never enough checks here, pylint: disable=too-many-branches
|
|
115
|
+
old = value
|
|
116
|
+
value = _convertOldStylePathSpecQuotes(value)
|
|
117
|
+
if old != value:
|
|
118
|
+
Tracing.options_logger.warning(
|
|
119
|
+
"Adapted '%s' option value from legacy quoting style to '%s' -> '%s'"
|
|
120
|
+
% (arg_name, old, value)
|
|
121
|
+
)
|
|
97
122
|
|
|
98
|
-
|
|
123
|
+
# This changes the '/' to '\' on Windows at least.
|
|
124
|
+
value = os.path.normpath(value)
|
|
125
|
+
|
|
126
|
+
if "\n" in value or "\r" in value:
|
|
127
|
+
Tracing.options_logger.sysexit(
|
|
128
|
+
"Using a new line in value '%s=%r' value is not allowed."
|
|
129
|
+
% (arg_name, value)
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
if "{NONE}" in value:
|
|
99
133
|
if not allow_disable:
|
|
100
134
|
Tracing.options_logger.sysexit(
|
|
101
|
-
"Using value '
|
|
135
|
+
"Using value '{NONE}' in '%s=%s' value is not allowed."
|
|
102
136
|
% (arg_name, value)
|
|
103
137
|
)
|
|
104
138
|
|
|
105
|
-
if value != "
|
|
139
|
+
if value != "{NONE}":
|
|
106
140
|
Tracing.options_logger.sysexit(
|
|
107
|
-
"Using value '
|
|
141
|
+
"Using value '{NONE}' in '%s=%s' value does not allow anything else used too."
|
|
108
142
|
% (arg_name, value)
|
|
109
143
|
)
|
|
110
144
|
|
|
111
|
-
if "
|
|
145
|
+
if "{NULL}" in value:
|
|
112
146
|
if not allow_disable:
|
|
113
147
|
Tracing.options_logger.sysexit(
|
|
114
|
-
"Using value '
|
|
148
|
+
"Using value '{NULL}' in '%s=%s' value is not allowed."
|
|
115
149
|
% (arg_name, value)
|
|
116
150
|
)
|
|
117
151
|
|
|
118
|
-
if value != "
|
|
152
|
+
if value != "{NULL}":
|
|
119
153
|
Tracing.options_logger.sysexit(
|
|
120
|
-
"Using value '
|
|
154
|
+
"Using value '{NULL}' in '%s=%s' value does not allow anything else used too."
|
|
121
155
|
% (arg_name, value)
|
|
122
156
|
)
|
|
123
157
|
|
|
124
|
-
if "
|
|
158
|
+
if "{COMPANY}" in value and not getCompanyName():
|
|
125
159
|
Tracing.options_logger.sysexit(
|
|
126
|
-
"Using value '
|
|
160
|
+
"Using value '{COMPANY}' in '%s=%s' value without being specified."
|
|
127
161
|
% (arg_name, value)
|
|
128
162
|
)
|
|
129
163
|
|
|
130
|
-
if "
|
|
164
|
+
if "{PRODUCT}" in value and not getProductName():
|
|
131
165
|
Tracing.options_logger.sysexit(
|
|
132
|
-
"Using value '
|
|
166
|
+
"Using value '{PRODUCT}' in '%s=%s' value without being specified."
|
|
133
167
|
% (arg_name, value)
|
|
134
168
|
)
|
|
135
169
|
|
|
136
|
-
if "
|
|
170
|
+
if "{VERSION}" in value and not (getFileVersionTuple() or getProductVersionTuple()):
|
|
137
171
|
Tracing.options_logger.sysexit(
|
|
138
|
-
"Using value '
|
|
172
|
+
"Using value '{VERSION}' in '%s=%s' value without being specified."
|
|
139
173
|
% (arg_name, value)
|
|
140
174
|
)
|
|
141
175
|
|
|
142
|
-
if value.count("
|
|
143
|
-
Tracing.options_logger.
|
|
144
|
-
"""Unmatched '
|
|
145
|
-
not do what you want it to do."""
|
|
176
|
+
if value.count("{") != value.count("}"):
|
|
177
|
+
Tracing.options_logger.sysexit(
|
|
178
|
+
"""Unmatched '{}' is wrong for '%s=%s' and may \
|
|
179
|
+
definitely not do what you want it to do."""
|
|
146
180
|
% (arg_name, value)
|
|
147
181
|
)
|
|
148
182
|
|
|
183
|
+
# Catch nested or illegal variable names.
|
|
184
|
+
var_name = None
|
|
185
|
+
for c in value:
|
|
186
|
+
if c in "{":
|
|
187
|
+
if var_name is not None:
|
|
188
|
+
Tracing.options_logger.sysexit(
|
|
189
|
+
"""Nested '{' is wrong for '%s=%s'.""" % (arg_name, value)
|
|
190
|
+
)
|
|
191
|
+
var_name = ""
|
|
192
|
+
elif c == "}":
|
|
193
|
+
if var_name is None:
|
|
194
|
+
Tracing.options_logger.sysexit(
|
|
195
|
+
"""Stray '}' is wrong for '%s=%s'.""" % (arg_name, value)
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
if var_name not in run_time_variable_names:
|
|
199
|
+
Tracing.onefile_logger.sysexit(
|
|
200
|
+
"Found unknown variable name '%s' in for '%s=%s'."
|
|
201
|
+
"" % (var_name, arg_name, value)
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
var_name = None
|
|
205
|
+
else:
|
|
206
|
+
if var_name is not None:
|
|
207
|
+
var_name += c
|
|
208
|
+
|
|
149
209
|
for candidate in (
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"
|
|
210
|
+
"{PROGRAM}",
|
|
211
|
+
"{PROGRAM_BASE}",
|
|
212
|
+
"{CACHE_DIR}",
|
|
213
|
+
"{HOME}",
|
|
214
|
+
"{TEMP}",
|
|
155
215
|
):
|
|
156
216
|
if candidate in value[1:]:
|
|
157
217
|
Tracing.options_logger.sysexit(
|
|
158
|
-
"""
|
|
159
|
-
|
|
218
|
+
"""\
|
|
219
|
+
Absolute run time paths of '%s' can only be at the start of \
|
|
220
|
+
'%s=%s', using it in the middle of it is not allowed."""
|
|
160
221
|
% (candidate, arg_name, value)
|
|
161
222
|
)
|
|
162
223
|
|
|
@@ -167,9 +228,27 @@ start of '%s=%s', using that alone is not allowed."""
|
|
|
167
228
|
% (candidate, arg_name, value)
|
|
168
229
|
)
|
|
169
230
|
|
|
231
|
+
if value.startswith(candidate):
|
|
232
|
+
if value[len(candidate)] != os.path.sep:
|
|
233
|
+
Tracing.options_logger.sysexit(
|
|
234
|
+
"""Cannot use general system folder %s, without a path \
|
|
235
|
+
separator '%s=%s', just appending to these is not allowed, needs to be \
|
|
236
|
+
below them."""
|
|
237
|
+
% (candidate, arg_name, value)
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
is_legal, reason = isLegalPath(value)
|
|
241
|
+
if not is_legal:
|
|
242
|
+
Tracing.options_logger.sysexit(
|
|
243
|
+
"""Cannot use illegal paths '%s=%s', due to %s."""
|
|
244
|
+
% (arg_name, value, reason)
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
return value
|
|
248
|
+
|
|
170
249
|
|
|
171
250
|
def _checkOnefileTargetSpec():
|
|
172
|
-
checkPathSpec(
|
|
251
|
+
options.onefile_tempdir_spec = checkPathSpec(
|
|
173
252
|
options.onefile_tempdir_spec,
|
|
174
253
|
arg_name="--onefile-tempdir-spec",
|
|
175
254
|
allow_disable=False,
|
|
@@ -183,7 +262,7 @@ you cannot unpack the onefile payload into the same directory as the binary,
|
|
|
183
262
|
as that would overwrite it and cause locking issues as well."""
|
|
184
263
|
)
|
|
185
264
|
|
|
186
|
-
if options.onefile_tempdir_spec.count("
|
|
265
|
+
if options.onefile_tempdir_spec.count("{") == 0:
|
|
187
266
|
Tracing.options_logger.warning(
|
|
188
267
|
"""Not using any variables for '--onefile-tempdir-spec' should only be \
|
|
189
268
|
done if your program absolutely needs to be in the same path always: '%s'"""
|
|
@@ -192,16 +271,20 @@ done if your program absolutely needs to be in the same path always: '%s'"""
|
|
|
192
271
|
|
|
193
272
|
if os.path.isabs(options.onefile_tempdir_spec):
|
|
194
273
|
Tracing.options_logger.warning(
|
|
195
|
-
"""
|
|
196
|
-
|
|
274
|
+
"""\
|
|
275
|
+
Using an absolute path should be avoided unless you are targeting a \
|
|
276
|
+
very well known environment: anchoring it with e.g. '{TEMP}', \
|
|
277
|
+
'{CACHE_DIR}' is recommended: You seemingly gave the value '%s'"""
|
|
197
278
|
% options.onefile_tempdir_spec
|
|
198
279
|
)
|
|
199
280
|
elif not options.onefile_tempdir_spec.startswith(
|
|
200
|
-
("
|
|
281
|
+
("{TEMP}", "{HOME}", "{CACHE_DIR}")
|
|
201
282
|
):
|
|
202
283
|
Tracing.options_logger.warning(
|
|
203
|
-
"""
|
|
204
|
-
|
|
284
|
+
"""\
|
|
285
|
+
Using a relative to the onefile executable should be avoided \
|
|
286
|
+
unless you are targeting a very well known environment, anchoring \
|
|
287
|
+
it with e.g. '{TEMP}', '{CACHE_DIR}' is recommended: '%s'"""
|
|
205
288
|
% options.onefile_tempdir_spec
|
|
206
289
|
)
|
|
207
290
|
|
|
@@ -213,6 +296,8 @@ def _getVersionInformationValues():
|
|
|
213
296
|
yield "Commercial: %s" % getCommercialVersion()
|
|
214
297
|
yield "Python: %s" % sys.version.split("\n", 1)[0]
|
|
215
298
|
yield "Flavor: %s" % getPythonFlavorName()
|
|
299
|
+
if python_version >= 0x3D0:
|
|
300
|
+
yield "GIL: %s" % ("yes" if isPythonWithGil() else "no")
|
|
216
301
|
yield "Executable: %s" % sys.executable
|
|
217
302
|
yield "OS: %s" % getOS()
|
|
218
303
|
yield "Arch: %s" % getArchitecture()
|
|
@@ -232,6 +317,9 @@ def _getVersionInformationValues():
|
|
|
232
317
|
if isWin32OrPosixWindows():
|
|
233
318
|
yield "WindowsRelease: %s" % getWindowsRelease()
|
|
234
319
|
|
|
320
|
+
if isMacOS():
|
|
321
|
+
yield "macOSRelease: %s" % getMacOSRelease()
|
|
322
|
+
|
|
235
323
|
|
|
236
324
|
def printVersionInformation():
|
|
237
325
|
print("\n".join(_getVersionInformationValues()))
|
|
@@ -252,6 +340,38 @@ def printVersionInformation():
|
|
|
252
340
|
)
|
|
253
341
|
|
|
254
342
|
|
|
343
|
+
def _warnOnefileOnlyOption(option_name):
|
|
344
|
+
if not options.is_onefile:
|
|
345
|
+
Tracing.options_logger.warning(
|
|
346
|
+
"""\
|
|
347
|
+
Using onefile specific option '%s' has no effect \
|
|
348
|
+
when '--onefile' is not specified."""
|
|
349
|
+
% option_name
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
def _checkDataDirOptionValue(data_dir, option_name):
|
|
354
|
+
if "=" not in data_dir:
|
|
355
|
+
Tracing.options_logger.sysexit(
|
|
356
|
+
"Error, malformed '%s' value '%s' description, must specify a relative target path with '=' separating it."
|
|
357
|
+
% (option_name, data_dir)
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
src, dst = data_dir.split("=", 1)
|
|
361
|
+
|
|
362
|
+
if os.path.isabs(dst):
|
|
363
|
+
Tracing.options_logger.sysexit(
|
|
364
|
+
"Error, malformed '%s' value, must specify relative target path for data dir, not '%s' as in '%s'."
|
|
365
|
+
% (option_name, dst, data_dir)
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
if not os.path.isdir(src):
|
|
369
|
+
Tracing.options_logger.sysexit(
|
|
370
|
+
"Error, malformed '%s' value, must specify existing source data directory, not '%s' as in '%s'."
|
|
371
|
+
% (option_name, dst, data_dir)
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
|
|
255
375
|
def parseArgs():
|
|
256
376
|
"""Parse the command line arguments
|
|
257
377
|
|
|
@@ -271,7 +391,7 @@ def parseArgs():
|
|
|
271
391
|
Tracing.general.sysexit(
|
|
272
392
|
"""\
|
|
273
393
|
Error, the Python from Windows app store is not supported.""",
|
|
274
|
-
mnemonic="unsupported-python",
|
|
394
|
+
mnemonic="unsupported-windows-app-store-python",
|
|
275
395
|
)
|
|
276
396
|
|
|
277
397
|
is_nuitka_run, options, positional_args, extra_args = parseOptions(
|
|
@@ -296,7 +416,7 @@ Error, the Python from Windows app store is not supported.""",
|
|
|
296
416
|
# TODO: Have dedicated option for it.
|
|
297
417
|
is_report_missing = is_debug
|
|
298
418
|
|
|
299
|
-
if options.quiet or int(os.
|
|
419
|
+
if options.quiet or int(os.getenv("NUITKA_QUIET", "0")):
|
|
300
420
|
Tracing.setQuiet()
|
|
301
421
|
|
|
302
422
|
def _quoteArg(arg):
|
|
@@ -310,17 +430,26 @@ Error, the Python from Windows app store is not supported.""",
|
|
|
310
430
|
else:
|
|
311
431
|
return arg
|
|
312
432
|
|
|
433
|
+
# This will not return if a non-compiling command is given.
|
|
434
|
+
runSpecialCommandsFromOptions(options)
|
|
435
|
+
|
|
313
436
|
if not options.version:
|
|
314
437
|
Tracing.options_logger.info(
|
|
315
438
|
"Used command line options: %s"
|
|
316
439
|
% " ".join(_quoteArg(arg) for arg in sys.argv[1:])
|
|
317
440
|
)
|
|
318
441
|
|
|
319
|
-
if
|
|
442
|
+
if (
|
|
443
|
+
getLaunchingNuitkaProcessEnvironmentValue("NUITKA_RE_EXECUTION")
|
|
444
|
+
and not isAllowedToReexecute()
|
|
445
|
+
):
|
|
320
446
|
Tracing.general.sysexit(
|
|
321
447
|
"Error, not allowed to re-execute, but that has happened."
|
|
322
448
|
)
|
|
323
449
|
|
|
450
|
+
# Force to persist this one early.
|
|
451
|
+
getLaunchingSystemPrefixPath()
|
|
452
|
+
|
|
324
453
|
if options.progress_bar:
|
|
325
454
|
Progress.enableProgressBar()
|
|
326
455
|
|
|
@@ -362,7 +491,35 @@ Error, the Python from Windows app store is not supported.""",
|
|
|
362
491
|
if options.is_onefile:
|
|
363
492
|
options.is_standalone = True
|
|
364
493
|
|
|
365
|
-
#
|
|
494
|
+
# macOS bundle implies standalone build.
|
|
495
|
+
if shallCreateAppBundle():
|
|
496
|
+
options.is_standalone = True
|
|
497
|
+
|
|
498
|
+
if isMacOS():
|
|
499
|
+
macos_target_arch = getMacOSTargetArch()
|
|
500
|
+
|
|
501
|
+
if macos_target_arch == "universal":
|
|
502
|
+
Tracing.options_logger.sysexit(
|
|
503
|
+
"Cannot create universal macOS binaries (yet), please pick an arch and create two binaries."
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
if (options.macos_target_arch or "native") != "native":
|
|
507
|
+
from nuitka.utils.SharedLibraries import (
|
|
508
|
+
hasUniversalOrMatchingMacOSArchitecture,
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
if not hasUniversalOrMatchingMacOSArchitecture(
|
|
512
|
+
os.path.realpath(sys.executable)
|
|
513
|
+
):
|
|
514
|
+
Tracing.options_logger.sysexit(
|
|
515
|
+
"""\
|
|
516
|
+
Cannot cross compile to other arch, using non-universal Python binaries \
|
|
517
|
+
for macOS. Please install the "universal" Python package as offered on \
|
|
518
|
+
the Python download page."""
|
|
519
|
+
)
|
|
520
|
+
|
|
521
|
+
# Standalone implies no_site build unless overridden, therefore put it
|
|
522
|
+
# at start of flags, so "site" can override it.
|
|
366
523
|
if options.is_standalone:
|
|
367
524
|
options.python_flags.insert(0, "no_site")
|
|
368
525
|
|
|
@@ -370,12 +527,7 @@ Error, the Python from Windows app store is not supported.""",
|
|
|
370
527
|
if options.onefile_tempdir_spec:
|
|
371
528
|
_checkOnefileTargetSpec()
|
|
372
529
|
|
|
373
|
-
|
|
374
|
-
Tracing.options_logger.warning(
|
|
375
|
-
"""\
|
|
376
|
-
Using onefile specific option '--onefile-windows-splash-screen-image' has no effect \
|
|
377
|
-
when '--onefile' is not specified."""
|
|
378
|
-
)
|
|
530
|
+
_warnOnefileOnlyOption("--onefile-tempdir-spec")
|
|
379
531
|
|
|
380
532
|
# Check onefile splash image
|
|
381
533
|
if options.splash_screen_image:
|
|
@@ -385,34 +537,27 @@ when '--onefile' is not specified."""
|
|
|
385
537
|
% options.splash_screen_image
|
|
386
538
|
)
|
|
387
539
|
|
|
388
|
-
|
|
389
|
-
Tracing.options_logger.warning(
|
|
390
|
-
"""\
|
|
391
|
-
Using onefile specific option '--onefile-windows-splash-screen-image' has no effect \
|
|
392
|
-
when '--onefile' is not specified."""
|
|
393
|
-
)
|
|
540
|
+
_warnOnefileOnlyOption("--onefile-windows-splash-screen-image")
|
|
394
541
|
|
|
395
542
|
if options.onefile_child_grace_time is not None:
|
|
396
543
|
if not options.onefile_child_grace_time.isdigit():
|
|
397
544
|
Tracing.options_logger.sysexit(
|
|
398
545
|
"""\
|
|
399
|
-
Error, value given for '--onefile-child-grace-time' must be integer."""
|
|
546
|
+
Error, the value given for '--onefile-child-grace-time' must be integer."""
|
|
400
547
|
)
|
|
401
548
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
when '--onefile-child-grace-time' is not specified."""
|
|
407
|
-
)
|
|
549
|
+
_warnOnefileOnlyOption("--onefile-child-grace-time")
|
|
550
|
+
|
|
551
|
+
if getShallIncludeExternallyDataFilePatterns():
|
|
552
|
+
_warnOnefileOnlyOption("--include-onefile-external-data")
|
|
408
553
|
|
|
409
554
|
if options.force_stdout_spec:
|
|
410
|
-
checkPathSpec(
|
|
555
|
+
options.force_stdout_spec = checkPathSpec(
|
|
411
556
|
options.force_stdout_spec, "--force-stdout-spec", allow_disable=True
|
|
412
557
|
)
|
|
413
558
|
|
|
414
559
|
if options.force_stderr_spec:
|
|
415
|
-
checkPathSpec(
|
|
560
|
+
options.force_stderr_spec = checkPathSpec(
|
|
416
561
|
options.force_stderr_spec, "--force-stderr-spec", allow_disable=True
|
|
417
562
|
)
|
|
418
563
|
|
|
@@ -504,18 +649,18 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
504
649
|
)
|
|
505
650
|
|
|
506
651
|
if isLinux():
|
|
507
|
-
if len(
|
|
652
|
+
if len(getLinuxIconPaths()) > 1:
|
|
508
653
|
Tracing.options_logger.sysexit(
|
|
509
654
|
"Error, can only use one icon file on Linux."
|
|
510
655
|
)
|
|
511
656
|
|
|
512
657
|
if isMacOS():
|
|
513
|
-
if len(
|
|
658
|
+
if len(getMacOSIconPaths()) > 1:
|
|
514
659
|
Tracing.options_logger.sysexit(
|
|
515
660
|
"Error, can only use one icon file on macOS."
|
|
516
661
|
)
|
|
517
662
|
|
|
518
|
-
for icon_path in
|
|
663
|
+
for icon_path in getWindowsIconPaths():
|
|
519
664
|
if "#" in icon_path and isWin32Windows():
|
|
520
665
|
icon_path, icon_index = icon_path.rsplit("#", 1)
|
|
521
666
|
|
|
@@ -525,13 +670,6 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
525
670
|
% (icon_path + "#" + icon_index)
|
|
526
671
|
)
|
|
527
672
|
|
|
528
|
-
if not os.path.exists(icon_path):
|
|
529
|
-
Tracing.options_logger.sysexit(
|
|
530
|
-
"Error, icon path '%s' does not exist." % icon_path
|
|
531
|
-
)
|
|
532
|
-
|
|
533
|
-
checkIconUsage(logger=Tracing.options_logger, icon_path=icon_path)
|
|
534
|
-
|
|
535
673
|
if getWindowsIconExecutablePath():
|
|
536
674
|
Tracing.options_logger.sysexit(
|
|
537
675
|
"Error, can only use icons from template executable or from icon files, but not both."
|
|
@@ -543,13 +681,8 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
543
681
|
"Error, icon path executable '%s' does not exist." % icon_exe_path
|
|
544
682
|
)
|
|
545
683
|
|
|
546
|
-
if isMacOS() and not shallCreateAppBundle() and shallDisableConsoleWindow():
|
|
547
|
-
Tracing.options_logger.sysexit(
|
|
548
|
-
"Error, cannot disable console unless also using '--macos-create-app-bundle'."
|
|
549
|
-
)
|
|
550
|
-
|
|
551
684
|
try:
|
|
552
|
-
file_version =
|
|
685
|
+
file_version = getFileVersionTuple()
|
|
553
686
|
# Catch all the things, don't want any interface, pylint: disable=broad-except
|
|
554
687
|
except Exception:
|
|
555
688
|
Tracing.options_logger.sysexit(
|
|
@@ -557,7 +690,7 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
557
690
|
)
|
|
558
691
|
|
|
559
692
|
try:
|
|
560
|
-
product_version =
|
|
693
|
+
product_version = getProductVersionTuple()
|
|
561
694
|
# Catch all the things, don't want any interface, pylint: disable=broad-except
|
|
562
695
|
except Exception:
|
|
563
696
|
Tracing.options_logger.sysexit(
|
|
@@ -639,18 +772,20 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
639
772
|
|
|
640
773
|
if data_file_desc.count("=") == 1:
|
|
641
774
|
src, dst = data_file_desc.split("=", 1)
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
if len(filenames) > 1 and not dst.endswith(("/", os.path.sep)):
|
|
646
|
-
Tracing.options_logger.sysexit(
|
|
647
|
-
"Error, pattern '%s' matches more than one file, but target has no trailing slash, not a directory."
|
|
648
|
-
% src
|
|
649
|
-
)
|
|
775
|
+
src = os.path.expanduser(src)
|
|
776
|
+
src_pattern = src
|
|
650
777
|
else:
|
|
651
778
|
src, dst, pattern = data_file_desc.split("=", 2)
|
|
779
|
+
src = os.path.expanduser(src)
|
|
780
|
+
src_pattern = os.path.join(src, pattern)
|
|
652
781
|
|
|
653
|
-
|
|
782
|
+
filenames = resolveShellPatternToFilenames(src_pattern)
|
|
783
|
+
|
|
784
|
+
if len(filenames) > 1 and not dst.endswith(("/", os.path.sep)):
|
|
785
|
+
Tracing.options_logger.sysexit(
|
|
786
|
+
"Error, pattern '%s' matches more than one file, but target has no trailing slash, not a directory."
|
|
787
|
+
% src
|
|
788
|
+
)
|
|
654
789
|
|
|
655
790
|
if not filenames:
|
|
656
791
|
Tracing.options_logger.sysexit(
|
|
@@ -664,29 +799,31 @@ it before using it: '%s' (from --output-filename='%s')."""
|
|
|
664
799
|
)
|
|
665
800
|
|
|
666
801
|
for data_dir in options.data_dirs:
|
|
667
|
-
|
|
668
|
-
Tracing.options_logger.sysexit(
|
|
669
|
-
"Error, malformed data dir description, must specify relative target path with '=' separating it."
|
|
670
|
-
)
|
|
802
|
+
_checkDataDirOptionValue(data_dir=data_dir, option_name="--include-data-dir")
|
|
671
803
|
|
|
672
|
-
|
|
804
|
+
for data_dir in options.raw_dirs:
|
|
805
|
+
_checkDataDirOptionValue(data_dir=data_dir, option_name="--include-raw-dir")
|
|
673
806
|
|
|
674
|
-
|
|
807
|
+
for pattern in getShallFollowExtraFilePatterns():
|
|
808
|
+
if os.path.isdir(pattern):
|
|
675
809
|
Tracing.options_logger.sysexit(
|
|
676
|
-
"Error,
|
|
677
|
-
%
|
|
810
|
+
"Error, pattern '%s' given to '--include-plugin-files' cannot be a directory name."
|
|
811
|
+
% pattern
|
|
678
812
|
)
|
|
679
813
|
|
|
680
|
-
|
|
814
|
+
for directory_name in getShallFollowExtra():
|
|
815
|
+
if not os.path.isdir(directory_name):
|
|
681
816
|
Tracing.options_logger.sysexit(
|
|
682
|
-
"Error,
|
|
683
|
-
%
|
|
817
|
+
"Error, value '%s' given to '--include-plugin-directory' must be a directory name."
|
|
818
|
+
% directory_name
|
|
684
819
|
)
|
|
685
820
|
|
|
686
|
-
|
|
687
|
-
if os.path.isdir(pattern):
|
|
821
|
+
if isStandardLibraryPath(directory_name):
|
|
688
822
|
Tracing.options_logger.sysexit(
|
|
689
|
-
"
|
|
823
|
+
"""\
|
|
824
|
+
Error, directory '%s' given to '--include-plugin-directory' must not be a \
|
|
825
|
+
standard library path. Use '--include-module' or '--include-package' \
|
|
826
|
+
options instead."""
|
|
690
827
|
% pattern
|
|
691
828
|
)
|
|
692
829
|
|
|
@@ -717,11 +854,14 @@ download. With that, your program will work on macOS 10.9 or higher."""
|
|
|
717
854
|
"Error, Apple Python 2.7 from macOS is not usable as per Apple decision, use e.g. CPython 2.7 instead."
|
|
718
855
|
)
|
|
719
856
|
|
|
720
|
-
if isStandaloneMode() and isLinux()
|
|
721
|
-
|
|
722
|
-
|
|
857
|
+
if isStandaloneMode() and isLinux():
|
|
858
|
+
# Cyclic dependency
|
|
859
|
+
from nuitka.utils.SharedLibraries import (
|
|
860
|
+
checkPatchElfPresenceAndUsability,
|
|
723
861
|
)
|
|
724
862
|
|
|
863
|
+
checkPatchElfPresenceAndUsability(Tracing.options_logger)
|
|
864
|
+
|
|
725
865
|
pgo_executable = getPgoExecutable()
|
|
726
866
|
if pgo_executable and not isPathExecutable(pgo_executable):
|
|
727
867
|
Tracing.options_logger.sysexit(
|
|
@@ -740,6 +880,14 @@ Error, onefile mode on Termux requires 'termux-elf-cleaner' to be installed, \
|
|
|
740
880
|
use 'pkg install termux-elf-cleaner' to use it."""
|
|
741
881
|
)
|
|
742
882
|
|
|
883
|
+
for user_yaml_filename in getUserProvidedYamlFiles():
|
|
884
|
+
if not os.path.exists(user_yaml_filename):
|
|
885
|
+
Tracing.options_logger.sysexit(
|
|
886
|
+
"""\
|
|
887
|
+
Error, cannot find user provider yaml file '%s'."""
|
|
888
|
+
% user_yaml_filename
|
|
889
|
+
)
|
|
890
|
+
|
|
743
891
|
# This triggers checks inside that code
|
|
744
892
|
getCompilationReportUserData()
|
|
745
893
|
|
|
@@ -752,6 +900,20 @@ def commentArgs():
|
|
|
752
900
|
"""
|
|
753
901
|
# A ton of cases to consider, pylint: disable=too-many-branches,too-many-statements
|
|
754
902
|
|
|
903
|
+
# Check files to exist or be suitable first before giving other warnings.
|
|
904
|
+
for filename in getMainEntryPointFilenames():
|
|
905
|
+
if not os.path.exists(filename):
|
|
906
|
+
Tracing.general.sysexit("Error, file '%s' is not found." % filename)
|
|
907
|
+
|
|
908
|
+
if (
|
|
909
|
+
shallMakeModule()
|
|
910
|
+
and os.path.normcase(os.path.basename(filename)) == "__init__.py"
|
|
911
|
+
):
|
|
912
|
+
Tracing.general.sysexit(
|
|
913
|
+
"""\
|
|
914
|
+
Error, to compile a package, specify its directory but, not the '__init__.py'."""
|
|
915
|
+
)
|
|
916
|
+
|
|
755
917
|
# Inform the user about potential issues with the running version. e.g. unsupported
|
|
756
918
|
# version.
|
|
757
919
|
if python_version_str not in getSupportedPythonVersions():
|
|
@@ -770,8 +932,28 @@ version '%s' instead or newer Nuitka."""
|
|
|
770
932
|
)
|
|
771
933
|
)
|
|
772
934
|
|
|
935
|
+
# spell-checker: ignore releaselevel
|
|
936
|
+
if sys.version_info.releaselevel not in ("final", "candidate"):
|
|
937
|
+
if python_version_str not in getNotYetSupportedPythonVersions():
|
|
938
|
+
Tracing.general.sysexit(
|
|
939
|
+
"""\
|
|
940
|
+
Non-final versions '%s' '%s' are not supported by Nuitka, use the \
|
|
941
|
+
final version instead."""
|
|
942
|
+
% (python_version_str, sys.version_info.releaselevel)
|
|
943
|
+
)
|
|
944
|
+
|
|
773
945
|
if python_version_str in getNotYetSupportedPythonVersions():
|
|
774
|
-
if
|
|
946
|
+
if sys.version_info.releaselevel != "final" and not isExperimental(
|
|
947
|
+
"python" + python_version_str
|
|
948
|
+
):
|
|
949
|
+
Tracing.general.warning(
|
|
950
|
+
"""\
|
|
951
|
+
The Python version '%s' '%s' is only experimentally supported by \
|
|
952
|
+
and recommended only for use in Nuitka development and testing."""
|
|
953
|
+
% (python_version_str, sys.version_info.releaselevel)
|
|
954
|
+
)
|
|
955
|
+
|
|
956
|
+
elif not isExperimental("python" + python_version_str):
|
|
775
957
|
Tracing.general.sysexit(
|
|
776
958
|
"""\
|
|
777
959
|
The Python version '%s' is not supported by Nuitka '%s', but an upcoming \
|
|
@@ -783,6 +965,13 @@ release will add it. In the mean time use '%s' instead."""
|
|
|
783
965
|
)
|
|
784
966
|
)
|
|
785
967
|
|
|
968
|
+
if not isPythonWithGil():
|
|
969
|
+
Tracing.general.warning(
|
|
970
|
+
"""\
|
|
971
|
+
The Python without GIL is only experimentally supported by \
|
|
972
|
+
and recommended only for use in Nuitka development and testing."""
|
|
973
|
+
)
|
|
974
|
+
|
|
786
975
|
default_reference_mode = (
|
|
787
976
|
"runtime" if shallMakeModule() or isStandaloneMode() else "original"
|
|
788
977
|
)
|
|
@@ -848,6 +1037,14 @@ release will add it. In the mean time use '%s' instead."""
|
|
|
848
1037
|
% getMsvcVersion()
|
|
849
1038
|
)
|
|
850
1039
|
|
|
1040
|
+
try:
|
|
1041
|
+
getJobLimit()
|
|
1042
|
+
except ValueError:
|
|
1043
|
+
Tracing.options_logger.sysexit(
|
|
1044
|
+
"For '--jobs' value, use integer values only, not, but not '%s'."
|
|
1045
|
+
% options.jobs
|
|
1046
|
+
)
|
|
1047
|
+
|
|
851
1048
|
if isOnefileMode():
|
|
852
1049
|
standalone_mode = "onefile"
|
|
853
1050
|
elif isStandaloneMode():
|
|
@@ -893,7 +1090,8 @@ to work. You need to instead selectively add them with \
|
|
|
893
1090
|
)
|
|
894
1091
|
|
|
895
1092
|
if (
|
|
896
|
-
not
|
|
1093
|
+
not shallCreatePythonPgoInput()
|
|
1094
|
+
and not standalone_mode
|
|
897
1095
|
and options.follow_all is None
|
|
898
1096
|
and not options.follow_modules
|
|
899
1097
|
and not options.follow_stdlib
|
|
@@ -921,7 +1119,7 @@ make sure that is intended."""
|
|
|
921
1119
|
options.static_libpython = "no"
|
|
922
1120
|
|
|
923
1121
|
if (
|
|
924
|
-
not
|
|
1122
|
+
not isCPgoMode()
|
|
925
1123
|
and not isPythonPgoMode()
|
|
926
1124
|
and (getPgoArgs() or getPgoExecutable())
|
|
927
1125
|
):
|
|
@@ -929,15 +1127,19 @@ make sure that is intended."""
|
|
|
929
1127
|
"Providing PGO arguments without enabling PGO mode has no effect."
|
|
930
1128
|
)
|
|
931
1129
|
|
|
932
|
-
if
|
|
1130
|
+
if isCPgoMode():
|
|
933
1131
|
if isStandaloneMode():
|
|
934
1132
|
Tracing.optimization_logger.warning(
|
|
935
|
-
"
|
|
1133
|
+
"""\
|
|
1134
|
+
Using C level PGO with standalone/onefile mode is not \
|
|
1135
|
+
currently working. Expect errors."""
|
|
936
1136
|
)
|
|
937
1137
|
|
|
938
1138
|
if shallMakeModule():
|
|
939
1139
|
Tracing.optimization_logger.warning(
|
|
940
|
-
"
|
|
1140
|
+
"""\
|
|
1141
|
+
Using C level PGO with module mode is not currently \
|
|
1142
|
+
working. Expect errors."""
|
|
941
1143
|
)
|
|
942
1144
|
|
|
943
1145
|
if (
|
|
@@ -945,6 +1147,7 @@ make sure that is intended."""
|
|
|
945
1147
|
and not shallMakeModule()
|
|
946
1148
|
and not shallUseStaticLibPython()
|
|
947
1149
|
and getSystemStaticLibPythonPath() is not None
|
|
1150
|
+
and not shallUsePythonDebug()
|
|
948
1151
|
):
|
|
949
1152
|
Tracing.options_logger.info(
|
|
950
1153
|
"""Detected static libpython to exist, consider '--static-libpython=yes' for better performance, \
|
|
@@ -957,11 +1160,6 @@ but errors may happen."""
|
|
|
957
1160
|
"The '--debugger' option has no effect outside of '--debug' without '--run' option."
|
|
958
1161
|
)
|
|
959
1162
|
|
|
960
|
-
if not shallClearPythonPathEnvironment():
|
|
961
|
-
Tracing.options_logger.warning(
|
|
962
|
-
"The '--execute-with-pythonpath' option has no effect without '--run' option."
|
|
963
|
-
)
|
|
964
|
-
|
|
965
1163
|
# Check if the fallback is used, except for Python2 on Windows, where we cannot
|
|
966
1164
|
# have it.
|
|
967
1165
|
if hasattr(OrderedSet, "is_fallback") and not (
|
|
@@ -983,15 +1181,10 @@ and not with the non-debug version.
|
|
|
983
1181
|
"""
|
|
984
1182
|
)
|
|
985
1183
|
|
|
986
|
-
if (
|
|
987
|
-
isMacOS()
|
|
988
|
-
and shallCreateAppBundle()
|
|
989
|
-
and shallDisableConsoleWindow()
|
|
990
|
-
and not getIconPaths()
|
|
991
|
-
):
|
|
1184
|
+
if isMacOS() and shallCreateAppBundle() and not getMacOSIconPaths():
|
|
992
1185
|
Tracing.general.warning(
|
|
993
1186
|
"""\
|
|
994
|
-
For
|
|
1187
|
+
For application bundles, you ought to specify an icon with '--macos-app-icon'.", \
|
|
995
1188
|
otherwise a dock icon may not be present."""
|
|
996
1189
|
)
|
|
997
1190
|
|
|
@@ -1007,23 +1200,10 @@ notarization capable signature, the default identify 'ad-hoc' is not going \
|
|
|
1007
1200
|
to work."""
|
|
1008
1201
|
)
|
|
1009
1202
|
|
|
1010
|
-
for filename in getMainEntryPointFilenames():
|
|
1011
|
-
if not os.path.exists(filename):
|
|
1012
|
-
Tracing.general.sysexit("Error, file '%s' is not found." % filename)
|
|
1013
|
-
|
|
1014
|
-
if (
|
|
1015
|
-
shallMakeModule()
|
|
1016
|
-
and os.path.normcase(os.path.basename(filename)) == "__init__.py"
|
|
1017
|
-
):
|
|
1018
|
-
Tracing.general.sysexit(
|
|
1019
|
-
"""\
|
|
1020
|
-
Error, to compile a package, specify its directory but, not the '__init__.py'."""
|
|
1021
|
-
)
|
|
1022
|
-
|
|
1023
1203
|
if (
|
|
1024
1204
|
isWin32Windows()
|
|
1025
1205
|
and 0x340 <= python_version < 0x380
|
|
1026
|
-
and
|
|
1206
|
+
and getWindowsConsoleMode() != "disable"
|
|
1027
1207
|
):
|
|
1028
1208
|
Tracing.general.warning(
|
|
1029
1209
|
"""\
|
|
@@ -1036,6 +1216,49 @@ console window for deployment.
|
|
|
1036
1216
|
mnemonic="old-python-windows-console",
|
|
1037
1217
|
)
|
|
1038
1218
|
|
|
1219
|
+
if shallMakeModule() and (getForcedStderrPath() or getForcedStdoutPath()):
|
|
1220
|
+
Tracing.general.warning(
|
|
1221
|
+
"""\
|
|
1222
|
+
Extension modules do not control process outputs, therefore the \
|
|
1223
|
+
options '--force-stdout-spec' and '--force-stderr-spec' have no \
|
|
1224
|
+
impact and should not be specified."""
|
|
1225
|
+
)
|
|
1226
|
+
|
|
1227
|
+
if shallMakeModule() and options.console_mode is not None:
|
|
1228
|
+
Tracing.general.warning(
|
|
1229
|
+
"""\
|
|
1230
|
+
Extension modules are not binaries, and therefore the option \
|
|
1231
|
+
'--windows-console-mode' does not have an impact and should \
|
|
1232
|
+
not be specified."""
|
|
1233
|
+
)
|
|
1234
|
+
|
|
1235
|
+
if options.disable_console in (True, False):
|
|
1236
|
+
if isWin32Windows():
|
|
1237
|
+
Tracing.general.warning(
|
|
1238
|
+
"""\
|
|
1239
|
+
The old console option '%s' should not be given anymore, use '%s' \
|
|
1240
|
+
instead. It also has the extra mode 'attach' to consider."""
|
|
1241
|
+
% (
|
|
1242
|
+
(
|
|
1243
|
+
"--disable-console"
|
|
1244
|
+
if options.disable_console
|
|
1245
|
+
else "--enable-console"
|
|
1246
|
+
),
|
|
1247
|
+
"--windows-console-mode=%s"
|
|
1248
|
+
% ("disable" if options.disable_console else "force"),
|
|
1249
|
+
)
|
|
1250
|
+
)
|
|
1251
|
+
else:
|
|
1252
|
+
Tracing.general.warning(
|
|
1253
|
+
"""The old console option '%s' should not be given anymore, and doesn't
|
|
1254
|
+
have any effect anymore on non-Windows."""
|
|
1255
|
+
% (
|
|
1256
|
+
"--disable-console"
|
|
1257
|
+
if options.disable_console
|
|
1258
|
+
else "--enable-console"
|
|
1259
|
+
)
|
|
1260
|
+
)
|
|
1261
|
+
|
|
1039
1262
|
|
|
1040
1263
|
def isVerbose():
|
|
1041
1264
|
""":returns: bool derived from ``--verbose``"""
|
|
@@ -1049,7 +1272,7 @@ def shallTraceExecution():
|
|
|
1049
1272
|
|
|
1050
1273
|
def shallExecuteImmediately():
|
|
1051
1274
|
""":returns: bool derived from ``--run``"""
|
|
1052
|
-
return options.immediate_execution
|
|
1275
|
+
return options is not None and options.immediate_execution
|
|
1053
1276
|
|
|
1054
1277
|
|
|
1055
1278
|
def shallRunInDebugger():
|
|
@@ -1120,6 +1343,9 @@ def shallFollowNoImports():
|
|
|
1120
1343
|
|
|
1121
1344
|
def shallFollowAllImports():
|
|
1122
1345
|
""":returns: bool derived from ``--follow-imports``"""
|
|
1346
|
+
if shallCreatePythonPgoInput() and options.is_standalone:
|
|
1347
|
+
return True
|
|
1348
|
+
|
|
1123
1349
|
return options.is_standalone or options.follow_all is True
|
|
1124
1350
|
|
|
1125
1351
|
|
|
@@ -1133,7 +1359,7 @@ def getShallFollowInNoCase():
|
|
|
1133
1359
|
|
|
1134
1360
|
|
|
1135
1361
|
def getShallFollowModules():
|
|
1136
|
-
"""*list*, items of ``--follow-import-to=``"""
|
|
1362
|
+
"""*list*, items of ``--follow-import-to=`` amended with what ``--include-module`` and ``--include-package`` got"""
|
|
1137
1363
|
return sum(
|
|
1138
1364
|
[
|
|
1139
1365
|
_splitShellPattern(x)
|
|
@@ -1198,11 +1424,15 @@ def getShallIncludeDataFiles():
|
|
|
1198
1424
|
src, dest = data_file_desc.split("=", 1)
|
|
1199
1425
|
|
|
1200
1426
|
for pattern in _splitShellPattern(src):
|
|
1427
|
+
pattern = os.path.expanduser(pattern)
|
|
1428
|
+
|
|
1201
1429
|
yield pattern, None, dest, data_file_desc
|
|
1202
1430
|
else:
|
|
1203
1431
|
src, dest, pattern = data_file_desc.split("=", 2)
|
|
1204
1432
|
|
|
1205
1433
|
for pattern in _splitShellPattern(pattern):
|
|
1434
|
+
pattern = os.path.expanduser(pattern)
|
|
1435
|
+
|
|
1206
1436
|
yield os.path.join(src, pattern), src, dest, data_file_desc
|
|
1207
1437
|
|
|
1208
1438
|
|
|
@@ -1220,6 +1450,12 @@ def getShallNotIncludeDataFilePatterns():
|
|
|
1220
1450
|
return options.data_files_inhibited
|
|
1221
1451
|
|
|
1222
1452
|
|
|
1453
|
+
def getShallIncludeExternallyDataFilePatterns():
|
|
1454
|
+
"""*list*, items of ``--include-onefile-external-data=``"""
|
|
1455
|
+
|
|
1456
|
+
return options.data_files_external
|
|
1457
|
+
|
|
1458
|
+
|
|
1223
1459
|
def getShallNotIncludeDllFilePatterns():
|
|
1224
1460
|
"""*list*, items of ``--noinclude-dlls=``"""
|
|
1225
1461
|
|
|
@@ -1315,9 +1551,15 @@ def getMainEntryPointFilenames():
|
|
|
1315
1551
|
if len(options.mains) == 1:
|
|
1316
1552
|
assert not positional_args
|
|
1317
1553
|
|
|
1318
|
-
|
|
1554
|
+
result = tuple(options.mains)
|
|
1319
1555
|
else:
|
|
1320
|
-
|
|
1556
|
+
result = (positional_args[0],)
|
|
1557
|
+
|
|
1558
|
+
return tuple(os.path.normpath(r).rstrip(os.path.sep) for r in result)
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
def isMultidistMode():
|
|
1562
|
+
return options is not None and options.mains and len(options.mains) > 1
|
|
1321
1563
|
|
|
1322
1564
|
|
|
1323
1565
|
def shallOptimizeStringExec():
|
|
@@ -1325,11 +1567,6 @@ def shallOptimizeStringExec():
|
|
|
1325
1567
|
return False
|
|
1326
1568
|
|
|
1327
1569
|
|
|
1328
|
-
def shallClearPythonPathEnvironment():
|
|
1329
|
-
"""*bool* = **not** ``--execute-with-pythonpath``"""
|
|
1330
|
-
return not options.keep_pythonpath
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
1570
|
_shall_use_static_lib_python = None
|
|
1334
1571
|
|
|
1335
1572
|
|
|
@@ -1342,7 +1579,10 @@ def _shallUseStaticLibPython():
|
|
|
1342
1579
|
if options.static_libpython == "auto":
|
|
1343
1580
|
# Nuitka-Python is good to to static linking.
|
|
1344
1581
|
if isNuitkaPython():
|
|
1345
|
-
return True, "Nuitka-Python is broken."
|
|
1582
|
+
return True, "Nuitka-Python is unexpectedly broken."
|
|
1583
|
+
|
|
1584
|
+
if isHomebrewPython():
|
|
1585
|
+
return True, "Homebrew Python is unexpectedly broken."
|
|
1346
1586
|
|
|
1347
1587
|
# Debian packages with are usable if the OS is new enough
|
|
1348
1588
|
from nuitka.utils.StaticLibraries import (
|
|
@@ -1364,7 +1604,7 @@ def _shallUseStaticLibPython():
|
|
|
1364
1604
|
|
|
1365
1605
|
# For Anaconda default to trying static lib python library, which
|
|
1366
1606
|
# normally is just not available or if it is even unusable.
|
|
1367
|
-
if isAnacondaPython() and not
|
|
1607
|
+
if isAnacondaPython() and not isWin32Windows():
|
|
1368
1608
|
return (
|
|
1369
1609
|
True,
|
|
1370
1610
|
"Nuitka on Anaconda needs package for static libpython installed. Execute 'conda install libpython-static'.",
|
|
@@ -1373,6 +1613,21 @@ def _shallUseStaticLibPython():
|
|
|
1373
1613
|
if isPyenvPython():
|
|
1374
1614
|
return True, "Nuitka on pyenv should not use '--enable-shared'."
|
|
1375
1615
|
|
|
1616
|
+
if isManyLinuxPython():
|
|
1617
|
+
return (
|
|
1618
|
+
True,
|
|
1619
|
+
"""\
|
|
1620
|
+
Nuitka on 'manylinux' has no shared libraries. Use container with \
|
|
1621
|
+
the command 'RUN cd /opt/_internal && tar xf static-libs-for-embedding-only.tar.xz' \
|
|
1622
|
+
added to provide the static link library.""",
|
|
1623
|
+
)
|
|
1624
|
+
|
|
1625
|
+
if isMacOS() and isCPythonOfficialPackage():
|
|
1626
|
+
return True, None
|
|
1627
|
+
|
|
1628
|
+
if isArchPackagePython():
|
|
1629
|
+
return True, None
|
|
1630
|
+
|
|
1376
1631
|
return options.static_libpython == "yes", None
|
|
1377
1632
|
|
|
1378
1633
|
|
|
@@ -1438,17 +1693,25 @@ def isShowScons():
|
|
|
1438
1693
|
|
|
1439
1694
|
def getJobLimit():
|
|
1440
1695
|
"""*int*, value of ``--jobs`` / "-j" or number of CPU kernels"""
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1696
|
+
jobs = options.jobs
|
|
1697
|
+
|
|
1698
|
+
# Low memory has a default of 1.
|
|
1699
|
+
if jobs is None and isLowMemory():
|
|
1700
|
+
return 1
|
|
1701
|
+
|
|
1702
|
+
if jobs is None:
|
|
1703
|
+
result = getCPUCoreCount()
|
|
1704
|
+
else:
|
|
1705
|
+
result = int(jobs)
|
|
1706
|
+
|
|
1707
|
+
if result <= 0:
|
|
1708
|
+
result = max(1, getCPUCoreCount() + result)
|
|
1446
1709
|
|
|
1447
|
-
return
|
|
1710
|
+
return result
|
|
1448
1711
|
|
|
1449
1712
|
|
|
1450
1713
|
def getLtoMode():
|
|
1451
|
-
""":returns: bool derived from ``--lto``
|
|
1714
|
+
""":returns: bool derived from ``--lto``"""
|
|
1452
1715
|
return options.lto
|
|
1453
1716
|
|
|
1454
1717
|
|
|
@@ -1507,16 +1770,18 @@ def shallDisableBytecodeCacheUsage():
|
|
|
1507
1770
|
return shallDisableCacheUsage("bytecode")
|
|
1508
1771
|
|
|
1509
1772
|
|
|
1510
|
-
def
|
|
1511
|
-
""":returns:
|
|
1512
|
-
return
|
|
1513
|
-
|
|
1773
|
+
def shallDisableCompressionCacheUsage():
|
|
1774
|
+
""":returns: bool derived from ``--disable-cache=compression``"""
|
|
1775
|
+
return shallDisableCacheUsage("compression")
|
|
1514
1776
|
|
|
1515
|
-
def mayDisableConsoleWindow():
|
|
1516
|
-
""":returns: bool derived from platform support of disabling the console,"""
|
|
1517
1777
|
|
|
1518
|
-
|
|
1519
|
-
|
|
1778
|
+
def getWindowsConsoleMode():
|
|
1779
|
+
""":returns: str from ``--windows-console-mode``"""
|
|
1780
|
+
if options.disable_console is True:
|
|
1781
|
+
return "disable"
|
|
1782
|
+
if options.disable_console is False:
|
|
1783
|
+
return "force"
|
|
1784
|
+
return options.console_mode or "force"
|
|
1520
1785
|
|
|
1521
1786
|
|
|
1522
1787
|
def _isFullCompat():
|
|
@@ -1577,10 +1842,6 @@ def enableExperimental(indication):
|
|
|
1577
1842
|
_experimental.add(indication)
|
|
1578
1843
|
|
|
1579
1844
|
|
|
1580
|
-
def disableExperimental(indication):
|
|
1581
|
-
_experimental.remove(indication)
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
1845
|
def getExperimentalIndications():
|
|
1585
1846
|
"""*tuple*, items of ``--experimental=``"""
|
|
1586
1847
|
if hasattr(options, "experimental"):
|
|
@@ -1589,6 +1850,23 @@ def getExperimentalIndications():
|
|
|
1589
1850
|
return ()
|
|
1590
1851
|
|
|
1591
1852
|
|
|
1853
|
+
def getDebugModeIndications():
|
|
1854
|
+
result = []
|
|
1855
|
+
|
|
1856
|
+
for debug_option_value_name in ("debug_immortal",):
|
|
1857
|
+
if debug_option_value_name == "debug_immortal" and python_version < 0x3C0:
|
|
1858
|
+
continue
|
|
1859
|
+
|
|
1860
|
+
if _isDebug():
|
|
1861
|
+
if getattr(options, debug_option_value_name) is not False:
|
|
1862
|
+
result.append(debug_option_value_name)
|
|
1863
|
+
else:
|
|
1864
|
+
if getattr(options, debug_option_value_name) is True:
|
|
1865
|
+
result.append(debug_option_value_name)
|
|
1866
|
+
|
|
1867
|
+
return result
|
|
1868
|
+
|
|
1869
|
+
|
|
1592
1870
|
def shallExplainImports():
|
|
1593
1871
|
""":returns: bool derived from ``--explain-imports``"""
|
|
1594
1872
|
return options is not None and options.explain_imports
|
|
@@ -1596,12 +1874,18 @@ def shallExplainImports():
|
|
|
1596
1874
|
|
|
1597
1875
|
def isStandaloneMode():
|
|
1598
1876
|
""":returns: bool derived from ``--standalone``"""
|
|
1599
|
-
|
|
1877
|
+
if shallCreatePythonPgoInput():
|
|
1878
|
+
return False
|
|
1879
|
+
|
|
1880
|
+
return bool(options.is_standalone or options.list_package_dlls)
|
|
1600
1881
|
|
|
1601
1882
|
|
|
1602
1883
|
def isOnefileMode():
|
|
1603
1884
|
""":returns: bool derived from ``--onefile``"""
|
|
1604
|
-
|
|
1885
|
+
if shallCreatePythonPgoInput():
|
|
1886
|
+
return False
|
|
1887
|
+
|
|
1888
|
+
return bool(options.is_onefile)
|
|
1605
1889
|
|
|
1606
1890
|
|
|
1607
1891
|
def isAcceleratedMode():
|
|
@@ -1616,13 +1900,16 @@ def isOnefileTempDirMode():
|
|
|
1616
1900
|
Using cached onefile execution when the spec doesn't contain
|
|
1617
1901
|
volatile things.
|
|
1618
1902
|
"""
|
|
1903
|
+
if shallCreatePythonPgoInput():
|
|
1904
|
+
return False
|
|
1905
|
+
|
|
1619
1906
|
spec = getOnefileTempDirSpec()
|
|
1620
1907
|
|
|
1621
1908
|
for candidate in (
|
|
1622
|
-
"
|
|
1623
|
-
"
|
|
1624
|
-
"
|
|
1625
|
-
"
|
|
1909
|
+
"{PID}",
|
|
1910
|
+
"{TIME}",
|
|
1911
|
+
"{PROGRAM}",
|
|
1912
|
+
"{PROGRAM_BASE}",
|
|
1626
1913
|
):
|
|
1627
1914
|
if candidate in spec:
|
|
1628
1915
|
return True
|
|
@@ -1630,8 +1917,11 @@ def isOnefileTempDirMode():
|
|
|
1630
1917
|
return False
|
|
1631
1918
|
|
|
1632
1919
|
|
|
1633
|
-
def
|
|
1634
|
-
""":returns: bool derived from ``--pgo``"""
|
|
1920
|
+
def isCPgoMode():
|
|
1921
|
+
""":returns: bool derived from ``--pgo-c``"""
|
|
1922
|
+
if shallCreatePythonPgoInput():
|
|
1923
|
+
return False
|
|
1924
|
+
|
|
1635
1925
|
return options.is_c_pgo
|
|
1636
1926
|
|
|
1637
1927
|
|
|
@@ -1645,7 +1935,7 @@ def getPythonPgoInput():
|
|
|
1645
1935
|
return options.python_pgo_input
|
|
1646
1936
|
|
|
1647
1937
|
|
|
1648
|
-
def
|
|
1938
|
+
def shallCreatePythonPgoInput():
|
|
1649
1939
|
return isPythonPgoMode() and getPythonPgoInput() is None
|
|
1650
1940
|
|
|
1651
1941
|
|
|
@@ -1659,9 +1949,7 @@ def getPgoExecutable():
|
|
|
1659
1949
|
|
|
1660
1950
|
if options.pgo_executable and os.path.exists(options.pgo_executable):
|
|
1661
1951
|
if not os.path.isabs(options.pgo_executable):
|
|
1662
|
-
options.pgo_executable = os.path.
|
|
1663
|
-
os.path.join(".", options.pgo_executable)
|
|
1664
|
-
)
|
|
1952
|
+
options.pgo_executable = os.path.join(".", options.pgo_executable)
|
|
1665
1953
|
|
|
1666
1954
|
return options.pgo_executable
|
|
1667
1955
|
|
|
@@ -1674,11 +1962,10 @@ def getPythonPgoUnseenModulePolicy():
|
|
|
1674
1962
|
def getOnefileTempDirSpec():
|
|
1675
1963
|
"""*str* = ``--onefile-tempdir-spec``"""
|
|
1676
1964
|
result = (
|
|
1677
|
-
options.onefile_tempdir_spec or "
|
|
1965
|
+
options.onefile_tempdir_spec or "{TEMP}" + os.path.sep + "onefile_{PID}_{TIME}"
|
|
1678
1966
|
)
|
|
1679
1967
|
|
|
1680
|
-
|
|
1681
|
-
return os.path.normpath(result)
|
|
1968
|
+
return result
|
|
1682
1969
|
|
|
1683
1970
|
|
|
1684
1971
|
def getOnefileChildGraceTime():
|
|
@@ -1695,10 +1982,31 @@ def shallNotCompressOnefile():
|
|
|
1695
1982
|
return options.onefile_no_compression
|
|
1696
1983
|
|
|
1697
1984
|
|
|
1698
|
-
def
|
|
1699
|
-
"""*
|
|
1985
|
+
def shallOnefileAsArchive():
|
|
1986
|
+
"""*bool* = ``--onefile-as-archive``"""
|
|
1987
|
+
return options.onefile_as_archive
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
def _checkIconPaths(icon_paths):
|
|
1991
|
+
for icon_path in icon_paths:
|
|
1992
|
+
if not os.path.exists(icon_path):
|
|
1993
|
+
Tracing.options_logger.sysexit(
|
|
1994
|
+
"Error, icon path '%s' does not exist." % icon_path
|
|
1995
|
+
)
|
|
1996
|
+
|
|
1997
|
+
checkIconUsage(logger=Tracing.options_logger, icon_path=icon_path)
|
|
1998
|
+
|
|
1999
|
+
return icon_paths
|
|
1700
2000
|
|
|
1701
|
-
|
|
2001
|
+
|
|
2002
|
+
def getWindowsIconPaths():
|
|
2003
|
+
"""*list of str*, values of ``--windows-icon-from-ico``"""
|
|
2004
|
+
return _checkIconPaths(options.windows_icon_path)
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
def getLinuxIconPaths():
|
|
2008
|
+
"""*list of str*, values of ``--linux-icon``"""
|
|
2009
|
+
result = options.linux_icon_path
|
|
1702
2010
|
|
|
1703
2011
|
# Check if Linux icon requirement is met.
|
|
1704
2012
|
if isLinux() and not result and isOnefileMode():
|
|
@@ -1714,7 +2022,12 @@ def getIconPaths():
|
|
|
1714
2022
|
result.append(icon)
|
|
1715
2023
|
break
|
|
1716
2024
|
|
|
1717
|
-
return result
|
|
2025
|
+
return _checkIconPaths(result)
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
def getMacOSIconPaths():
|
|
2029
|
+
"""*list of str*, values of ``--macos-app-icon``"""
|
|
2030
|
+
return _checkIconPaths(options.macos_icon_path)
|
|
1718
2031
|
|
|
1719
2032
|
|
|
1720
2033
|
def getWindowsIconExecutablePath():
|
|
@@ -1732,6 +2045,28 @@ def shallAskForWindowsUIAccessRights():
|
|
|
1732
2045
|
return options.windows_uac_uiaccess
|
|
1733
2046
|
|
|
1734
2047
|
|
|
2048
|
+
def getLegalCopyright():
|
|
2049
|
+
"""*str* name of the product to use derived from ``--copyright``"""
|
|
2050
|
+
return options.legal_copyright
|
|
2051
|
+
|
|
2052
|
+
|
|
2053
|
+
def getLegalTrademarks():
|
|
2054
|
+
"""*str* name of the product to use derived from ``--trademarks``"""
|
|
2055
|
+
return options.legal_trademarks
|
|
2056
|
+
|
|
2057
|
+
|
|
2058
|
+
def getLegalInformation():
|
|
2059
|
+
result = options.legal_copyright
|
|
2060
|
+
|
|
2061
|
+
if options.legal_trademarks:
|
|
2062
|
+
if result is not None:
|
|
2063
|
+
result += "\nTrademark information:" + options.legal_trademarks
|
|
2064
|
+
else:
|
|
2065
|
+
result = options.legal_trademarks
|
|
2066
|
+
|
|
2067
|
+
return result
|
|
2068
|
+
|
|
2069
|
+
|
|
1735
2070
|
def isWindowsServiceMode():
|
|
1736
2071
|
"""*bool*, value of ``--windows-service``"""
|
|
1737
2072
|
return options.windows_service
|
|
@@ -1800,27 +2135,47 @@ def _parseVersionNumber(value):
|
|
|
1800
2135
|
|
|
1801
2136
|
|
|
1802
2137
|
def getProductVersion():
|
|
2138
|
+
""":returns: str, derived from ``--product-version``"""
|
|
2139
|
+
return options.product_version
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
def getProductVersionTuple():
|
|
1803
2143
|
""":returns: tuple of 4 ints or None, derived from ``--product-version``"""
|
|
1804
2144
|
return _parseVersionNumber(options.product_version)
|
|
1805
2145
|
|
|
1806
2146
|
|
|
1807
2147
|
def getFileVersion():
|
|
2148
|
+
""":returns str, derived from ``--file-version``"""
|
|
2149
|
+
return options.file_version
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
def getFileVersionTuple():
|
|
1808
2153
|
""":returns tuple of 4 ints or None, derived from ``--file-version``"""
|
|
1809
2154
|
return _parseVersionNumber(options.file_version)
|
|
1810
2155
|
|
|
1811
2156
|
|
|
2157
|
+
def getProductFileVersion():
|
|
2158
|
+
if options.product_version:
|
|
2159
|
+
if options.file_version:
|
|
2160
|
+
return "%s-%s" % (options.product_version, options.file_version)
|
|
2161
|
+
else:
|
|
2162
|
+
return options.product_version
|
|
2163
|
+
else:
|
|
2164
|
+
return options.file_version
|
|
2165
|
+
|
|
2166
|
+
|
|
1812
2167
|
def getWindowsSplashScreen():
|
|
1813
2168
|
""":returns: bool derived from ``--onefile-windows-splash-screen-image``"""
|
|
1814
2169
|
return options.splash_screen_image
|
|
1815
2170
|
|
|
1816
2171
|
|
|
1817
2172
|
def getCompanyName():
|
|
1818
|
-
"""*str* name of the company to use"""
|
|
2173
|
+
"""*str* name of the company to use derived from ``--company-name``"""
|
|
1819
2174
|
return options.company_name
|
|
1820
2175
|
|
|
1821
2176
|
|
|
1822
2177
|
def getProductName():
|
|
1823
|
-
"""*str* name of the product to use"""
|
|
2178
|
+
"""*str* name of the product to use derived from ``--product-name``"""
|
|
1824
2179
|
return options.product_name
|
|
1825
2180
|
|
|
1826
2181
|
|
|
@@ -1836,6 +2191,9 @@ def getMacOSTargetArch():
|
|
|
1836
2191
|
|
|
1837
2192
|
def shallCreateAppBundle():
|
|
1838
2193
|
"""*bool* shall create an application bundle, derived from ``--macos-create-app-bundle`` value"""
|
|
2194
|
+
if shallCreatePythonPgoInput():
|
|
2195
|
+
return False
|
|
2196
|
+
|
|
1839
2197
|
return options.macos_create_bundle and isMacOS()
|
|
1840
2198
|
|
|
1841
2199
|
|
|
@@ -2106,27 +2464,28 @@ def shallUseProgressBar():
|
|
|
2106
2464
|
|
|
2107
2465
|
def getForcedStdoutPath():
|
|
2108
2466
|
"""*str* force program stdout output into that filename"""
|
|
2109
|
-
|
|
2467
|
+
if shallCreatePythonPgoInput():
|
|
2468
|
+
return False
|
|
2110
2469
|
|
|
2111
|
-
|
|
2112
|
-
result = os.path.normpath(result)
|
|
2113
|
-
|
|
2114
|
-
return result
|
|
2470
|
+
return options.force_stdout_spec
|
|
2115
2471
|
|
|
2116
2472
|
|
|
2117
2473
|
def getForcedStderrPath():
|
|
2118
2474
|
"""*str* force program stderr output into that filename"""
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
if result is not None:
|
|
2122
|
-
result = os.path.normpath(result)
|
|
2475
|
+
if shallCreatePythonPgoInput():
|
|
2476
|
+
return False
|
|
2123
2477
|
|
|
2124
|
-
return
|
|
2478
|
+
return options.force_stderr_spec
|
|
2125
2479
|
|
|
2126
2480
|
|
|
2127
|
-
def shallShowSourceModifications():
|
|
2481
|
+
def shallShowSourceModifications(module_name):
|
|
2128
2482
|
"""*bool* display plugin source changes derived from --show-source-changes"""
|
|
2129
|
-
|
|
2483
|
+
if options is None:
|
|
2484
|
+
return False
|
|
2485
|
+
|
|
2486
|
+
result, _reason = module_name.matchesToShellPatterns(options.show_source_changes)
|
|
2487
|
+
|
|
2488
|
+
return result
|
|
2130
2489
|
|
|
2131
2490
|
|
|
2132
2491
|
def isLowMemory():
|
|
@@ -2208,3 +2567,63 @@ def shallDisplayWarningMnemonic(mnemonic):
|
|
|
2208
2567
|
|
|
2209
2568
|
def shallShowExecutedCommands():
|
|
2210
2569
|
return isExperimental("show-commands")
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
def getTargetPythonDescription():
|
|
2573
|
+
""":returns: tuple(python_version,OS/arch) string derived from ``--target``"""
|
|
2574
|
+
if options.target_spec is not None:
|
|
2575
|
+
# TODO: Only one we are working on right now.
|
|
2576
|
+
assert options.target_spec == "wasi"
|
|
2577
|
+
|
|
2578
|
+
return python_version, "wasi"
|
|
2579
|
+
|
|
2580
|
+
return None
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
def getFcfProtectionMode():
|
|
2584
|
+
""":returns: string derived from ``--fcf-protection``"""
|
|
2585
|
+
return options.cf_protection
|
|
2586
|
+
|
|
2587
|
+
|
|
2588
|
+
def getModuleParameter(module_name, parameter_name):
|
|
2589
|
+
""":returns: string derived from ``--module-parameter``"""
|
|
2590
|
+
|
|
2591
|
+
module_name_prefix = module_name.getTopLevelPackageName().asString()
|
|
2592
|
+
|
|
2593
|
+
if parameter_name.startswith(module_name_prefix + "-"):
|
|
2594
|
+
option_name = parameter_name
|
|
2595
|
+
else:
|
|
2596
|
+
option_name = module_name_prefix + "-" + parameter_name
|
|
2597
|
+
|
|
2598
|
+
for module_option in options.module_parameters:
|
|
2599
|
+
module_option_name, module_option_value = module_option.split("=", 1)
|
|
2600
|
+
|
|
2601
|
+
if option_name == module_option_name:
|
|
2602
|
+
return module_option_value
|
|
2603
|
+
|
|
2604
|
+
return None
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
def getForcedRuntimeEnvironmentVariableValues():
|
|
2608
|
+
""":returns: iterable (string, string) derived from ``----force-runtime-environment-variable``"""
|
|
2609
|
+
|
|
2610
|
+
for forced_runtime_env_variables_spec in options.forced_runtime_env_variables:
|
|
2611
|
+
name, value = forced_runtime_env_variables_spec.split("=", 1)
|
|
2612
|
+
|
|
2613
|
+
yield (name, value)
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
2617
|
+
# integrates with CPython, but also works on its own.
|
|
2618
|
+
#
|
|
2619
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
2620
|
+
# you may not use this file except in compliance with the License.
|
|
2621
|
+
# You may obtain a copy of the License at
|
|
2622
|
+
#
|
|
2623
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
2624
|
+
#
|
|
2625
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
2626
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
2627
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2628
|
+
# See the License for the specific language governing permissions and
|
|
2629
|
+
# limitations under the License.
|