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
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
// Copyright
|
|
2
|
-
|
|
3
|
-
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
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
|
+
|
|
18
3
|
/* The main program for a compiled program.
|
|
19
4
|
*
|
|
20
5
|
* It needs to prepare the interpreter and then loads and executes
|
|
@@ -47,10 +32,9 @@
|
|
|
47
32
|
#define SYSFLAG_BYTES_WARNING 0
|
|
48
33
|
#define SYSFLAG_UTF8 0
|
|
49
34
|
#define SYSFLAG_UNBUFFERED 0
|
|
50
|
-
#endif
|
|
51
|
-
|
|
52
|
-
#ifndef NUITKA_MAIN_MODULE_NAME
|
|
53
35
|
#define NUITKA_MAIN_MODULE_NAME "__main__"
|
|
36
|
+
#define NUITKA_MAIN_IS_PACKAGE_BOOL false
|
|
37
|
+
#define _NUITKA_ATTACH_CONSOLE_WINDOW 1
|
|
54
38
|
#endif
|
|
55
39
|
|
|
56
40
|
// It doesn't work for MinGW64 to update the standard output handles early on,
|
|
@@ -65,6 +49,10 @@
|
|
|
65
49
|
#define NUITKA_STANDARD_HANDLES_EARLY 0
|
|
66
50
|
#endif
|
|
67
51
|
|
|
52
|
+
#if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
|
|
53
|
+
#include "HelpersConsole.c"
|
|
54
|
+
#endif
|
|
55
|
+
|
|
68
56
|
extern PyCodeObject *codeobj_main;
|
|
69
57
|
|
|
70
58
|
/* For later use in "Py_GetArgcArgv" we expose the needed value */
|
|
@@ -85,7 +73,7 @@ static struct _frozen *old_frozen = NULL;
|
|
|
85
73
|
static struct _frozen const *old_frozen = NULL;
|
|
86
74
|
#endif
|
|
87
75
|
|
|
88
|
-
static void prepareFrozenModules() {
|
|
76
|
+
static void prepareFrozenModules(void) {
|
|
89
77
|
// Tell the CPython library to use our pre-compiled modules as frozen
|
|
90
78
|
// modules. This for those modules/packages like "encoding" that will be
|
|
91
79
|
// loaded during "Py_Initialize" already, for the others they may be
|
|
@@ -118,112 +106,7 @@ static void prepareFrozenModules() {
|
|
|
118
106
|
}
|
|
119
107
|
#endif
|
|
120
108
|
|
|
121
|
-
#
|
|
122
|
-
|
|
123
|
-
#if defined(_WIN32)
|
|
124
|
-
#define environment_char_t wchar_t
|
|
125
|
-
|
|
126
|
-
static environment_char_t const *getEnvironmentVariable(char const *name) {
|
|
127
|
-
// Max size for environment variables according to docs.
|
|
128
|
-
wchar_t buffer[32768];
|
|
129
|
-
buffer[0] = 0;
|
|
130
|
-
|
|
131
|
-
wchar_t name_wide[40];
|
|
132
|
-
name_wide[0] = 0;
|
|
133
|
-
appendStringSafeW(name_wide, name, sizeof(name_wide) / sizeof(wchar_t));
|
|
134
|
-
|
|
135
|
-
// Size must be in bytes apparently, not in characters. Cannot be larger anyway.
|
|
136
|
-
DWORD res = GetEnvironmentVariableW(name_wide, buffer, 65536);
|
|
137
|
-
|
|
138
|
-
if (res == 0 || res > sizeof(buffer)) {
|
|
139
|
-
return NULL;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return wcsdup(buffer);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
static void setEnvironmentVariable(char const *name, environment_char_t const *value) {
|
|
146
|
-
assert(name != NULL);
|
|
147
|
-
assert(value != NULL);
|
|
148
|
-
|
|
149
|
-
wchar_t name_wide[40];
|
|
150
|
-
name_wide[0] = 0;
|
|
151
|
-
appendStringSafeW(name_wide, name, sizeof(name_wide) / sizeof(wchar_t));
|
|
152
|
-
|
|
153
|
-
DWORD res = SetEnvironmentVariableW(name_wide, value);
|
|
154
|
-
assert(wcscmp(getEnvironmentVariable(name), value) == 0);
|
|
155
|
-
|
|
156
|
-
assert(res != 0);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
static void unsetEnvironmentVariable(char const *name) {
|
|
160
|
-
wchar_t name_wide[40];
|
|
161
|
-
name_wide[0] = 0;
|
|
162
|
-
appendStringSafeW(name_wide, name, sizeof(name_wide) / sizeof(wchar_t));
|
|
163
|
-
|
|
164
|
-
DWORD res = SetEnvironmentVariableW(name_wide, NULL);
|
|
165
|
-
|
|
166
|
-
assert(res != 0);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
#define makeEnvironmentLiteral(x) L##x
|
|
170
|
-
|
|
171
|
-
#else
|
|
172
|
-
#define environment_char_t char
|
|
173
|
-
|
|
174
|
-
#define makeEnvironmentLiteral(x) x
|
|
175
|
-
|
|
176
|
-
static environment_char_t const *getEnvironmentVariable(char const *name) { return getenv(name); }
|
|
177
|
-
|
|
178
|
-
static void setEnvironmentVariable(char const *name, environment_char_t const *value) { setenv(name, value, 1); }
|
|
179
|
-
|
|
180
|
-
static void unsetEnvironmentVariable(char const *name) { unsetenv(name); }
|
|
181
|
-
|
|
182
|
-
#endif
|
|
183
|
-
|
|
184
|
-
static void undoEnvironmentVariable(PyThreadState *tstate, char const *variable_name,
|
|
185
|
-
environment_char_t const *old_value) {
|
|
186
|
-
PyObject *os_module = IMPORT_HARD_OS();
|
|
187
|
-
CHECK_OBJECT(os_module);
|
|
188
|
-
|
|
189
|
-
PyObject *os_environ = PyObject_GetAttrString(os_module, "environ");
|
|
190
|
-
CHECK_OBJECT(os_environ);
|
|
191
|
-
|
|
192
|
-
PyObject *variable_name_str = Nuitka_String_FromString(variable_name);
|
|
193
|
-
CHECK_OBJECT(variable_name_str);
|
|
194
|
-
|
|
195
|
-
if (old_value) {
|
|
196
|
-
setEnvironmentVariable(variable_name, old_value);
|
|
197
|
-
|
|
198
|
-
#ifdef _WIN32
|
|
199
|
-
PyObject *env_value = NuitkaUnicode_FromWideChar(old_value, -1);
|
|
200
|
-
#else
|
|
201
|
-
PyObject *env_value = Nuitka_String_FromString(old_value);
|
|
202
|
-
#endif
|
|
203
|
-
CHECK_OBJECT(env_value);
|
|
204
|
-
|
|
205
|
-
int res = PyObject_SetItem(os_environ, variable_name_str, env_value);
|
|
206
|
-
|
|
207
|
-
if (unlikely(res != 0)) {
|
|
208
|
-
PyErr_PrintEx(1);
|
|
209
|
-
Py_Exit(1);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
Py_DECREF(env_value);
|
|
213
|
-
} else {
|
|
214
|
-
unsetEnvironmentVariable(variable_name);
|
|
215
|
-
|
|
216
|
-
int res = PyObject_DelItem(os_environ, variable_name_str);
|
|
217
|
-
|
|
218
|
-
if (unlikely(res != 0)) {
|
|
219
|
-
CLEAR_ERROR_OCCURRED(tstate);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
Py_DECREF(variable_name_str);
|
|
224
|
-
Py_DECREF(os_environ);
|
|
225
|
-
}
|
|
226
|
-
#endif
|
|
109
|
+
#include "nuitka/environment_variables.h"
|
|
227
110
|
|
|
228
111
|
#ifdef _NUITKA_STANDALONE
|
|
229
112
|
|
|
@@ -313,7 +196,7 @@ extern void _initCompiledFrameType();
|
|
|
313
196
|
static wchar_t **convertCommandLineParameters(int argc, char **argv) {
|
|
314
197
|
// Originally taken from CPython3: There seems to be no sane way to use
|
|
315
198
|
static wchar_t **argv_copy;
|
|
316
|
-
argv_copy = (wchar_t **)
|
|
199
|
+
argv_copy = (wchar_t **)malloc(sizeof(wchar_t *) * argc);
|
|
317
200
|
|
|
318
201
|
// Temporarily disable locale for conversions to not use it.
|
|
319
202
|
char *old_locale = strdup(setlocale(LC_ALL, NULL));
|
|
@@ -344,6 +227,11 @@ static void PRINT_REFCOUNTS(void) {
|
|
|
344
227
|
|
|
345
228
|
PRINT_STRING("REFERENCE counts at program end:\n");
|
|
346
229
|
PRINT_STRING("active | allocated | released\n");
|
|
230
|
+
PRINT_FORMAT("Compiled Functions: %d | %d | %d (module/class ownership may occur)\n",
|
|
231
|
+
count_active_Nuitka_Function_Type, count_allocated_Nuitka_Function_Type,
|
|
232
|
+
count_released_Nuitka_Function_Type);
|
|
233
|
+
PRINT_FORMAT("Compiled Generators: %d | %d | %d\n", count_active_Nuitka_Generator_Type,
|
|
234
|
+
count_allocated_Nuitka_Generator_Type, count_released_Nuitka_Generator_Type);
|
|
347
235
|
#if PYTHON_VERSION >= 0x350
|
|
348
236
|
PRINT_FORMAT("Compiled Coroutines: %d | %d | %d\n", count_active_Nuitka_Coroutine_Type,
|
|
349
237
|
count_allocated_Nuitka_Coroutine_Type, count_released_Nuitka_Coroutine_Type);
|
|
@@ -366,6 +254,8 @@ static void PRINT_REFCOUNTS(void) {
|
|
|
366
254
|
|
|
367
255
|
PRINT_FORMAT("Compiled Frames: %d | %d | %d (cache usage may occur)\n", count_active_Nuitka_Frame_Type,
|
|
368
256
|
count_allocated_Nuitka_Frame_Type, count_released_Nuitka_Frame_Type);
|
|
257
|
+
PRINT_FORMAT("Compiled Cells: %d | %d | %d (function ownership may occur)\n", count_active_Nuitka_Cell_Type,
|
|
258
|
+
count_allocated_Nuitka_Cell_Type, count_released_Nuitka_Cell_Type);
|
|
369
259
|
PRINT_STRING("CACHED counts at program end:\n");
|
|
370
260
|
PRINT_STRING("active | allocated | released | hits\n");
|
|
371
261
|
PRINT_FORMAT("Cached Frames: %d | %d | %d | %d\n", count_active_frame_cache_instances,
|
|
@@ -374,17 +264,16 @@ static void PRINT_REFCOUNTS(void) {
|
|
|
374
264
|
}
|
|
375
265
|
#endif
|
|
376
266
|
|
|
377
|
-
static int HANDLE_PROGRAM_EXIT(
|
|
267
|
+
static int HANDLE_PROGRAM_EXIT(PyThreadState *tstate) {
|
|
378
268
|
#if _DEBUG_REFCOUNTS
|
|
379
269
|
PRINT_REFCOUNTS();
|
|
380
270
|
#endif
|
|
381
271
|
|
|
382
272
|
int exit_code;
|
|
383
273
|
|
|
384
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
385
|
-
|
|
386
274
|
if (HAS_ERROR_OCCURRED(tstate)) {
|
|
387
|
-
|
|
275
|
+
// TODO: Clarify which versions this applies to still
|
|
276
|
+
#if PYTHON_VERSION >= 0x300 && PYTHON_VERSION < 0x3c0
|
|
388
277
|
/* Remove the frozen importlib traceback part, which would not be compatible. */
|
|
389
278
|
|
|
390
279
|
while (tstate->curexc_traceback) {
|
|
@@ -402,6 +291,7 @@ static int HANDLE_PROGRAM_EXIT(void) {
|
|
|
402
291
|
break;
|
|
403
292
|
}
|
|
404
293
|
#endif
|
|
294
|
+
NUITKA_FINALIZE_PROGRAM(tstate);
|
|
405
295
|
|
|
406
296
|
PyErr_PrintEx(0);
|
|
407
297
|
|
|
@@ -413,13 +303,10 @@ static int HANDLE_PROGRAM_EXIT(void) {
|
|
|
413
303
|
return exit_code;
|
|
414
304
|
}
|
|
415
305
|
|
|
416
|
-
static PyObject *EXECUTE_MAIN_MODULE(char const *module_name) {
|
|
306
|
+
static PyObject *EXECUTE_MAIN_MODULE(PyThreadState *tstate, char const *module_name, bool is_package) {
|
|
417
307
|
NUITKA_INIT_PROGRAM_LATE(module_name);
|
|
418
308
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
#if NUITKA_MAIN_PACKAGE_MODE
|
|
422
|
-
{
|
|
309
|
+
if (is_package) {
|
|
423
310
|
char const *w = module_name;
|
|
424
311
|
|
|
425
312
|
for (;;) {
|
|
@@ -442,25 +329,27 @@ static PyObject *EXECUTE_MAIN_MODULE(char const *module_name) {
|
|
|
442
329
|
}
|
|
443
330
|
}
|
|
444
331
|
}
|
|
445
|
-
#endif
|
|
446
332
|
|
|
447
333
|
return IMPORT_EMBEDDED_MODULE(tstate, module_name);
|
|
448
334
|
}
|
|
449
335
|
|
|
450
|
-
#
|
|
336
|
+
#if _NUITKA_PLUGIN_WINDOWS_SERVICE_ENABLED
|
|
451
337
|
#include "nuitka_windows_service.h"
|
|
452
338
|
|
|
453
339
|
// Callback from Windows Service logic.
|
|
454
|
-
|
|
455
|
-
EXECUTE_MAIN_MODULE(NUITKA_MAIN_MODULE_NAME);
|
|
456
|
-
|
|
340
|
+
void SvcStartPython(void) {
|
|
457
341
|
PyThreadState *tstate = PyThreadState_GET();
|
|
458
342
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
343
|
+
EXECUTE_MAIN_MODULE(tstate, NUITKA_MAIN_MODULE_NAME, NUITKA_MAIN_IS_PACKAGE_BOOL);
|
|
344
|
+
|
|
345
|
+
NUITKA_PRINT_TIMING("SvcStartPython() Python exited.")
|
|
346
|
+
|
|
347
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
348
|
+
|
|
349
|
+
// TODO: Log exception and call ReportSvcStatus
|
|
350
|
+
|
|
351
|
+
NUITKA_PRINT_TIMING("SvcStartPython(): Calling Py_Exit.");
|
|
352
|
+
Py_Exit(exit_code);
|
|
464
353
|
}
|
|
465
354
|
|
|
466
355
|
void SvcStopPython(void) { PyErr_SetInterrupt(); }
|
|
@@ -473,107 +362,117 @@ static bool is_multiprocessing_fork = false;
|
|
|
473
362
|
static int multiprocessing_resource_tracker_arg = -1;
|
|
474
363
|
|
|
475
364
|
// This is a joblib loky fork
|
|
365
|
+
#ifdef _WIN32
|
|
366
|
+
static bool is_joblib_popen_loky_win32 = false;
|
|
367
|
+
static int loky_joblib_pipe_handle_arg = 0;
|
|
368
|
+
static int loky_joblib_parent_pid_arg = 0;
|
|
369
|
+
#else
|
|
476
370
|
static bool is_joblib_popen_loky_posix = false;
|
|
371
|
+
#endif
|
|
477
372
|
// This is a joblib resource tracker if not -1
|
|
478
373
|
static int loky_resource_tracker_arg = -1;
|
|
479
374
|
|
|
480
|
-
// Parse the command line parameters
|
|
481
|
-
//
|
|
375
|
+
// Parse the command line parameters to decide if it's a multiprocessing usage
|
|
376
|
+
// or something else special.
|
|
482
377
|
#if _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
483
|
-
static void setCommandLineParameters(int argc, char **argv
|
|
378
|
+
static void setCommandLineParameters(int argc, char **argv) {
|
|
484
379
|
#else
|
|
485
|
-
static void setCommandLineParameters(int argc, wchar_t **argv
|
|
380
|
+
static void setCommandLineParameters(int argc, wchar_t **argv) {
|
|
486
381
|
#endif
|
|
487
|
-
if (initial) {
|
|
488
382
|
#ifdef _NUITKA_EXPERIMENTAL_DEBUG_SELF_FORKING
|
|
489
383
|
#if _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
}
|
|
495
|
-
printf("'%s'", argv[i]);
|
|
384
|
+
printf("Commandline: ");
|
|
385
|
+
for (int i = 0; i < argc; i++) {
|
|
386
|
+
if (i != 0) {
|
|
387
|
+
printf(" ");
|
|
496
388
|
}
|
|
497
|
-
printf("
|
|
389
|
+
printf("'%s'", argv[i]);
|
|
390
|
+
}
|
|
391
|
+
printf("\n");
|
|
498
392
|
#else
|
|
499
|
-
|
|
393
|
+
wprintf(L"Commandline: '%lS' %d\n", GetCommandLineW(), argc);
|
|
500
394
|
#endif
|
|
501
395
|
#endif
|
|
502
396
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
397
|
+
// We might need to handle special parameters from plugins that are
|
|
398
|
+
// very deeply woven into command line handling. These are right now
|
|
399
|
+
// multiprocessing, which indicates that it's forking via extra
|
|
506
400
|
|
|
507
|
-
|
|
508
|
-
|
|
401
|
+
// command line argument. And Windows Service indicates need to
|
|
402
|
+
// install and exit here too.
|
|
509
403
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
404
|
+
for (int i = 1; i < argc; i++) {
|
|
405
|
+
if ((i + 1 < argc) && (strcmpFilename(argv[i], FILENAME_EMPTY_STR "--multiprocessing-fork")) == 0) {
|
|
406
|
+
is_multiprocessing_fork = true;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
515
409
|
|
|
516
|
-
|
|
517
|
-
(strcmpFilename(argv[i], FILENAME_EMPTY_STR "--multiprocessing-resource-tracker")) == 0) {
|
|
410
|
+
if ((i + 1 < argc) && (strcmpFilename(argv[i], FILENAME_EMPTY_STR "--multiprocessing-resource-tracker")) == 0) {
|
|
518
411
|
#if _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
519
|
-
|
|
412
|
+
multiprocessing_resource_tracker_arg = atoi(argv[i + 1]);
|
|
520
413
|
#else
|
|
521
|
-
|
|
414
|
+
multiprocessing_resource_tracker_arg = _wtoi(argv[i + 1]);
|
|
522
415
|
#endif
|
|
523
|
-
|
|
524
|
-
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
525
418
|
|
|
526
|
-
|
|
527
|
-
#
|
|
528
|
-
|
|
529
|
-
|
|
419
|
+
if (i == 1) {
|
|
420
|
+
#if _NUITKA_PLUGIN_WINDOWS_SERVICE_ENABLED
|
|
421
|
+
if (strcmpFilename(argv[i], FILENAME_EMPTY_STR "install") == 0) {
|
|
422
|
+
NUITKA_PRINT_TRACE("main(): Calling plugin SvcInstall().");
|
|
530
423
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
}
|
|
534
|
-
#endif
|
|
424
|
+
SvcInstall();
|
|
425
|
+
NUITKA_CANNOT_GET_HERE("main(): SvcInstall must not return");
|
|
535
426
|
}
|
|
536
|
-
|
|
537
|
-
if ((i + 1 < argc) && (strcmpFilename(argv[i], FILENAME_EMPTY_STR "-c") == 0)) {
|
|
538
|
-
// The joblib loky resource tracker is launched like this.
|
|
539
|
-
#if _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
540
|
-
int res = sscanf(argv[i + 1],
|
|
541
|
-
"from joblib.externals.loky.backend.resource_tracker import main; main(%i, False)",
|
|
542
|
-
&loky_resource_tracker_arg);
|
|
543
|
-
#else
|
|
544
|
-
int res = swscanf(argv[i + 1],
|
|
545
|
-
L"from joblib.externals.loky.backend.resource_tracker import main; main(%i, False)",
|
|
546
|
-
&loky_resource_tracker_arg);
|
|
547
427
|
#endif
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if ((i + 1 < argc) && (strcmpFilename(argv[i], FILENAME_EMPTY_STR "-c") == 0)) {
|
|
431
|
+
// The joblib loky resource tracker is launched like this.
|
|
432
|
+
if (scanFilename(argv[i + 1],
|
|
433
|
+
FILENAME_EMPTY_STR
|
|
434
|
+
"from joblib.externals.loky.backend.resource_tracker import main; main(%i, False)",
|
|
435
|
+
&loky_resource_tracker_arg)) {
|
|
436
|
+
break;
|
|
551
437
|
}
|
|
552
438
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
break;
|
|
559
|
-
}
|
|
439
|
+
#if defined(_WIN32)
|
|
440
|
+
if (strcmpFilename(argv[i + 1], FILENAME_EMPTY_STR
|
|
441
|
+
"from joblib.externals.loky.backend.popen_loky_win32 import main; main()") == 0) {
|
|
442
|
+
is_joblib_popen_loky_win32 = true;
|
|
443
|
+
break;
|
|
560
444
|
}
|
|
561
445
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
argv[i]);
|
|
569
|
-
exit(2);
|
|
446
|
+
if (scanFilename(argv[i + 1],
|
|
447
|
+
FILENAME_EMPTY_STR "from joblib.externals.loky.backend.popen_loky_win32 import main; "
|
|
448
|
+
"main(pipe_handle=%i, parent_pid=%i)",
|
|
449
|
+
&loky_joblib_pipe_handle_arg, &loky_joblib_parent_pid_arg)) {
|
|
450
|
+
is_joblib_popen_loky_win32 = true;
|
|
451
|
+
break;
|
|
570
452
|
}
|
|
453
|
+
|
|
571
454
|
#endif
|
|
572
455
|
}
|
|
573
456
|
|
|
574
|
-
#
|
|
575
|
-
|
|
576
|
-
|
|
457
|
+
#if !defined(_WIN32)
|
|
458
|
+
if ((i + 1 < argc) && (strcmpFilename(argv[i], FILENAME_EMPTY_STR "-m") == 0)) {
|
|
459
|
+
// The joblib loky posix popen is launching like this.
|
|
460
|
+
if (strcmpFilename(argv[i + 1], FILENAME_EMPTY_STR "joblib.externals.loky.backend.popen_loky_posix") == 0) {
|
|
461
|
+
is_joblib_popen_loky_posix = true;
|
|
462
|
+
break;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
#endif
|
|
466
|
+
|
|
467
|
+
#if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SELF_EXECUTION)
|
|
468
|
+
if ((strcmpFilename(argv[i], FILENAME_EMPTY_STR "-c") == 0) ||
|
|
469
|
+
(strcmpFilename(argv[i], FILENAME_EMPTY_STR "-m") == 0)) {
|
|
470
|
+
fprintf(stderr,
|
|
471
|
+
"Error, the program tried to call itself with '" FILENAME_FORMAT_STR "' argument. Disable with "
|
|
472
|
+
"'--no-deployment-flag=self-execution'.\n",
|
|
473
|
+
argv[i]);
|
|
474
|
+
exit(2);
|
|
475
|
+
}
|
|
577
476
|
#endif
|
|
578
477
|
}
|
|
579
478
|
}
|
|
@@ -910,7 +809,7 @@ static void setInputOutputHandles(PyThreadState *tstate) {
|
|
|
910
809
|
// reason.
|
|
911
810
|
#if NUITKA_STANDARD_HANDLES_EARLY == 1 && PYTHON_VERSION >= 0x370
|
|
912
811
|
#if defined(NUITKA_FORCED_STDOUT_PATH) || defined(NUITKA_FORCED_STDERR_PATH)
|
|
913
|
-
PyObject *args = MAKE_DICT_EMPTY();
|
|
812
|
+
PyObject *args = MAKE_DICT_EMPTY(tstate);
|
|
914
813
|
|
|
915
814
|
DICT_SET_ITEM(args, const_str_plain_encoding, Nuitka_String_FromString("utf-8"));
|
|
916
815
|
DICT_SET_ITEM(args, const_str_plain_line_buffering, Py_True);
|
|
@@ -946,7 +845,7 @@ static void setInputOutputHandles(PyThreadState *tstate) {
|
|
|
946
845
|
#if NUITKA_STANDARD_HANDLES_EARLY == 0
|
|
947
846
|
#if defined(NUITKA_FORCED_STDOUT_PATH)
|
|
948
847
|
{
|
|
949
|
-
#
|
|
848
|
+
#if defined(_WIN32)
|
|
950
849
|
PyObject *filename = getExpandedTemplatePath(L"" NUITKA_FORCED_STDOUT_PATH);
|
|
951
850
|
#else
|
|
952
851
|
PyObject *filename = getExpandedTemplatePath(NUITKA_FORCED_STDOUT_PATH);
|
|
@@ -957,7 +856,7 @@ static void setInputOutputHandles(PyThreadState *tstate) {
|
|
|
957
856
|
Py_Exit(1);
|
|
958
857
|
}
|
|
959
858
|
|
|
960
|
-
setStdoutHandle(stdout_file);
|
|
859
|
+
setStdoutHandle(tstate, stdout_file);
|
|
961
860
|
}
|
|
962
861
|
#endif
|
|
963
862
|
|
|
@@ -974,7 +873,7 @@ static void setInputOutputHandles(PyThreadState *tstate) {
|
|
|
974
873
|
Py_Exit(1);
|
|
975
874
|
}
|
|
976
875
|
|
|
977
|
-
setStderrHandle(stderr_file);
|
|
876
|
+
setStderrHandle(tstate, stderr_file);
|
|
978
877
|
}
|
|
979
878
|
#endif
|
|
980
879
|
#endif
|
|
@@ -1010,27 +909,34 @@ static void setInputOutputHandles(PyThreadState *tstate) {
|
|
|
1010
909
|
}
|
|
1011
910
|
|
|
1012
911
|
#if NUITKA_FORCED_STDOUT_NONE_BOOL
|
|
1013
|
-
setStdoutHandle(Py_None);
|
|
912
|
+
setStdoutHandle(tstate, Py_None);
|
|
1014
913
|
#endif
|
|
1015
914
|
|
|
1016
915
|
#if NUITKA_FORCED_STDERR_NONE_BOOL
|
|
1017
|
-
setStderrHandle(Py_None);
|
|
916
|
+
setStderrHandle(tstate, Py_None);
|
|
1018
917
|
#endif
|
|
1019
918
|
|
|
1020
919
|
Py_XDECREF(encoding);
|
|
1021
920
|
}
|
|
1022
921
|
|
|
1023
922
|
static void Nuitka_Py_Initialize(void) {
|
|
923
|
+
#if PYTHON_VERSION > 0x350 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_ALLOCATORS)
|
|
924
|
+
initNuitkaAllocators();
|
|
925
|
+
#endif
|
|
926
|
+
|
|
1024
927
|
#if PYTHON_VERSION < 0x380 || defined(_NUITKA_EXPERIMENTAL_OLD_PY_INITIALIZE)
|
|
1025
928
|
Py_Initialize();
|
|
1026
929
|
#else
|
|
930
|
+
#if PYTHON_VERSION < 0x3d0
|
|
1027
931
|
PyStatus status = _PyRuntime_Initialize();
|
|
1028
932
|
if (unlikely(status._type != 0)) {
|
|
1029
933
|
Py_ExitStatusException(status);
|
|
1030
934
|
}
|
|
1031
|
-
_PyRuntimeState *runtime = &_PyRuntime;
|
|
1032
|
-
|
|
935
|
+
NUITKA_MAY_BE_UNUSED _PyRuntimeState *runtime = &_PyRuntime;
|
|
1033
936
|
assert(!runtime->initialized);
|
|
937
|
+
#else
|
|
938
|
+
PyStatus status;
|
|
939
|
+
#endif
|
|
1034
940
|
|
|
1035
941
|
PyConfig config;
|
|
1036
942
|
_PyConfig_InitCompatConfig(&config);
|
|
@@ -1059,6 +965,25 @@ static void Nuitka_Py_Initialize(void) {
|
|
|
1059
965
|
config.module_search_paths_set = 1;
|
|
1060
966
|
#endif
|
|
1061
967
|
|
|
968
|
+
// Need to disable frozen modules, Nuitka can handle them better itself.
|
|
969
|
+
#if PYTHON_VERSION >= 0x3b0
|
|
970
|
+
#ifdef _NUITKA_STANDALONE
|
|
971
|
+
config.use_frozen_modules = 0;
|
|
972
|
+
#else
|
|
973
|
+
// Emulate PYTHON_FROZEN_MODULES for accelerated mode, it is only added in 3.13,
|
|
974
|
+
// but we need to control it for controlling things for accelerated binaries
|
|
975
|
+
// too.
|
|
976
|
+
#if PYTHON_VERSION >= 0x3b0 && PYTHON_VERSION <= 0x3d0
|
|
977
|
+
environment_char_t const *frozen_modules_env = getEnvironmentVariable("PYTHON_FROZEN_MODULES");
|
|
978
|
+
|
|
979
|
+
if (frozen_modules_env == NULL ||
|
|
980
|
+
(compareEnvironmentString(frozen_modules_env, makeEnvironmentLiteral("off")) == 0)) {
|
|
981
|
+
config.use_frozen_modules = 0;
|
|
982
|
+
}
|
|
983
|
+
#endif
|
|
984
|
+
#endif
|
|
985
|
+
#endif
|
|
986
|
+
|
|
1062
987
|
config.install_signal_handlers = 1;
|
|
1063
988
|
|
|
1064
989
|
NUITKA_PRINT_TIMING("Nuitka_Py_Initialize(): Calling Py_InitializeFromConfig.");
|
|
@@ -1089,23 +1014,13 @@ static void Nuitka_Py_Initialize(void) {
|
|
|
1089
1014
|
static void changeStandardHandleTarget(int std_handle_id, FILE *std_handle, filename_char_t const *template_path) {
|
|
1090
1015
|
filename_char_t filename_buffer[1024];
|
|
1091
1016
|
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
#ifdef _WIN32
|
|
1095
|
-
bool res = expandTemplatePathW(filename_buffer, template_path, sizeof(filename_buffer) / sizeof(filename_char_t));
|
|
1017
|
+
bool res =
|
|
1018
|
+
expandTemplatePathFilename(filename_buffer, template_path, sizeof(filename_buffer) / sizeof(filename_char_t));
|
|
1096
1019
|
|
|
1097
1020
|
if (res == false) {
|
|
1098
|
-
|
|
1021
|
+
printf("Error, couldn't expand pattern '" FILENAME_FORMAT_STR "'\n", template_path);
|
|
1099
1022
|
abort();
|
|
1100
1023
|
}
|
|
1101
|
-
#else
|
|
1102
|
-
bool res = expandTemplatePath(filename_buffer, template_path, sizeof(filename_buffer) / sizeof(filename_char_t));
|
|
1103
|
-
|
|
1104
|
-
if (res == false) {
|
|
1105
|
-
printf("Error, couldn't expand pattern: '%s'\n", template_path);
|
|
1106
|
-
abort();
|
|
1107
|
-
}
|
|
1108
|
-
#endif
|
|
1109
1024
|
|
|
1110
1025
|
if (GetStdHandle(std_handle_id) == 0) {
|
|
1111
1026
|
FILE *file_handle;
|
|
@@ -1195,6 +1110,28 @@ static void changeStandardHandleTarget(FILE *std_handle, filename_char_t const *
|
|
|
1195
1110
|
#endif
|
|
1196
1111
|
#endif
|
|
1197
1112
|
|
|
1113
|
+
#if defined(_NUITKA_EXPERIMENTAL_SHOW_STARTUP_TIME)
|
|
1114
|
+
static void Nuitka_at_exit(void) { NUITKA_PRINT_TIMING("Nuitka_at_exit(): Called by C exit()"); }
|
|
1115
|
+
#endif
|
|
1116
|
+
|
|
1117
|
+
#if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAILT)
|
|
1118
|
+
#include <signal.h>
|
|
1119
|
+
static void nuitka_segfault_handler(int sig) {
|
|
1120
|
+
puts("Nuitka: A segmentation fault has occurred. This is highly unusual and can");
|
|
1121
|
+
puts("have multiple reasons. Please check https://nuitka.net/info/segfault.html");
|
|
1122
|
+
puts("for solutions.");
|
|
1123
|
+
|
|
1124
|
+
signal(SIGSEGV, SIG_DFL);
|
|
1125
|
+
raise(SIGSEGV);
|
|
1126
|
+
}
|
|
1127
|
+
#endif
|
|
1128
|
+
|
|
1129
|
+
#if _NUITKA_NATIVE_WCHAR_ARGV == 1
|
|
1130
|
+
extern wchar_t const *getBinaryFilenameWideChars(bool resolve_symlinks);
|
|
1131
|
+
#else
|
|
1132
|
+
extern char const *getBinaryFilenameHostEncoded(bool resolve_symlinks);
|
|
1133
|
+
#endif
|
|
1134
|
+
|
|
1198
1135
|
#ifdef _NUITKA_WINMAIN_ENTRY_POINT
|
|
1199
1136
|
int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpCmdLine, int nCmdShow) {
|
|
1200
1137
|
/* MSVC, MINGW64 */
|
|
@@ -1208,7 +1145,27 @@ int main(int argc, char **argv) {
|
|
|
1208
1145
|
#endif
|
|
1209
1146
|
#endif
|
|
1210
1147
|
|
|
1211
|
-
//
|
|
1148
|
+
// Installer a segfault handler that outputs a helpful message.
|
|
1149
|
+
#if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAILT)
|
|
1150
|
+
signal(SIGSEGV, nuitka_segfault_handler);
|
|
1151
|
+
#endif
|
|
1152
|
+
|
|
1153
|
+
#ifdef _NUITKA_EXPERIMENTAL_DUMP_C_TRACEBACKS
|
|
1154
|
+
INIT_C_BACKTRACES();
|
|
1155
|
+
DUMP_C_BACKTRACE();
|
|
1156
|
+
#endif
|
|
1157
|
+
// Trace when the process exits.
|
|
1158
|
+
#if defined(_NUITKA_EXPERIMENTAL_SHOW_STARTUP_TIME)
|
|
1159
|
+
atexit(Nuitka_at_exit);
|
|
1160
|
+
#endif
|
|
1161
|
+
|
|
1162
|
+
// Attach to the parent console respecting redirection only, otherwise we
|
|
1163
|
+
// cannot even output traces.
|
|
1164
|
+
#if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
|
|
1165
|
+
inheritAttachedConsole();
|
|
1166
|
+
#endif
|
|
1167
|
+
|
|
1168
|
+
// Set up stdout/stderr according to user specification.
|
|
1212
1169
|
#if NUITKA_STANDARD_HANDLES_EARLY == 1
|
|
1213
1170
|
#if defined(NUITKA_FORCED_STDOUT_PATH)
|
|
1214
1171
|
#ifdef _WIN32
|
|
@@ -1239,6 +1196,8 @@ int main(int argc, char **argv) {
|
|
|
1239
1196
|
setbuf(stderr, (char *)NULL);
|
|
1240
1197
|
|
|
1241
1198
|
#if PYTHON_VERSION >= 0x300
|
|
1199
|
+
// spell-checker: ignore PYTHONUNBUFFERED
|
|
1200
|
+
|
|
1242
1201
|
environment_char_t const *old_env_unbuffered = getEnvironmentVariable("PYTHONUNBUFFERED");
|
|
1243
1202
|
setEnvironmentVariable("PYTHONUNBUFFERED", makeEnvironmentLiteral("1"));
|
|
1244
1203
|
#endif
|
|
@@ -1248,7 +1207,8 @@ int main(int argc, char **argv) {
|
|
|
1248
1207
|
NUITKA_INIT_PROGRAM_EARLY(argc, argv);
|
|
1249
1208
|
|
|
1250
1209
|
#ifdef __FreeBSD__
|
|
1251
|
-
|
|
1210
|
+
// FP exceptions run in "no stop" mode by default
|
|
1211
|
+
// spell-checker: ignore fpgetmask,fpsetmask
|
|
1252
1212
|
|
|
1253
1213
|
fp_except_t m;
|
|
1254
1214
|
|
|
@@ -1259,11 +1219,10 @@ int main(int argc, char **argv) {
|
|
|
1259
1219
|
#ifdef _NUITKA_STANDALONE
|
|
1260
1220
|
NUITKA_PRINT_TIMING("main(): Prepare standalone environment.");
|
|
1261
1221
|
prepareStandaloneEnvironment();
|
|
1262
|
-
#else
|
|
1263
|
-
|
|
1264
1222
|
#endif
|
|
1265
1223
|
|
|
1266
1224
|
#if _NUITKA_FROZEN > 0
|
|
1225
|
+
NUITKA_PRINT_TIMING("main(): Preparing frozen modules.");
|
|
1267
1226
|
prepareFrozenModules();
|
|
1268
1227
|
#endif
|
|
1269
1228
|
|
|
@@ -1305,6 +1264,7 @@ int main(int argc, char **argv) {
|
|
|
1305
1264
|
#endif
|
|
1306
1265
|
|
|
1307
1266
|
#ifdef NUITKA_PYTHON_STATIC
|
|
1267
|
+
NUITKA_PRINT_TIMING("main(): Preparing static modules.");
|
|
1308
1268
|
Py_InitStaticModules();
|
|
1309
1269
|
#endif
|
|
1310
1270
|
|
|
@@ -1319,23 +1279,34 @@ int main(int argc, char **argv) {
|
|
|
1319
1279
|
|
|
1320
1280
|
/* Initial command line handling only. */
|
|
1321
1281
|
|
|
1282
|
+
// Make sure, we use the absolute program path for argv[0]
|
|
1283
|
+
#if !defined(_NUITKA_ONEFILE_MODE) && _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
1284
|
+
argv[0] = (char *)getBinaryFilenameHostEncoded(false);
|
|
1285
|
+
#endif
|
|
1286
|
+
|
|
1322
1287
|
#if PYTHON_VERSION >= 0x300 && _NUITKA_NATIVE_WCHAR_ARGV == 0
|
|
1323
1288
|
NUITKA_PRINT_TRACE("main(): Calling convertCommandLineParameters.");
|
|
1324
1289
|
orig_argv = convertCommandLineParameters(argc, argv);
|
|
1325
1290
|
#elif PYTHON_VERSION < 0x300 && _NUITKA_NATIVE_WCHAR_ARGV == 1
|
|
1291
|
+
NUITKA_PRINT_TRACE("main(): Calling getCommandLineToArgvA.");
|
|
1326
1292
|
orig_argv = getCommandLineToArgvA(GetCommandLineA());
|
|
1327
1293
|
#else
|
|
1328
1294
|
orig_argv = argv;
|
|
1329
1295
|
#endif
|
|
1330
1296
|
|
|
1297
|
+
// Make sure, we use the absolute program path for argv[0]
|
|
1298
|
+
#if !defined(_NUITKA_ONEFILE_MODE) && _NUITKA_NATIVE_WCHAR_ARGV == 1 && PYTHON_VERSION >= 0x300
|
|
1299
|
+
orig_argv[0] = (wchar_t *)getBinaryFilenameWideChars(false);
|
|
1300
|
+
#endif
|
|
1301
|
+
|
|
1331
1302
|
// Make sure the compiled path of Python is replaced.
|
|
1332
1303
|
Py_SetProgramName(orig_argv[0]);
|
|
1333
1304
|
|
|
1334
1305
|
orig_argc = argc;
|
|
1335
1306
|
|
|
1336
1307
|
// Early command line parsing.
|
|
1337
|
-
NUITKA_PRINT_TRACE("main(): Calling
|
|
1338
|
-
setCommandLineParameters(argc, argv
|
|
1308
|
+
NUITKA_PRINT_TRACE("main(): Calling setCommandLineParameters.");
|
|
1309
|
+
setCommandLineParameters(argc, argv);
|
|
1339
1310
|
|
|
1340
1311
|
/* For Python installations that need the home set, we inject it back here. */
|
|
1341
1312
|
#if defined(PYTHON_HOME_PATH)
|
|
@@ -1397,6 +1368,24 @@ orig_argv = argv;
|
|
|
1397
1368
|
#ifdef _NUITKA_STANDALONE
|
|
1398
1369
|
NUITKA_PRINT_TRACE("main(): Restore standalone environment.");
|
|
1399
1370
|
restoreStandaloneEnvironment();
|
|
1371
|
+
#else
|
|
1372
|
+
{
|
|
1373
|
+
environment_char_t const *python_path_cstr = getEnvironmentVariable("NUITKA_PYTHONPATH");
|
|
1374
|
+
|
|
1375
|
+
if (python_path_cstr != NULL) {
|
|
1376
|
+
PyObject *python_path_str = Nuitka_String_FromFilename(python_path_cstr);
|
|
1377
|
+
#ifdef _WIN32
|
|
1378
|
+
PyObject *python_path_list = PyObject_CallMethod(python_path_str, (char *)"split", (char *)"s", ";");
|
|
1379
|
+
#else
|
|
1380
|
+
PyObject *python_path_list = PyObject_CallMethod(python_path_str, (char *)"split", (char *)"s", ":");
|
|
1381
|
+
#endif
|
|
1382
|
+
Py_DECREF(python_path_str);
|
|
1383
|
+
|
|
1384
|
+
PySys_SetObject("path", python_path_list);
|
|
1385
|
+
|
|
1386
|
+
unsetEnvironmentVariable("NUITKA_PYTHONPATH");
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1400
1389
|
#endif
|
|
1401
1390
|
|
|
1402
1391
|
/* Lie about it, believe it or not, there are "site" files, that check
|
|
@@ -1405,9 +1394,6 @@ orig_argv = argv;
|
|
|
1405
1394
|
Py_NoSiteFlag = SYSFLAG_NO_SITE;
|
|
1406
1395
|
|
|
1407
1396
|
/* Set the command line parameters for run time usage. */
|
|
1408
|
-
NUITKA_PRINT_TRACE("main(): Calling setCommandLineParameters.");
|
|
1409
|
-
setCommandLineParameters(argc, argv, false);
|
|
1410
|
-
|
|
1411
1397
|
PySys_SetArgv(argc, orig_argv);
|
|
1412
1398
|
// Empty "sys.path" again, the above adds program directory to it.
|
|
1413
1399
|
#if SYSFLAG_ISOLATED
|
|
@@ -1477,6 +1463,57 @@ orig_argv = argv;
|
|
|
1477
1463
|
}
|
|
1478
1464
|
#endif
|
|
1479
1465
|
|
|
1466
|
+
#if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
|
|
1467
|
+
if (needs_stdout_attaching) {
|
|
1468
|
+
PyObject *filename = Nuitka_String_FromString("CONOUT$");
|
|
1469
|
+
// This defaults to "utf-8" internally. We may add an argument of use
|
|
1470
|
+
// platform ones in the future.
|
|
1471
|
+
PyObject *encoding = NULL;
|
|
1472
|
+
|
|
1473
|
+
PyObject *stdout_file = BUILTIN_OPEN_SIMPLE(tstate, filename, "w", SYSFLAG_UNBUFFERED != 1, encoding);
|
|
1474
|
+
if (unlikely(stdout_file == NULL)) {
|
|
1475
|
+
PyErr_PrintEx(1);
|
|
1476
|
+
Py_Exit(1);
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
Py_DECREF(filename);
|
|
1480
|
+
|
|
1481
|
+
Nuitka_SysSetObject("stdout", stdout_file);
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
if (needs_stderr_attaching) {
|
|
1485
|
+
PyObject *filename = Nuitka_String_FromString("CONOUT$");
|
|
1486
|
+
// This defaults to "utf-8" internally. We may add an argument of use
|
|
1487
|
+
// platform ones in the future.
|
|
1488
|
+
PyObject *encoding = NULL;
|
|
1489
|
+
|
|
1490
|
+
PyObject *stderr_file = BUILTIN_OPEN_SIMPLE(tstate, filename, "w", SYSFLAG_UNBUFFERED != 1, encoding);
|
|
1491
|
+
if (unlikely(stderr_file == NULL)) {
|
|
1492
|
+
PyErr_PrintEx(1);
|
|
1493
|
+
Py_Exit(1);
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
Py_DECREF(filename);
|
|
1497
|
+
|
|
1498
|
+
Nuitka_SysSetObject("stderr", stderr_file);
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
if (needs_stdin_attaching) {
|
|
1502
|
+
PyObject *filename = Nuitka_String_FromString("CONIN$");
|
|
1503
|
+
// This defaults to "utf-8" internally. We may add an argument of use
|
|
1504
|
+
// platform ones in the future.
|
|
1505
|
+
PyObject *encoding = NULL;
|
|
1506
|
+
|
|
1507
|
+
// CPython core requires stdin to be buffered due to methods usage, and it won't matter
|
|
1508
|
+
// here much.
|
|
1509
|
+
PyObject *stdin_file = BUILTIN_OPEN_SIMPLE(tstate, filename, "r", true, encoding);
|
|
1510
|
+
|
|
1511
|
+
Py_DECREF(filename);
|
|
1512
|
+
|
|
1513
|
+
Nuitka_SysSetObject("stdin", stdin_file);
|
|
1514
|
+
}
|
|
1515
|
+
#endif
|
|
1516
|
+
|
|
1480
1517
|
NUITKA_PRINT_TRACE("main(): Setting Python input/output handles.");
|
|
1481
1518
|
setInputOutputHandles(tstate);
|
|
1482
1519
|
|
|
@@ -1485,8 +1522,10 @@ orig_argv = argv;
|
|
|
1485
1522
|
#if PYTHON_VERSION >= 0x300
|
|
1486
1523
|
// Make sure the importlib fully bootstraps as we couldn't load it with the
|
|
1487
1524
|
// standard loader.
|
|
1488
|
-
|
|
1489
|
-
|
|
1525
|
+
{
|
|
1526
|
+
NUITKA_MAY_BE_UNUSED PyObject *importlib_module = getImportLibBootstrapModule();
|
|
1527
|
+
CHECK_OBJECT(importlib_module);
|
|
1528
|
+
}
|
|
1490
1529
|
#endif
|
|
1491
1530
|
|
|
1492
1531
|
NUITKA_PRINT_TRACE("main(): Calling setEarlyFrozenModulesFileAttribute().");
|
|
@@ -1503,12 +1542,14 @@ orig_argv = argv;
|
|
|
1503
1542
|
/* Enable meta path based loader. */
|
|
1504
1543
|
setupMetaPathBasedLoader(tstate);
|
|
1505
1544
|
|
|
1545
|
+
#if PYTHON_VERSION < 0x3d0
|
|
1506
1546
|
/* Initialize warnings module. */
|
|
1507
1547
|
_PyWarnings_Init();
|
|
1548
|
+
#endif
|
|
1508
1549
|
|
|
1509
1550
|
#if NO_PYTHON_WARNINGS && PYTHON_VERSION >= 0x342 && PYTHON_VERSION < 0x3a0 && defined(_NUITKA_FULL_COMPAT)
|
|
1510
1551
|
// For full compatibility bump the warnings registry version,
|
|
1511
|
-
// otherwise modules "
|
|
1552
|
+
// otherwise modules "__warningregistry__" will mismatch.
|
|
1512
1553
|
PyObject *warnings_module = PyImport_ImportModule("warnings");
|
|
1513
1554
|
PyObject *meth = PyObject_GetAttrString(warnings_module, "_filters_mutated");
|
|
1514
1555
|
|
|
@@ -1558,16 +1599,52 @@ orig_argv = argv;
|
|
|
1558
1599
|
#ifdef _NUITKA_PLUGIN_MULTIPROCESSING_ENABLED
|
|
1559
1600
|
if (unlikely(is_multiprocessing_fork)) {
|
|
1560
1601
|
NUITKA_PRINT_TRACE("main(): Calling __parents_main__.");
|
|
1561
|
-
EXECUTE_MAIN_MODULE("__parents_main__");
|
|
1602
|
+
EXECUTE_MAIN_MODULE(tstate, "__parents_main__", false);
|
|
1562
1603
|
|
|
1563
|
-
int exit_code = HANDLE_PROGRAM_EXIT();
|
|
1604
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1564
1605
|
|
|
1565
1606
|
NUITKA_PRINT_TRACE("main(): Calling __parents_main__ Py_Exit.");
|
|
1566
1607
|
Py_Exit(exit_code);
|
|
1608
|
+
#if defined(_WIN32)
|
|
1609
|
+
} else if (unlikely(is_joblib_popen_loky_win32)) {
|
|
1610
|
+
NUITKA_PRINT_TRACE("main(): Calling joblib.externals.loky.backend.popen_loky_win32.");
|
|
1611
|
+
PyObject *joblib_popen_loky_win32_module =
|
|
1612
|
+
EXECUTE_MAIN_MODULE(tstate, "joblib.externals.loky.backend.popen_loky_win32", true);
|
|
1613
|
+
|
|
1614
|
+
// Remove the "-c" and options part like CPython would do as well.
|
|
1615
|
+
PyObject *argv_list = Nuitka_SysGetObject("argv");
|
|
1616
|
+
Py_ssize_t size = PyList_Size(argv_list);
|
|
1617
|
+
|
|
1618
|
+
// Negative indexes are not supported by this function.
|
|
1619
|
+
int res = PyList_SetSlice(argv_list, 1, size - 2, const_tuple_empty);
|
|
1620
|
+
assert(res == 0);
|
|
1621
|
+
|
|
1622
|
+
PyObject *main_function = PyObject_GetAttrString(joblib_popen_loky_win32_module, "main");
|
|
1623
|
+
CHECK_OBJECT(main_function);
|
|
1624
|
+
|
|
1625
|
+
if (loky_joblib_pipe_handle_arg == 0) {
|
|
1626
|
+
CALL_FUNCTION_NO_ARGS(tstate, main_function);
|
|
1627
|
+
} else {
|
|
1628
|
+
char const *kw_keys[] = {"pipe_handle", "parent_pid"};
|
|
1629
|
+
PyObject *kw_values[] = {
|
|
1630
|
+
PyLong_FromLong(loky_joblib_pipe_handle_arg),
|
|
1631
|
+
PyLong_FromLong(loky_joblib_parent_pid_arg),
|
|
1632
|
+
};
|
|
1633
|
+
|
|
1634
|
+
PyObject *kw_args = MAKE_DICT_X_CSTR(kw_keys, kw_values, sizeof(kw_values) / sizeof(PyObject *));
|
|
1635
|
+
|
|
1636
|
+
CALL_FUNCTION_WITH_KEYARGS(tstate, main_function, kw_args);
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1640
|
+
|
|
1641
|
+
NUITKA_PRINT_TRACE("main(): Calling 'joblib.externals.loky.backend.popen_loky_posix' Py_Exit.");
|
|
1642
|
+
Py_Exit(exit_code);
|
|
1643
|
+
#else
|
|
1567
1644
|
} else if (unlikely(is_joblib_popen_loky_posix)) {
|
|
1568
1645
|
NUITKA_PRINT_TRACE("main(): Calling joblib.externals.loky.backend.popen_loky_posix.");
|
|
1569
1646
|
PyObject *joblib_popen_loky_posix_module =
|
|
1570
|
-
EXECUTE_MAIN_MODULE("joblib.externals.loky.backend.popen_loky_posix");
|
|
1647
|
+
EXECUTE_MAIN_MODULE(tstate, "joblib.externals.loky.backend.popen_loky_posix", true);
|
|
1571
1648
|
|
|
1572
1649
|
// Remove the "-m" like CPython would do as well.
|
|
1573
1650
|
int res = PyList_SetSlice(Nuitka_SysGetObject("argv"), 0, 2, const_tuple_empty);
|
|
@@ -1578,35 +1655,38 @@ orig_argv = argv;
|
|
|
1578
1655
|
|
|
1579
1656
|
CALL_FUNCTION_NO_ARGS(tstate, main_function);
|
|
1580
1657
|
|
|
1581
|
-
int exit_code = HANDLE_PROGRAM_EXIT();
|
|
1658
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1582
1659
|
|
|
1583
|
-
NUITKA_PRINT_TRACE("main(): Calling joblib.externals.loky.backend.popen_loky_posix Py_Exit.");
|
|
1660
|
+
NUITKA_PRINT_TRACE("main(): Calling 'joblib.externals.loky.backend.popen_loky_posix' Py_Exit.");
|
|
1584
1661
|
Py_Exit(exit_code);
|
|
1662
|
+
#endif
|
|
1585
1663
|
} else if (unlikely(multiprocessing_resource_tracker_arg != -1)) {
|
|
1586
1664
|
NUITKA_PRINT_TRACE("main(): Launching as 'multiprocessing.resource_tracker'.");
|
|
1587
|
-
PyObject *resource_tracker_module = EXECUTE_MAIN_MODULE("multiprocessing.resource_tracker");
|
|
1665
|
+
PyObject *resource_tracker_module = EXECUTE_MAIN_MODULE(tstate, "multiprocessing.resource_tracker", true);
|
|
1588
1666
|
|
|
1589
1667
|
PyObject *main_function = PyObject_GetAttrString(resource_tracker_module, "main");
|
|
1590
1668
|
CHECK_OBJECT(main_function);
|
|
1591
1669
|
|
|
1592
1670
|
CALL_FUNCTION_WITH_SINGLE_ARG(tstate, main_function, PyInt_FromLong(multiprocessing_resource_tracker_arg));
|
|
1593
1671
|
|
|
1594
|
-
int exit_code = HANDLE_PROGRAM_EXIT();
|
|
1672
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1595
1673
|
|
|
1596
|
-
NUITKA_PRINT_TRACE("main(): Calling resource_tracker Py_Exit.");
|
|
1674
|
+
NUITKA_PRINT_TRACE("main(): Calling 'multiprocessing.resource_tracker' Py_Exit.");
|
|
1597
1675
|
Py_Exit(exit_code);
|
|
1598
1676
|
} else if (unlikely(loky_resource_tracker_arg != -1)) {
|
|
1599
1677
|
NUITKA_PRINT_TRACE("main(): Launching as 'joblib.externals.loky.backend.resource_tracker'.");
|
|
1600
|
-
PyObject *resource_tracker_module =
|
|
1678
|
+
PyObject *resource_tracker_module =
|
|
1679
|
+
EXECUTE_MAIN_MODULE(tstate, "joblib.externals.loky.backend.resource_tracker", true);
|
|
1680
|
+
CHECK_OBJECT(resource_tracker_module);
|
|
1601
1681
|
|
|
1602
1682
|
PyObject *main_function = PyObject_GetAttrString(resource_tracker_module, "main");
|
|
1603
1683
|
CHECK_OBJECT(main_function);
|
|
1604
1684
|
|
|
1605
1685
|
CALL_FUNCTION_WITH_SINGLE_ARG(tstate, main_function, PyInt_FromLong(loky_resource_tracker_arg));
|
|
1606
1686
|
|
|
1607
|
-
int exit_code = HANDLE_PROGRAM_EXIT();
|
|
1687
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1608
1688
|
|
|
1609
|
-
NUITKA_PRINT_TRACE("main(): Calling resource_tracker Py_Exit.");
|
|
1689
|
+
NUITKA_PRINT_TRACE("main(): Calling 'joblib.externals.loky.backend.resource_tracker' Py_Exit.");
|
|
1610
1690
|
Py_Exit(exit_code);
|
|
1611
1691
|
} else {
|
|
1612
1692
|
#endif
|
|
@@ -1623,6 +1703,7 @@ orig_argv = argv;
|
|
|
1623
1703
|
}
|
|
1624
1704
|
#endif
|
|
1625
1705
|
PyDict_DelItemString(Nuitka_GetSysModules(), NUITKA_MAIN_MODULE_NAME);
|
|
1706
|
+
DROP_ERROR_OCCURRED(tstate);
|
|
1626
1707
|
|
|
1627
1708
|
#if _NUITKA_PLUGIN_WINDOWS_SERVICE_ENABLED
|
|
1628
1709
|
NUITKA_PRINT_TRACE("main(): Calling plugin SvcLaunchService() entry point.");
|
|
@@ -1630,7 +1711,7 @@ orig_argv = argv;
|
|
|
1630
1711
|
#else
|
|
1631
1712
|
/* Execute the "__main__" module. */
|
|
1632
1713
|
NUITKA_PRINT_TIMING("main(): Calling " NUITKA_MAIN_MODULE_NAME ".");
|
|
1633
|
-
EXECUTE_MAIN_MODULE(NUITKA_MAIN_MODULE_NAME);
|
|
1714
|
+
EXECUTE_MAIN_MODULE(tstate, NUITKA_MAIN_MODULE_NAME, NUITKA_MAIN_IS_PACKAGE_BOOL);
|
|
1634
1715
|
NUITKA_PRINT_TIMING("main(): Exited from " NUITKA_MAIN_MODULE_NAME ".");
|
|
1635
1716
|
|
|
1636
1717
|
#endif
|
|
@@ -1651,13 +1732,13 @@ orig_argv = argv;
|
|
|
1651
1732
|
checkGlobalConstants();
|
|
1652
1733
|
|
|
1653
1734
|
/* TODO: Walk over all loaded compiled modules, and make this kind of checks. */
|
|
1654
|
-
#if !
|
|
1735
|
+
#if !NUITKA_MAIN_IS_PACKAGE_BOOL
|
|
1655
1736
|
checkModuleConstants___main__(tstate);
|
|
1656
1737
|
#endif
|
|
1657
1738
|
|
|
1658
1739
|
#endif
|
|
1659
1740
|
|
|
1660
|
-
int exit_code = HANDLE_PROGRAM_EXIT();
|
|
1741
|
+
int exit_code = HANDLE_PROGRAM_EXIT(tstate);
|
|
1661
1742
|
|
|
1662
1743
|
NUITKA_PRINT_TIMING("main(): Calling Py_Exit.");
|
|
1663
1744
|
Py_Exit(exit_code);
|
|
@@ -1710,3 +1791,18 @@ int Py_Main(int argc, char **argv) { return 0; }
|
|
|
1710
1791
|
}
|
|
1711
1792
|
#endif
|
|
1712
1793
|
#endif
|
|
1794
|
+
|
|
1795
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1796
|
+
// integrates with CPython, but also works on its own.
|
|
1797
|
+
//
|
|
1798
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1799
|
+
// you may not use this file except in compliance with the License.
|
|
1800
|
+
// You may obtain a copy of the License at
|
|
1801
|
+
//
|
|
1802
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1803
|
+
//
|
|
1804
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1805
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1806
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1807
|
+
// See the License for the specific language governing permissions and
|
|
1808
|
+
// limitations under the License.
|