Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -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
|
""" Main module code templates
|
|
19
5
|
|
|
20
6
|
This for the main program in case of executables, the module templates and
|
|
@@ -23,7 +9,7 @@ stuff related to importing, and of course the generated code license.
|
|
|
23
9
|
"""
|
|
24
10
|
|
|
25
11
|
template_global_copyright = """\
|
|
26
|
-
/* Generated code for Python module '%(
|
|
12
|
+
/* Generated code for Python module '%(module_identifier)s'
|
|
27
13
|
* created by Nuitka version %(version)s
|
|
28
14
|
*
|
|
29
15
|
* This code is in part copyright %(year)s Kay Hayen.
|
|
@@ -73,7 +59,7 @@ static bool constants_created = false;
|
|
|
73
59
|
/* Function to create module private constants. */
|
|
74
60
|
static void createModuleConstants(PyThreadState *tstate) {
|
|
75
61
|
if (constants_created == false) {
|
|
76
|
-
loadConstantsBlob(tstate, &mod_consts[0],
|
|
62
|
+
loadConstantsBlob(tstate, &mod_consts[0], UN_TRANSLATE(%(module_const_blob_name)s));
|
|
77
63
|
constants_created = true;
|
|
78
64
|
|
|
79
65
|
#ifndef __NUITKA_NO_ASSERT__
|
|
@@ -104,6 +90,36 @@ void checkModuleConstants_%(module_identifier)s(PyThreadState *tstate) {
|
|
|
104
90
|
}
|
|
105
91
|
#endif
|
|
106
92
|
|
|
93
|
+
// Helper to preserving module variables for Python3.11+
|
|
94
|
+
#if %(module_variable_accessors_count)d
|
|
95
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
96
|
+
NUITKA_MAY_BE_UNUSED static uint32_t _Nuitka_PyDictKeys_GetVersionForCurrentState(PyInterpreterState *interp, PyDictKeysObject *dk)
|
|
97
|
+
{
|
|
98
|
+
if (dk->dk_version != 0) {
|
|
99
|
+
return dk->dk_version;
|
|
100
|
+
}
|
|
101
|
+
uint32_t result = interp->dict_state.next_keys_version++;
|
|
102
|
+
dk->dk_version = result;
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
#elif PYTHON_VERSION >= 0x3b0
|
|
106
|
+
static uint32_t _Nuitka_next_dict_keys_version = 2;
|
|
107
|
+
|
|
108
|
+
NUITKA_MAY_BE_UNUSED static uint32_t _Nuitka_PyDictKeys_GetVersionForCurrentState(PyDictKeysObject *dk)
|
|
109
|
+
{
|
|
110
|
+
if (dk->dk_version != 0) {
|
|
111
|
+
return dk->dk_version;
|
|
112
|
+
}
|
|
113
|
+
uint32_t result = _Nuitka_next_dict_keys_version++;
|
|
114
|
+
dk->dk_version = result;
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
#endif
|
|
118
|
+
#endif
|
|
119
|
+
|
|
120
|
+
// Accessors to module variables.
|
|
121
|
+
%(module_variable_accessors)s
|
|
122
|
+
|
|
107
123
|
// The module code objects.
|
|
108
124
|
%(module_code_objects_decl)s
|
|
109
125
|
|
|
@@ -130,66 +146,85 @@ extern PyTypeObject Nuitka_Loader_Type;
|
|
|
130
146
|
// in another process, useful for multiprocessing extensions like dill
|
|
131
147
|
extern void registerDillPluginTables(PyThreadState *tstate, char const *module_name, PyMethodDef *reduce_compiled_function, PyMethodDef *create_compiled_function);
|
|
132
148
|
|
|
133
|
-
function_impl_code
|
|
149
|
+
static function_impl_code const function_table_%(module_identifier)s[] = {
|
|
134
150
|
%(module_function_table_entries)s
|
|
135
151
|
NULL
|
|
136
152
|
};
|
|
137
153
|
|
|
138
|
-
static char const *_reduce_compiled_function_argnames[] = {
|
|
139
|
-
"func",
|
|
140
|
-
NULL
|
|
141
|
-
};
|
|
142
|
-
|
|
143
154
|
static PyObject *_reduce_compiled_function(PyObject *self, PyObject *args, PyObject *kwds) {
|
|
144
155
|
PyObject *func;
|
|
145
156
|
|
|
146
|
-
if (!
|
|
157
|
+
if (!PyArg_ParseTuple(args, "O:reduce_compiled_function", &func, NULL)) {
|
|
147
158
|
return NULL;
|
|
148
159
|
}
|
|
149
160
|
|
|
150
|
-
|
|
151
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
161
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
152
162
|
|
|
153
|
-
|
|
163
|
+
if (Nuitka_Function_Check(func) == false) {
|
|
164
|
+
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "not a compiled function");
|
|
154
165
|
return NULL;
|
|
155
166
|
}
|
|
156
167
|
|
|
157
168
|
struct Nuitka_FunctionObject *function = (struct Nuitka_FunctionObject *)func;
|
|
158
169
|
|
|
159
|
-
|
|
160
|
-
int offset = 0;
|
|
161
|
-
|
|
162
|
-
while (*current != NULL) {
|
|
163
|
-
if (*current == function->m_c_code) {
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
current += 1;
|
|
168
|
-
offset += 1;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
if (*current == NULL) {
|
|
172
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
170
|
+
int offset = Nuitka_Function_GetFunctionCodeIndex(function, function_table_%(module_identifier)s);
|
|
173
171
|
|
|
172
|
+
if (unlikely(offset == -1)) {
|
|
173
|
+
#if 0
|
|
174
|
+
PRINT_STRING("Looking for:");
|
|
175
|
+
PRINT_ITEM(func);
|
|
176
|
+
PRINT_NEW_LINE();
|
|
177
|
+
#endif
|
|
174
178
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "Cannot find compiled function in module.");
|
|
175
179
|
return NULL;
|
|
176
180
|
}
|
|
177
181
|
|
|
178
|
-
PyObject *code_object_desc =
|
|
179
|
-
PyTuple_SET_ITEM0(code_object_desc, 0, function->m_code_object->co_filename);
|
|
180
|
-
PyTuple_SET_ITEM0(code_object_desc, 1, function->m_code_object->co_name);
|
|
181
|
-
PyTuple_SET_ITEM(code_object_desc, 2, PyLong_FromLong(function->m_code_object->co_firstlineno));
|
|
182
|
-
PyTuple_SET_ITEM0(code_object_desc, 3, function->m_code_object->co_varnames);
|
|
183
|
-
PyTuple_SET_ITEM(code_object_desc, 4, PyLong_FromLong(function->m_code_object->co_argcount));
|
|
184
|
-
PyTuple_SET_ITEM(code_object_desc, 5, PyLong_FromLong(function->m_code_object->co_flags));
|
|
185
|
-
|
|
186
|
-
CHECK_OBJECT_DEEP(code_object_desc);
|
|
182
|
+
PyObject *code_object_desc = Nuitka_Function_ExtractCodeObjectDescription(tstate, function);
|
|
187
183
|
|
|
188
|
-
PyObject *result = MAKE_TUPLE_EMPTY(
|
|
189
|
-
PyTuple_SET_ITEM(result, 0,
|
|
184
|
+
PyObject *result = MAKE_TUPLE_EMPTY(tstate, 8);
|
|
185
|
+
PyTuple_SET_ITEM(result, 0, Nuitka_PyLong_FromLong(offset));
|
|
190
186
|
PyTuple_SET_ITEM(result, 1, code_object_desc);
|
|
191
187
|
PyTuple_SET_ITEM0(result, 2, function->m_defaults);
|
|
192
|
-
|
|
188
|
+
#if PYTHON_VERSION >= 0x300
|
|
189
|
+
PyTuple_SET_ITEM0(result, 3, function->m_kwdefaults ? function->m_kwdefaults : Py_None);
|
|
190
|
+
#else
|
|
191
|
+
PyTuple_SET_ITEM_IMMORTAL(result, 3, Py_None);
|
|
192
|
+
#endif
|
|
193
|
+
PyTuple_SET_ITEM0(result, 4, function->m_doc != NULL ? function->m_doc : Py_None);
|
|
194
|
+
|
|
195
|
+
if (offset == -5) {
|
|
196
|
+
CHECK_OBJECT(function->m_constant_return_value);
|
|
197
|
+
PyTuple_SET_ITEM_IMMORTAL(result, 5, function->m_constant_return_value);
|
|
198
|
+
} else {
|
|
199
|
+
PyTuple_SET_ITEM_IMMORTAL(result, 5, Py_None);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
#if PYTHON_VERSION >= 0x300
|
|
203
|
+
PyTuple_SET_ITEM0(result, 6, function->m_qualname);
|
|
204
|
+
#else
|
|
205
|
+
PyTuple_SET_ITEM_IMMORTAL(result, 6, Py_None);
|
|
206
|
+
#endif
|
|
207
|
+
|
|
208
|
+
PyObject *closure = PyObject_GetAttr(
|
|
209
|
+
(PyObject *)function,
|
|
210
|
+
const_str_plain___closure__
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
if (closure != Py_None) {
|
|
214
|
+
for (Py_ssize_t i=0; i < PyTuple_GET_SIZE(closure); i++) {
|
|
215
|
+
struct Nuitka_CellObject *cell = (struct Nuitka_CellObject *)PyTuple_GET_ITEM(closure, i);
|
|
216
|
+
|
|
217
|
+
assert(Nuitka_Cell_Check((PyObject *)cell));
|
|
218
|
+
|
|
219
|
+
PyTuple_SET_ITEM0(
|
|
220
|
+
closure,
|
|
221
|
+
i,
|
|
222
|
+
cell->ob_ref
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
PyTuple_SET_ITEM(result, 7, closure);
|
|
193
228
|
|
|
194
229
|
CHECK_OBJECT_DEEP(result);
|
|
195
230
|
|
|
@@ -197,105 +232,70 @@ static PyObject *_reduce_compiled_function(PyObject *self, PyObject *args, PyObj
|
|
|
197
232
|
}
|
|
198
233
|
|
|
199
234
|
static PyMethodDef _method_def_reduce_compiled_function = {"reduce_compiled_function", (PyCFunction)_reduce_compiled_function,
|
|
200
|
-
METH_VARARGS
|
|
201
|
-
|
|
202
|
-
static char const *_create_compiled_function_argnames[] = {
|
|
203
|
-
"func",
|
|
204
|
-
"code_object_desc",
|
|
205
|
-
"defaults",
|
|
206
|
-
"doc",
|
|
207
|
-
NULL
|
|
208
|
-
};
|
|
235
|
+
METH_VARARGS, NULL};
|
|
209
236
|
|
|
210
237
|
|
|
211
238
|
static PyObject *_create_compiled_function(PyObject *self, PyObject *args, PyObject *kwds) {
|
|
212
239
|
CHECK_OBJECT_DEEP(args);
|
|
213
240
|
|
|
214
|
-
PyObject *
|
|
241
|
+
PyObject *function_index;
|
|
215
242
|
PyObject *code_object_desc;
|
|
216
243
|
PyObject *defaults;
|
|
244
|
+
PyObject *kw_defaults;
|
|
217
245
|
PyObject *doc;
|
|
246
|
+
PyObject *constant_return_value;
|
|
247
|
+
PyObject *function_qualname;
|
|
248
|
+
PyObject *closure;
|
|
218
249
|
|
|
219
|
-
if (!
|
|
250
|
+
if (!PyArg_ParseTuple(args, "OOOOOOOO:create_compiled_function", &function_index, &code_object_desc, &defaults, &kw_defaults, &doc, &constant_return_value, &function_qualname, &closure, NULL)) {
|
|
220
251
|
return NULL;
|
|
221
252
|
}
|
|
222
253
|
|
|
223
|
-
int offset = PyLong_AsLong(func);
|
|
224
|
-
|
|
225
|
-
if (offset == -1 && HAS_ERROR_OCCURRED(tstate)) {
|
|
226
|
-
return NULL;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (offset > sizeof(functable_%(module_identifier)s) || offset < 0) {
|
|
230
|
-
SET_CURRENT_EXCEPTION_TYPE0_STR_STATE(tstate, PyExc_TypeError, "Wrong offset for compiled function.");
|
|
231
|
-
return NULL;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
PyObject *filename = PyTuple_GET_ITEM(code_object_desc, 0);
|
|
235
|
-
PyObject *function_name = PyTuple_GET_ITEM(code_object_desc, 1);
|
|
236
|
-
PyObject *line = PyTuple_GET_ITEM(code_object_desc, 2);
|
|
237
|
-
int line_int = PyLong_AsLong(line);
|
|
238
|
-
assert(!HAS_ERROR_OCCURRED(tstate));
|
|
239
|
-
|
|
240
|
-
PyObject *argnames = PyTuple_GET_ITEM(code_object_desc, 3);
|
|
241
|
-
PyObject *arg_count = PyTuple_GET_ITEM(code_object_desc, 4);
|
|
242
|
-
int arg_count_int = PyLong_AsLong(arg_count);
|
|
243
|
-
assert(!HAS_ERROR_OCCURRED(tstate));
|
|
244
|
-
PyObject *flags = PyTuple_GET_ITEM(code_object_desc, 5);
|
|
245
|
-
int flags_int = PyLong_AsLong(flags);
|
|
246
|
-
assert(!HAS_ERROR_OCCURRED(tstate));
|
|
247
|
-
|
|
248
|
-
PyCodeObject *code_object = MAKE_CODE_OBJECT(
|
|
249
|
-
filename,
|
|
250
|
-
line_int,
|
|
251
|
-
flags_int,
|
|
252
|
-
function_name,
|
|
253
|
-
function_name, // TODO: function_qualname
|
|
254
|
-
argnames,
|
|
255
|
-
NULL, // freevars
|
|
256
|
-
arg_count_int,
|
|
257
|
-
0, // TODO: Missing kw_only_count
|
|
258
|
-
0 // TODO: Missing pos_only_count
|
|
259
|
-
);
|
|
260
|
-
|
|
261
|
-
struct Nuitka_FunctionObject *result = Nuitka_Function_New(
|
|
262
|
-
functable_%(module_identifier)s[offset],
|
|
263
|
-
code_object->co_name,
|
|
264
|
-
#if PYTHON_VERSION >= 0x300
|
|
265
|
-
NULL, // TODO: Not transferring qualname yet
|
|
266
|
-
#endif
|
|
267
|
-
code_object,
|
|
268
|
-
defaults,
|
|
269
254
|
#if PYTHON_VERSION >= 0x300
|
|
270
|
-
|
|
271
|
-
|
|
255
|
+
if (kw_defaults == Py_None) {
|
|
256
|
+
kw_defaults = NULL;
|
|
257
|
+
}
|
|
272
258
|
#endif
|
|
259
|
+
|
|
260
|
+
return (PyObject *)Nuitka_Function_CreateFunctionViaCodeIndex(
|
|
273
261
|
module_%(module_identifier)s,
|
|
262
|
+
function_qualname,
|
|
263
|
+
function_index,
|
|
264
|
+
code_object_desc,
|
|
265
|
+
constant_return_value,
|
|
266
|
+
defaults,
|
|
267
|
+
kw_defaults,
|
|
274
268
|
doc,
|
|
275
|
-
|
|
276
|
-
|
|
269
|
+
closure,
|
|
270
|
+
function_table_%(module_identifier)s,
|
|
271
|
+
sizeof(function_table_%(module_identifier)s) / sizeof(function_impl_code)
|
|
277
272
|
);
|
|
278
|
-
|
|
279
|
-
return (PyObject *)result;
|
|
280
273
|
}
|
|
281
274
|
|
|
282
275
|
static PyMethodDef _method_def_create_compiled_function = {
|
|
283
276
|
"create_compiled_function",
|
|
284
277
|
(PyCFunction)_create_compiled_function,
|
|
285
|
-
METH_VARARGS
|
|
278
|
+
METH_VARARGS, NULL
|
|
286
279
|
};
|
|
287
280
|
|
|
288
281
|
|
|
289
282
|
#endif
|
|
290
283
|
|
|
284
|
+
// Actual name might be different when loaded as a package.
|
|
285
|
+
#if defined(_NUITKA_MODULE) && %(is_top)d
|
|
286
|
+
static char const *module_full_name = %(module_name_cstr)s;
|
|
287
|
+
#endif
|
|
288
|
+
|
|
291
289
|
// Internal entry point for module code.
|
|
292
290
|
PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *module, struct Nuitka_MetaPathBasedLoaderEntry const *loader_entry) {
|
|
293
291
|
// Report entry to PGO.
|
|
294
|
-
PGO_onModuleEntered("%(
|
|
292
|
+
PGO_onModuleEntered("%(module_identifier)s");
|
|
295
293
|
|
|
296
294
|
// Store the module for future use.
|
|
297
295
|
module_%(module_identifier)s = module;
|
|
298
296
|
|
|
297
|
+
moduledict_%(module_identifier)s = MODULE_DICT(module_%(module_identifier)s);
|
|
298
|
+
|
|
299
299
|
// Modules can be loaded again in case of errors, avoid the init being done again.
|
|
300
300
|
static bool init_done = false;
|
|
301
301
|
|
|
@@ -304,11 +304,23 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
304
304
|
// In case of an extension module loaded into a process, we need to call
|
|
305
305
|
// initialization here because that's the first and potentially only time
|
|
306
306
|
// we are going called.
|
|
307
|
-
|
|
307
|
+
#if PYTHON_VERSION > 0x350 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_ALLOCATORS)
|
|
308
|
+
initNuitkaAllocators();
|
|
309
|
+
#endif
|
|
308
310
|
// Initialize the constant values used.
|
|
309
311
|
_initBuiltinModule();
|
|
310
|
-
createGlobalConstants(tstate);
|
|
311
312
|
|
|
313
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
314
|
+
PyObject *real_module_name = PyObject_GetAttrString(module, "__name__");
|
|
315
|
+
CHECK_OBJECT(real_module_name);
|
|
316
|
+
module_full_name = strdup(Nuitka_String_AsString(real_module_name));
|
|
317
|
+
#endif
|
|
318
|
+
|
|
319
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
320
|
+
createGlobalConstants(tstate, real_module_name);
|
|
321
|
+
#else
|
|
322
|
+
createGlobalConstants(tstate);
|
|
323
|
+
#endif
|
|
312
324
|
/* Initialize the compiled types of Nuitka. */
|
|
313
325
|
_initCompiledCellType();
|
|
314
326
|
_initCompiledGeneratorType();
|
|
@@ -325,9 +337,13 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
325
337
|
|
|
326
338
|
// Enable meta path based loader if not already done.
|
|
327
339
|
#ifdef _NUITKA_TRACE
|
|
328
|
-
PRINT_STRING("%(
|
|
340
|
+
PRINT_STRING("%(module_identifier)s: Calling setupMetaPathBasedLoader().\n");
|
|
329
341
|
#endif
|
|
330
342
|
setupMetaPathBasedLoader(tstate);
|
|
343
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
344
|
+
updateMetaPathBasedLoaderModuleRoot(module_full_name);
|
|
345
|
+
#endif
|
|
346
|
+
|
|
331
347
|
|
|
332
348
|
#if PYTHON_VERSION >= 0x300
|
|
333
349
|
patchInspectModule(tstate);
|
|
@@ -336,7 +352,7 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
336
352
|
#endif
|
|
337
353
|
|
|
338
354
|
/* The constants only used by this module are created now. */
|
|
339
|
-
NUITKA_PRINT_TRACE("%(
|
|
355
|
+
NUITKA_PRINT_TRACE("%(module_identifier)s: Calling createModuleConstants().\n");
|
|
340
356
|
createModuleConstants(tstate);
|
|
341
357
|
|
|
342
358
|
createModuleCodeObjects();
|
|
@@ -344,12 +360,27 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
344
360
|
init_done = true;
|
|
345
361
|
}
|
|
346
362
|
|
|
347
|
-
|
|
363
|
+
#if defined(_NUITKA_MODULE) && %(is_top)d
|
|
364
|
+
PyObject *pre_load = IMPORT_EMBEDDED_MODULE(tstate, %(module_name_cstr)s "-preLoad");
|
|
365
|
+
if (pre_load == NULL) {
|
|
366
|
+
return NULL;
|
|
367
|
+
}
|
|
368
|
+
#endif
|
|
348
369
|
|
|
349
|
-
|
|
370
|
+
// PRINT_STRING("in init%(module_identifier)s\n");
|
|
350
371
|
|
|
351
372
|
#ifdef _NUITKA_PLUGIN_DILL_ENABLED
|
|
352
|
-
|
|
373
|
+
{
|
|
374
|
+
char const *module_name_c;
|
|
375
|
+
if (loader_entry != NULL) {
|
|
376
|
+
module_name_c = loader_entry->name;
|
|
377
|
+
} else {
|
|
378
|
+
PyObject *module_name = GET_STRING_DICT_VALUE(moduledict_%(module_identifier)s, (Nuitka_StringObject *)const_str_plain___name__);
|
|
379
|
+
module_name_c = Nuitka_String_AsString(module_name);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
registerDillPluginTables(tstate, module_name_c, &_method_def_reduce_compiled_function, &_method_def_create_compiled_function);
|
|
383
|
+
}
|
|
353
384
|
#endif
|
|
354
385
|
|
|
355
386
|
// Set "__compiled__" to what version information we have.
|
|
@@ -422,9 +453,9 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
422
453
|
UPDATE_STRING_DICT0(moduledict_%(module_identifier)s, (Nuitka_StringObject *)const_str_plain___builtins__, value);
|
|
423
454
|
}
|
|
424
455
|
|
|
425
|
-
UPDATE_STRING_DICT0(moduledict_%(module_identifier)s, (Nuitka_StringObject *)const_str_plain___loader__, (
|
|
456
|
+
UPDATE_STRING_DICT0(moduledict_%(module_identifier)s, (Nuitka_StringObject *)const_str_plain___loader__, Nuitka_Loader_New(loader_entry));
|
|
426
457
|
|
|
427
|
-
#if PYTHON_VERSION >=
|
|
458
|
+
#if PYTHON_VERSION >= 0x300
|
|
428
459
|
// Set the "__spec__" value
|
|
429
460
|
|
|
430
461
|
#if %(is_dunder_main)s
|
|
@@ -461,11 +492,23 @@ PyObject *modulecode_%(module_identifier)s(PyThreadState *tstate, PyObject *modu
|
|
|
461
492
|
// Temp variables if any
|
|
462
493
|
%(temps_decl)s
|
|
463
494
|
|
|
495
|
+
// Module init code if any
|
|
496
|
+
%(module_init_codes)s
|
|
497
|
+
|
|
464
498
|
// Module code.
|
|
465
|
-
%(
|
|
499
|
+
%(module_codes)s
|
|
466
500
|
|
|
467
501
|
// Report to PGO about leaving the module without error.
|
|
468
|
-
PGO_onModuleExit("%(
|
|
502
|
+
PGO_onModuleExit("%(module_identifier)s", false);
|
|
503
|
+
|
|
504
|
+
#if defined(_NUITKA_MODULE) && %(is_top)d
|
|
505
|
+
{
|
|
506
|
+
PyObject *post_load = IMPORT_EMBEDDED_MODULE(tstate, %(module_name_cstr)s "-postLoad");
|
|
507
|
+
if (post_load == NULL) {
|
|
508
|
+
return NULL;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
#endif
|
|
469
512
|
|
|
470
513
|
Py_INCREF(module_%(module_identifier)s);
|
|
471
514
|
return module_%(module_identifier)s;
|
|
@@ -504,18 +547,10 @@ template_module_external_entry_point = r"""
|
|
|
504
547
|
#define NUITKA_MODULE_INIT_FUNCTION PyMODINIT_FUNC
|
|
505
548
|
#endif
|
|
506
549
|
|
|
507
|
-
|
|
508
|
-
* this is here to hide that.
|
|
509
|
-
*/
|
|
510
|
-
#if PYTHON_VERSION < 0x300
|
|
511
|
-
#define MOD_INIT_DECL(name) NUITKA_MODULE_INIT_FUNCTION init##name(void)
|
|
512
|
-
#else
|
|
513
|
-
#define MOD_INIT_DECL(name) NUITKA_MODULE_INIT_FUNCTION PyInit_##name(void)
|
|
514
|
-
#endif
|
|
550
|
+
static PyObject *orig_dunder_file_value;
|
|
515
551
|
|
|
516
552
|
#if PYTHON_VERSION >= 0x300
|
|
517
553
|
static setattrofunc orig_PyModule_Type_tp_setattro;
|
|
518
|
-
static PyObject *orig_dunder_file_value;
|
|
519
554
|
|
|
520
555
|
/* This is used one time only. */
|
|
521
556
|
static int Nuitka_TopLevelModule_tp_setattro(PyObject *module, PyObject *name, PyObject *value) {
|
|
@@ -530,7 +565,7 @@ static int Nuitka_TopLevelModule_tp_setattro(PyObject *module, PyObject *name, P
|
|
|
530
565
|
}
|
|
531
566
|
|
|
532
567
|
// Prevent "__spec__" update as well.
|
|
533
|
-
#if PYTHON_VERSION >=
|
|
568
|
+
#if PYTHON_VERSION >= 0x300
|
|
534
569
|
if (PyUnicode_Check(name) && PyUnicode_Compare(name, const_str_plain___spec__) == 0) {
|
|
535
570
|
return 0;
|
|
536
571
|
}
|
|
@@ -545,27 +580,88 @@ static struct PyModuleDef mdef_%(module_identifier)s = {
|
|
|
545
580
|
PyModuleDef_HEAD_INIT,
|
|
546
581
|
NULL, /* m_name, filled later */
|
|
547
582
|
NULL, /* m_doc */
|
|
548
|
-
|
|
583
|
+
%(module_def_size)s, /* m_size */
|
|
549
584
|
NULL, /* m_methods */
|
|
550
|
-
NULL, /*
|
|
585
|
+
NULL, /* m_slots */
|
|
551
586
|
NULL, /* m_traverse */
|
|
552
587
|
NULL, /* m_clear */
|
|
553
588
|
NULL, /* m_free */
|
|
554
589
|
};
|
|
555
590
|
#endif
|
|
556
591
|
|
|
592
|
+
#if PYTHON_VERSION < 0x300
|
|
593
|
+
static void onModuleFileValueRelease(void *v) {
|
|
594
|
+
if (orig_dunder_file_value != NULL) {
|
|
595
|
+
UPDATE_STRING_DICT0(
|
|
596
|
+
moduledict_%(module_identifier)s,
|
|
597
|
+
(Nuitka_StringObject *)const_str_plain___file__,
|
|
598
|
+
orig_dunder_file_value
|
|
599
|
+
);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
#endif
|
|
603
|
+
|
|
557
604
|
/* The exported interface to CPython. On import of the module, this function
|
|
558
605
|
* gets called. It has to have an exact function name, in cases it's a shared
|
|
559
|
-
* library export.
|
|
606
|
+
* library export.
|
|
560
607
|
*/
|
|
561
608
|
|
|
562
|
-
// Actual name might be different when loaded as a package.
|
|
563
|
-
static char const *module_full_name = "%(module_name)s";
|
|
564
609
|
|
|
565
|
-
|
|
610
|
+
static PyObject *%(module_dll_entry_point)s_phase2(PyObject *module) {
|
|
611
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
612
|
+
|
|
613
|
+
PyObject *result = modulecode_%(module_identifier)s(tstate, module, NULL);
|
|
614
|
+
|
|
615
|
+
#if PYTHON_VERSION < 0x300
|
|
616
|
+
// Our "__file__" value will not be respected by CPython and one
|
|
617
|
+
// way we can avoid it, is by having a capsule type, that when
|
|
618
|
+
// it gets released, we are called and repair the value.
|
|
619
|
+
|
|
620
|
+
if (HAS_ERROR_OCCURRED(tstate) == false) {
|
|
621
|
+
orig_dunder_file_value = DICT_GET_ITEM_WITH_HASH_ERROR1(tstate, (PyObject *)moduledict_%(module_identifier)s, const_str_plain___file__);
|
|
622
|
+
|
|
623
|
+
PyObject *fake_file_value = PyCObject_FromVoidPtr(NULL, onModuleFileValueRelease);
|
|
624
|
+
|
|
625
|
+
UPDATE_STRING_DICT1(
|
|
626
|
+
moduledict_%(module_identifier)s,
|
|
627
|
+
(Nuitka_StringObject *)const_str_plain___file__,
|
|
628
|
+
fake_file_value
|
|
629
|
+
);
|
|
630
|
+
}
|
|
631
|
+
#else
|
|
632
|
+
if (result != NULL) {
|
|
633
|
+
// Make sure we undo the change of the "__file__" attribute during importing. We do not
|
|
634
|
+
// know how to achieve it for Python2 though. TODO: Find something for Python2 too.
|
|
635
|
+
orig_PyModule_Type_tp_setattro = PyModule_Type.tp_setattro;
|
|
636
|
+
PyModule_Type.tp_setattro = Nuitka_TopLevelModule_tp_setattro;
|
|
637
|
+
|
|
638
|
+
orig_dunder_file_value = DICT_GET_ITEM_WITH_HASH_ERROR1(tstate, (PyObject *)moduledict_%(module_identifier)s, const_str_plain___file__);
|
|
639
|
+
}
|
|
640
|
+
#endif
|
|
641
|
+
|
|
642
|
+
return result;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
#if %(module_def_size)s >= 0
|
|
646
|
+
static int %(module_dll_entry_point)s_slot(PyObject *module) {
|
|
647
|
+
PyObject *result = %(module_dll_entry_point)s_phase2(module);
|
|
648
|
+
|
|
649
|
+
if (result == NULL) {
|
|
650
|
+
return 1;
|
|
651
|
+
} else {
|
|
652
|
+
return 0;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
#endif
|
|
656
|
+
|
|
657
|
+
NUITKA_MODULE_INIT_FUNCTION (%(module_dll_entry_point)s)(void) {
|
|
658
|
+
#if PYTHON_VERSION < 0x3c0
|
|
566
659
|
if (_Py_PackageContext != NULL) {
|
|
567
|
-
module_full_name
|
|
660
|
+
if (strcmp(module_full_name, _Py_PackageContext) != 0) {
|
|
661
|
+
module_full_name = strdup(_Py_PackageContext);
|
|
662
|
+
}
|
|
568
663
|
}
|
|
664
|
+
#endif
|
|
569
665
|
|
|
570
666
|
#if PYTHON_VERSION < 0x300
|
|
571
667
|
PyObject *module = Py_InitModule4(
|
|
@@ -580,34 +676,32 @@ MOD_INIT_DECL(%(module_identifier)s) {
|
|
|
580
676
|
);
|
|
581
677
|
#else
|
|
582
678
|
mdef_%(module_identifier)s.m_name = module_full_name;
|
|
679
|
+
|
|
680
|
+
#if %(module_def_size)s == -1
|
|
583
681
|
PyObject *module = PyModule_Create(&mdef_%(module_identifier)s);
|
|
584
682
|
CHECK_OBJECT(module);
|
|
585
683
|
|
|
586
|
-
|
|
587
|
-
|
|
684
|
+
{
|
|
685
|
+
NUITKA_MAY_BE_UNUSED bool res = Nuitka_SetModuleString(module_full_name, module);
|
|
686
|
+
assert(res != false);
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
#endif
|
|
588
690
|
#endif
|
|
589
691
|
|
|
590
|
-
|
|
692
|
+
#if %(module_def_size)s >= 0
|
|
693
|
+
static PyModuleDef_Slot _module_slots[] = {
|
|
694
|
+
{Py_mod_exec, %(module_dll_entry_point)s_slot},
|
|
695
|
+
{0, NULL}
|
|
696
|
+
};
|
|
591
697
|
|
|
592
|
-
|
|
593
|
-
modulecode_%(module_identifier)s(tstate, module, NULL);
|
|
698
|
+
mdef_%(module_identifier)s.m_slots = _module_slots;
|
|
594
699
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
700
|
+
return PyModuleDef_Init(&mdef_%(module_identifier)s);
|
|
701
|
+
#elif PYTHON_VERSION >= 0x300
|
|
702
|
+
return %(module_dll_entry_point)s_phase2(module);
|
|
598
703
|
#else
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
if (result != NULL) {
|
|
602
|
-
// Make sure we undo the change of the "__file__" attribute during importing. We do not
|
|
603
|
-
// know how to achieve it for Python2 though. TODO: Find something for Python2 too.
|
|
604
|
-
orig_PyModule_Type_tp_setattro = PyModule_Type.tp_setattro;
|
|
605
|
-
PyModule_Type.tp_setattro = Nuitka_TopLevelModule_tp_setattro;
|
|
606
|
-
|
|
607
|
-
orig_dunder_file_value = DICT_GET_ITEM_WITH_HASH_ERROR1(tstate, (PyObject *)moduledict_%(module_identifier)s, const_str_plain___file__);
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
return result;
|
|
704
|
+
%(module_dll_entry_point)s_phase2(module);
|
|
611
705
|
#endif
|
|
612
706
|
}
|
|
613
707
|
"""
|
|
@@ -626,7 +720,7 @@ template_module_exception_exit = """\
|
|
|
626
720
|
#endif
|
|
627
721
|
PGO_onModuleExit("%(module_identifier)s", false);
|
|
628
722
|
|
|
629
|
-
|
|
723
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &exception_state);
|
|
630
724
|
return NULL;
|
|
631
725
|
}"""
|
|
632
726
|
|
|
@@ -654,3 +748,18 @@ template_header_guard = """\
|
|
|
654
748
|
from . import TemplateDebugWrapper # isort:skip
|
|
655
749
|
|
|
656
750
|
TemplateDebugWrapper.checkDebug(globals())
|
|
751
|
+
|
|
752
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
753
|
+
# integrates with CPython, but also works on its own.
|
|
754
|
+
#
|
|
755
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
756
|
+
# you may not use this file except in compliance with the License.
|
|
757
|
+
# You may obtain a copy of the License at
|
|
758
|
+
#
|
|
759
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
760
|
+
#
|
|
761
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
762
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
763
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
764
|
+
# See the License for the specific language governing permissions and
|
|
765
|
+
# limitations under the License.
|