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
|
// Compiled function type.
|
|
19
4
|
|
|
20
5
|
// The backbone of the integration into CPython. Try to behave as well as normal
|
|
@@ -27,14 +12,22 @@
|
|
|
27
12
|
#include "nuitka/freelists.h"
|
|
28
13
|
|
|
29
14
|
// Needed for offsetof
|
|
30
|
-
#include "structmember.h"
|
|
31
15
|
#include <stddef.h>
|
|
16
|
+
#include <structmember.h>
|
|
17
|
+
|
|
18
|
+
// spell-checker: ignore qualname,kwdefaults,getset,weakrefs,vectorcall,nargsf,m_varnames
|
|
32
19
|
|
|
33
|
-
|
|
20
|
+
#if _DEBUG_REFCOUNTS
|
|
21
|
+
int count_active_Nuitka_Function_Type;
|
|
22
|
+
int count_allocated_Nuitka_Function_Type;
|
|
23
|
+
int count_released_Nuitka_Function_Type;
|
|
24
|
+
#endif
|
|
34
25
|
|
|
35
26
|
// tp_descr_get slot, bind a function to an object.
|
|
36
|
-
static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object, PyObject *
|
|
27
|
+
static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object, PyObject *class_object) {
|
|
37
28
|
assert(Nuitka_Function_Check(function));
|
|
29
|
+
CHECK_OBJECT((PyObject *)function);
|
|
30
|
+
assert(_PyObject_GC_IS_TRACKED(function));
|
|
38
31
|
|
|
39
32
|
#if PYTHON_VERSION >= 0x300
|
|
40
33
|
if (object == NULL || object == Py_None) {
|
|
@@ -43,7 +36,7 @@ static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object,
|
|
|
43
36
|
}
|
|
44
37
|
#endif
|
|
45
38
|
|
|
46
|
-
return Nuitka_Method_New((struct Nuitka_FunctionObject *)function, object == Py_None ? NULL : object,
|
|
39
|
+
return Nuitka_Method_New((struct Nuitka_FunctionObject *)function, object == Py_None ? NULL : object, class_object);
|
|
47
40
|
}
|
|
48
41
|
|
|
49
42
|
// tp_repr slot, decide how compiled function shall be output to "repr" built-in
|
|
@@ -52,13 +45,11 @@ static PyObject *Nuitka_Function_tp_repr(struct Nuitka_FunctionObject *function)
|
|
|
52
45
|
assert(Nuitka_Function_Check((PyObject *)function));
|
|
53
46
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
54
47
|
|
|
55
|
-
return Nuitka_String_FromFormat("<compiled_function %s at %p>",
|
|
56
48
|
#if PYTHON_VERSION < 0x300
|
|
57
|
-
|
|
49
|
+
return Nuitka_String_FromFormat("<compiled_function %s at %p>", Nuitka_String_AsString(function->m_name), function);
|
|
58
50
|
#else
|
|
59
|
-
|
|
51
|
+
return Nuitka_String_FromFormat("<compiled_function %U at %p>", function->m_qualname, function);
|
|
60
52
|
#endif
|
|
61
|
-
function);
|
|
62
53
|
}
|
|
63
54
|
|
|
64
55
|
static long Nuitka_Function_tp_traverse(struct Nuitka_FunctionObject *function, visitproc visit, void *arg) {
|
|
@@ -199,7 +190,9 @@ static PyObject *Nuitka_Function_get_dict(struct Nuitka_FunctionObject *function
|
|
|
199
190
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
200
191
|
|
|
201
192
|
if (function->m_dict == NULL) {
|
|
202
|
-
|
|
193
|
+
NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
|
|
194
|
+
|
|
195
|
+
function->m_dict = MAKE_DICT_EMPTY(tstate);
|
|
203
196
|
}
|
|
204
197
|
|
|
205
198
|
CHECK_OBJECT(function->m_dict);
|
|
@@ -295,7 +288,7 @@ static PyObject *Nuitka_Function_get_compiled_constant(struct Nuitka_FunctionObj
|
|
|
295
288
|
}
|
|
296
289
|
CHECK_OBJECT(result);
|
|
297
290
|
|
|
298
|
-
|
|
291
|
+
Py_INCREF_IMMORTAL(result);
|
|
299
292
|
return result;
|
|
300
293
|
}
|
|
301
294
|
|
|
@@ -316,9 +309,10 @@ static PyObject *Nuitka_Function_get_closure(struct Nuitka_FunctionObject *funct
|
|
|
316
309
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
317
310
|
|
|
318
311
|
if (function->m_closure_given > 0) {
|
|
319
|
-
|
|
312
|
+
NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
|
|
313
|
+
return MAKE_TUPLE(tstate, (PyObject *const *)function->m_closure, function->m_closure_given);
|
|
320
314
|
} else {
|
|
321
|
-
|
|
315
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
322
316
|
return Py_None;
|
|
323
317
|
}
|
|
324
318
|
}
|
|
@@ -447,7 +441,9 @@ static PyObject *Nuitka_Function_get_annotations(struct Nuitka_FunctionObject *f
|
|
|
447
441
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
448
442
|
|
|
449
443
|
if (function->m_annotations == NULL) {
|
|
450
|
-
|
|
444
|
+
NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
|
|
445
|
+
|
|
446
|
+
function->m_annotations = MAKE_DICT_EMPTY(tstate);
|
|
451
447
|
}
|
|
452
448
|
CHECK_OBJECT(function->m_annotations);
|
|
453
449
|
|
|
@@ -524,6 +520,35 @@ static PyObject *Nuitka_Function_get_builtins(struct Nuitka_FunctionObject *func
|
|
|
524
520
|
}
|
|
525
521
|
#endif
|
|
526
522
|
|
|
523
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
524
|
+
static int Nuitka_Function_set_type_params(struct Nuitka_FunctionObject *function, PyObject *value) {
|
|
525
|
+
CHECK_OBJECT((PyObject *)function);
|
|
526
|
+
CHECK_OBJECT_X(value);
|
|
527
|
+
assert(Nuitka_Function_Check((PyObject *)function));
|
|
528
|
+
assert(_PyObject_GC_IS_TRACKED(function));
|
|
529
|
+
|
|
530
|
+
if (unlikely(value == NULL || !PyTuple_Check(value))) {
|
|
531
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
532
|
+
|
|
533
|
+
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__type_params__ must be set to a tuple");
|
|
534
|
+
return -1;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
Py_SETREF(function->m_type_params, Py_NewRef(value));
|
|
538
|
+
return 0;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
static PyObject *Nuitka_Function_get_type_params(struct Nuitka_FunctionObject *function) {
|
|
542
|
+
CHECK_OBJECT((PyObject *)function);
|
|
543
|
+
assert(Nuitka_Function_Check((PyObject *)function));
|
|
544
|
+
assert(_PyObject_GC_IS_TRACKED(function));
|
|
545
|
+
|
|
546
|
+
// TODO: Probably not needed anymore?
|
|
547
|
+
Py_INCREF(const_tuple_empty);
|
|
548
|
+
return const_tuple_empty;
|
|
549
|
+
}
|
|
550
|
+
#endif
|
|
551
|
+
|
|
527
552
|
static int Nuitka_Function_set_module(struct Nuitka_FunctionObject *function, PyObject *value) {
|
|
528
553
|
CHECK_OBJECT((PyObject *)function);
|
|
529
554
|
assert(Nuitka_Function_Check((PyObject *)function));
|
|
@@ -531,7 +556,9 @@ static int Nuitka_Function_set_module(struct Nuitka_FunctionObject *function, Py
|
|
|
531
556
|
CHECK_OBJECT_X(value);
|
|
532
557
|
|
|
533
558
|
if (function->m_dict == NULL) {
|
|
534
|
-
|
|
559
|
+
NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
|
|
560
|
+
|
|
561
|
+
function->m_dict = MAKE_DICT_EMPTY(tstate);
|
|
535
562
|
}
|
|
536
563
|
|
|
537
564
|
if (value == NULL) {
|
|
@@ -602,6 +629,9 @@ static PyGetSetDef Nuitka_Function_getset[] = {
|
|
|
602
629
|
#endif
|
|
603
630
|
#if PYTHON_VERSION >= 0x3a0
|
|
604
631
|
{(char *)"__builtins__", (getter)Nuitka_Function_get_builtins, (setter)Nuitka_Function_set_builtins, NULL},
|
|
632
|
+
#endif
|
|
633
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
634
|
+
{(char *)"__type_params__", (getter)Nuitka_Function_get_type_params, (setter)Nuitka_Function_set_type_params, NULL},
|
|
605
635
|
#endif
|
|
606
636
|
{(char *)"__compiled__", (getter)Nuitka_Function_get_compiled, (setter)Nuitka_Function_set_compiled, NULL},
|
|
607
637
|
{(char *)"__compiled_constant__", (getter)Nuitka_Function_get_compiled_constant,
|
|
@@ -630,6 +660,41 @@ static PyObject *Nuitka_Function_clone(struct Nuitka_FunctionObject *function) {
|
|
|
630
660
|
assert(Nuitka_Function_Check((PyObject *)function));
|
|
631
661
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
632
662
|
|
|
663
|
+
for (Py_ssize_t i = 0; i < function->m_closure_given; i++) {
|
|
664
|
+
assert(function->m_closure[i]);
|
|
665
|
+
Py_INCREF(function->m_closure[i]);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
Py_INCREF(function->m_defaults);
|
|
669
|
+
|
|
670
|
+
#if PYTHON_VERSION >= 0x300
|
|
671
|
+
#if 0
|
|
672
|
+
PRINT_STRING("Nuitka_Function_clone:");
|
|
673
|
+
PRINT_ITEM((PyObject *)function);
|
|
674
|
+
PRINT_NEW_LINE();
|
|
675
|
+
#endif
|
|
676
|
+
|
|
677
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
678
|
+
|
|
679
|
+
PyObject *annotations = function->m_annotations;
|
|
680
|
+
if (annotations != NULL) {
|
|
681
|
+
if (DICT_SIZE(annotations) != 0) {
|
|
682
|
+
annotations = DICT_COPY(tstate, annotations);
|
|
683
|
+
} else {
|
|
684
|
+
annotations = NULL;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
PyObject *kwdefaults = function->m_kwdefaults;
|
|
689
|
+
if (kwdefaults != NULL) {
|
|
690
|
+
if (DICT_SIZE(kwdefaults) != 0) {
|
|
691
|
+
kwdefaults = DICT_COPY(tstate, kwdefaults);
|
|
692
|
+
} else {
|
|
693
|
+
kwdefaults = NULL;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
#endif
|
|
697
|
+
|
|
633
698
|
struct Nuitka_FunctionObject *result =
|
|
634
699
|
Nuitka_Function_New(function->m_c_code, function->m_name,
|
|
635
700
|
#if PYTHON_VERSION >= 0x300
|
|
@@ -637,7 +702,7 @@ static PyObject *Nuitka_Function_clone(struct Nuitka_FunctionObject *function) {
|
|
|
637
702
|
#endif
|
|
638
703
|
function->m_code_object, function->m_defaults,
|
|
639
704
|
#if PYTHON_VERSION >= 0x300
|
|
640
|
-
|
|
705
|
+
kwdefaults, annotations,
|
|
641
706
|
#endif
|
|
642
707
|
function->m_module, function->m_doc, function->m_closure, function->m_closure_given);
|
|
643
708
|
|
|
@@ -649,6 +714,11 @@ static struct Nuitka_FunctionObject *free_list_functions = NULL;
|
|
|
649
714
|
static int free_list_functions_count = 0;
|
|
650
715
|
|
|
651
716
|
static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
|
|
717
|
+
#if _DEBUG_REFCOUNTS
|
|
718
|
+
count_active_Nuitka_Function_Type -= 1;
|
|
719
|
+
count_released_Nuitka_Function_Type += 1;
|
|
720
|
+
#endif
|
|
721
|
+
|
|
652
722
|
assert(Nuitka_Function_Check((PyObject *)function));
|
|
653
723
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
654
724
|
|
|
@@ -656,10 +726,9 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
|
|
|
656
726
|
PyThreadState *tstate = PyThreadState_GET();
|
|
657
727
|
|
|
658
728
|
// Save the current exception, if any, we must to not corrupt it.
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
RESTORE_ERROR_OCCURRED(tstate, save_exception_type, save_exception_value, save_exception_tb);
|
|
729
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state1;
|
|
730
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
|
|
731
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
|
|
663
732
|
#endif
|
|
664
733
|
assert(_PyObject_GC_IS_TRACKED(function));
|
|
665
734
|
Nuitka_GC_UnTrack(function);
|
|
@@ -673,6 +742,10 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
|
|
|
673
742
|
Py_DECREF(function->m_qualname);
|
|
674
743
|
#endif
|
|
675
744
|
|
|
745
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
746
|
+
Py_DECREF(function->m_type_params);
|
|
747
|
+
#endif
|
|
748
|
+
|
|
676
749
|
// These may actually resurrect the object, not?
|
|
677
750
|
Py_XDECREF(function->m_dict);
|
|
678
751
|
Py_DECREF(function->m_defaults);
|
|
@@ -696,9 +769,11 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
|
|
|
696
769
|
releaseToFreeList(free_list_functions, function, MAX_FUNCTION_FREE_LIST_COUNT);
|
|
697
770
|
|
|
698
771
|
#ifndef __NUITKA_NO_ASSERT__
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
772
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state2;
|
|
773
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
|
|
774
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
|
|
775
|
+
|
|
776
|
+
ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
|
|
702
777
|
#endif
|
|
703
778
|
}
|
|
704
779
|
|
|
@@ -766,7 +841,7 @@ PyTypeObject Nuitka_Function_Type = {
|
|
|
766
841
|
0, // tp_weaklist
|
|
767
842
|
0, // tp_del
|
|
768
843
|
0 // tp_version_tag
|
|
769
|
-
#if PYTHON_VERSION >=
|
|
844
|
+
#if PYTHON_VERSION >= 0x300
|
|
770
845
|
,
|
|
771
846
|
0 // tp_finalizer
|
|
772
847
|
#endif
|
|
@@ -803,7 +878,7 @@ void _initCompiledFunctionType(void) {
|
|
|
803
878
|
assert(Nuitka_Function_Type.tp_subclasses != PyFunction_Type.tp_subclasses || PyFunction_Type.tp_cache == NULL);
|
|
804
879
|
assert(Nuitka_Function_Type.tp_weaklist != PyFunction_Type.tp_weaklist);
|
|
805
880
|
assert(Nuitka_Function_Type.tp_del != PyFunction_Type.tp_del || PyFunction_Type.tp_del == NULL);
|
|
806
|
-
#if PYTHON_VERSION >=
|
|
881
|
+
#if PYTHON_VERSION >= 0x300
|
|
807
882
|
assert(Nuitka_Function_Type.tp_finalize != PyFunction_Type.tp_finalize || PyFunction_Type.tp_finalize == NULL);
|
|
808
883
|
#endif
|
|
809
884
|
|
|
@@ -909,11 +984,6 @@ void _initCompiledFunctionType(void) {
|
|
|
909
984
|
}
|
|
910
985
|
}
|
|
911
986
|
#endif
|
|
912
|
-
|
|
913
|
-
#ifdef _NUITKA_PLUGIN_DILL_ENABLED
|
|
914
|
-
// TODO: Move this to a __nuitka__ module maybe
|
|
915
|
-
PyObject_SetAttrString((PyObject *)builtin_module, "compiled_function", (PyObject *)&Nuitka_Function_Type);
|
|
916
|
-
#endif
|
|
917
987
|
}
|
|
918
988
|
|
|
919
989
|
// Shared implementations for empty functions. When a function body is empty, but
|
|
@@ -951,7 +1021,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeTrueImpl(PyThreadState *tstate, struct
|
|
|
951
1021
|
|
|
952
1022
|
PyObject *result = Py_True;
|
|
953
1023
|
|
|
954
|
-
|
|
1024
|
+
Py_INCREF_IMMORTAL(result);
|
|
955
1025
|
return result;
|
|
956
1026
|
}
|
|
957
1027
|
|
|
@@ -968,8 +1038,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeFalseImpl(PyThreadState *tstate, struc
|
|
|
968
1038
|
}
|
|
969
1039
|
|
|
970
1040
|
PyObject *result = Py_False;
|
|
971
|
-
|
|
972
|
-
Py_INCREF(result);
|
|
1041
|
+
Py_INCREF_IMMORTAL(result);
|
|
973
1042
|
return result;
|
|
974
1043
|
}
|
|
975
1044
|
|
|
@@ -988,7 +1057,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeGenericImpl(PyThreadState *tstate,
|
|
|
988
1057
|
|
|
989
1058
|
PyObject *result = function->m_constant_return_value;
|
|
990
1059
|
|
|
991
|
-
|
|
1060
|
+
Py_INCREF_IMMORTAL(result);
|
|
992
1061
|
return result;
|
|
993
1062
|
}
|
|
994
1063
|
|
|
@@ -1007,6 +1076,180 @@ void Nuitka_Function_EnableConstReturnGeneric(struct Nuitka_FunctionObject *func
|
|
|
1007
1076
|
function->m_c_code = _Nuitka_FunctionEmptyCodeGenericImpl;
|
|
1008
1077
|
}
|
|
1009
1078
|
|
|
1079
|
+
#ifdef _NUITKA_PLUGIN_DILL_ENABLED
|
|
1080
|
+
int Nuitka_Function_GetFunctionCodeIndex(struct Nuitka_FunctionObject *function,
|
|
1081
|
+
function_impl_code const *function_table) {
|
|
1082
|
+
|
|
1083
|
+
if (function->m_c_code == _Nuitka_FunctionEmptyCodeTrueImpl) {
|
|
1084
|
+
return -2;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
if (function->m_c_code == _Nuitka_FunctionEmptyCodeFalseImpl) {
|
|
1088
|
+
return -3;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
if (function->m_c_code == _Nuitka_FunctionEmptyCodeNoneImpl) {
|
|
1092
|
+
return -4;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
if (function->m_c_code == _Nuitka_FunctionEmptyCodeGenericImpl) {
|
|
1096
|
+
return -5;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
function_impl_code const *current = function_table;
|
|
1100
|
+
int offset = 0;
|
|
1101
|
+
|
|
1102
|
+
while (*current != NULL) {
|
|
1103
|
+
if (*current == function->m_c_code) {
|
|
1104
|
+
break;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
current += 1;
|
|
1108
|
+
offset += 1;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
if (*current == NULL) {
|
|
1112
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
1113
|
+
#if 0
|
|
1114
|
+
PRINT_STRING("Looking for:");
|
|
1115
|
+
PRINT_ITEM((PyObject *)function);
|
|
1116
|
+
PRINT_NEW_LINE();
|
|
1117
|
+
#endif
|
|
1118
|
+
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "Cannot find compiled function in module.");
|
|
1119
|
+
return -1;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
return offset;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
struct Nuitka_FunctionObject *
|
|
1126
|
+
Nuitka_Function_CreateFunctionViaCodeIndex(PyObject *module, PyObject *function_qualname, PyObject *function_index,
|
|
1127
|
+
PyObject *code_object_desc, PyObject *constant_return_value,
|
|
1128
|
+
PyObject *defaults, PyObject *kw_defaults, PyObject *doc, PyObject *closure,
|
|
1129
|
+
function_impl_code const *function_table, int function_table_size) {
|
|
1130
|
+
int offset = PyLong_AsLong(function_index);
|
|
1131
|
+
|
|
1132
|
+
if (offset > function_table_size || offset < -5 || offset == -1) {
|
|
1133
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
1134
|
+
|
|
1135
|
+
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "Wrong offset for compiled function.");
|
|
1136
|
+
return NULL;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
PyObject *filename = PyTuple_GET_ITEM(code_object_desc, 0);
|
|
1140
|
+
PyObject *function_name = PyTuple_GET_ITEM(code_object_desc, 1);
|
|
1141
|
+
PyObject *line = PyTuple_GET_ITEM(code_object_desc, 2);
|
|
1142
|
+
int line_int = PyLong_AsLong(line);
|
|
1143
|
+
assert(line_int != -1);
|
|
1144
|
+
|
|
1145
|
+
PyObject *arg_names = PyTuple_GET_ITEM(code_object_desc, 3);
|
|
1146
|
+
PyObject *arg_count = PyTuple_GET_ITEM(code_object_desc, 4);
|
|
1147
|
+
int arg_count_int = PyLong_AsLong(arg_count);
|
|
1148
|
+
assert(arg_count_int != -1);
|
|
1149
|
+
|
|
1150
|
+
PyObject *flags = PyTuple_GET_ITEM(code_object_desc, 5);
|
|
1151
|
+
int flags_int = PyLong_AsLong(flags);
|
|
1152
|
+
assert(flags_int != -1);
|
|
1153
|
+
|
|
1154
|
+
PyObject *kw_only_count = PyTuple_GET_ITEM(code_object_desc, 6);
|
|
1155
|
+
int kw_only_count_int = PyLong_AsLong(kw_only_count);
|
|
1156
|
+
assert(kw_only_count_int != -1);
|
|
1157
|
+
|
|
1158
|
+
PyObject *pos_only_count = PyTuple_GET_ITEM(code_object_desc, 7);
|
|
1159
|
+
int pos_only_count_int = PyLong_AsLong(pos_only_count);
|
|
1160
|
+
assert(pos_only_count_int != -1);
|
|
1161
|
+
|
|
1162
|
+
PyCodeObject *code_object =
|
|
1163
|
+
MAKE_CODE_OBJECT(filename, line_int, flags_int, function_name, function_qualname, arg_names,
|
|
1164
|
+
NULL, // free_vars
|
|
1165
|
+
arg_count_int, kw_only_count_int, pos_only_count_int);
|
|
1166
|
+
if (unlikely(code_object == NULL)) {
|
|
1167
|
+
return NULL;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
Py_ssize_t closure_size;
|
|
1171
|
+
|
|
1172
|
+
if (closure != Py_None) {
|
|
1173
|
+
closure_size = PyTuple_GET_SIZE(closure);
|
|
1174
|
+
} else {
|
|
1175
|
+
closure_size = 0;
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
NUITKA_DYNAMIC_ARRAY_DECL(closure_cells, struct Nuitka_CellObject *, closure_size);
|
|
1179
|
+
|
|
1180
|
+
for (Py_ssize_t i = 0; i < closure_size; i++) {
|
|
1181
|
+
closure_cells[i] = Nuitka_Cell_New0(PyTuple_GET_ITEM(closure, i));
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
struct Nuitka_FunctionObject *result =
|
|
1185
|
+
Nuitka_Function_New(offset >= 0 ? function_table[offset] : NULL, code_object->co_name,
|
|
1186
|
+
#if PYTHON_VERSION >= 0x300
|
|
1187
|
+
NULL, // TODO: Not transferring qualname yet
|
|
1188
|
+
#endif
|
|
1189
|
+
code_object, defaults,
|
|
1190
|
+
#if PYTHON_VERSION >= 0x300
|
|
1191
|
+
kw_defaults,
|
|
1192
|
+
NULL, // TODO: Not transferring annotations
|
|
1193
|
+
#endif
|
|
1194
|
+
module, doc, closure_cells, closure_size);
|
|
1195
|
+
|
|
1196
|
+
CHECK_OBJECT(result);
|
|
1197
|
+
|
|
1198
|
+
if (offset == -2) {
|
|
1199
|
+
Nuitka_Function_EnableConstReturnTrue(result);
|
|
1200
|
+
}
|
|
1201
|
+
if (offset == -3) {
|
|
1202
|
+
Nuitka_Function_EnableConstReturnFalse(result);
|
|
1203
|
+
}
|
|
1204
|
+
if (offset == -4) {
|
|
1205
|
+
result->m_c_code = _Nuitka_FunctionEmptyCodeNoneImpl;
|
|
1206
|
+
}
|
|
1207
|
+
if (offset == -5) {
|
|
1208
|
+
CHECK_OBJECT(constant_return_value);
|
|
1209
|
+
|
|
1210
|
+
Nuitka_Function_EnableConstReturnGeneric(result, constant_return_value);
|
|
1211
|
+
|
|
1212
|
+
Py_INCREF_IMMORTAL(constant_return_value);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
assert(result->m_c_code != NULL);
|
|
1216
|
+
|
|
1217
|
+
return result;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
PyObject *Nuitka_Function_ExtractCodeObjectDescription(PyThreadState *tstate, struct Nuitka_FunctionObject *function) {
|
|
1221
|
+
PyObject *code_object_desc = MAKE_TUPLE_EMPTY(tstate, 8);
|
|
1222
|
+
|
|
1223
|
+
PyTuple_SET_ITEM0(code_object_desc, 0, function->m_code_object->co_filename);
|
|
1224
|
+
PyTuple_SET_ITEM0(code_object_desc, 1, function->m_code_object->co_name);
|
|
1225
|
+
PyTuple_SET_ITEM(code_object_desc, 2, PyLong_FromLong(function->m_code_object->co_firstlineno));
|
|
1226
|
+
#if PYTHON_VERSION < 0x3b0
|
|
1227
|
+
PyTuple_SET_ITEM0(code_object_desc, 3, function->m_code_object->co_varnames);
|
|
1228
|
+
#else
|
|
1229
|
+
// spell-checker: ignore PyCode_GetVarnames
|
|
1230
|
+
PyTuple_SET_ITEM(code_object_desc, 3, PyCode_GetVarnames(function->m_code_object));
|
|
1231
|
+
#endif
|
|
1232
|
+
PyTuple_SET_ITEM(code_object_desc, 4, PyLong_FromLong(function->m_code_object->co_argcount));
|
|
1233
|
+
PyTuple_SET_ITEM(code_object_desc, 5, PyLong_FromLong(function->m_code_object->co_flags));
|
|
1234
|
+
|
|
1235
|
+
#if PYTHON_VERSION < 0x380
|
|
1236
|
+
PyTuple_SET_ITEM(code_object_desc, 6, const_int_0);
|
|
1237
|
+
#else
|
|
1238
|
+
PyTuple_SET_ITEM(code_object_desc, 6, PyLong_FromLong(function->m_code_object->co_posonlyargcount));
|
|
1239
|
+
#endif
|
|
1240
|
+
|
|
1241
|
+
#if PYTHON_VERSION < 0x3b0
|
|
1242
|
+
PyTuple_SET_ITEM(code_object_desc, 7, const_int_0);
|
|
1243
|
+
#else
|
|
1244
|
+
PyTuple_SET_ITEM(code_object_desc, 7, PyLong_FromLong(function->m_code_object->co_kwonlyargcount));
|
|
1245
|
+
#endif
|
|
1246
|
+
|
|
1247
|
+
CHECK_OBJECT_DEEP(code_object_desc);
|
|
1248
|
+
|
|
1249
|
+
return code_object_desc;
|
|
1250
|
+
}
|
|
1251
|
+
#endif
|
|
1252
|
+
|
|
1010
1253
|
#if PYTHON_VERSION >= 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_VECTORCALL_SLOT)
|
|
1011
1254
|
static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *function, PyObject *const *stack,
|
|
1012
1255
|
size_t nargsf, PyObject *kw_names);
|
|
@@ -1019,16 +1262,23 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
|
|
|
1019
1262
|
struct Nuitka_CellObject **closure, Py_ssize_t closure_given)
|
|
1020
1263
|
#else
|
|
1021
1264
|
struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyObject *name, PyObject *qualname,
|
|
1022
|
-
PyCodeObject *code_object, PyObject *defaults, PyObject *
|
|
1265
|
+
PyCodeObject *code_object, PyObject *defaults, PyObject *kw_defaults,
|
|
1023
1266
|
PyObject *annotations, PyObject *module, PyObject *doc,
|
|
1024
1267
|
struct Nuitka_CellObject **closure, Py_ssize_t closure_given)
|
|
1025
1268
|
#endif
|
|
1026
1269
|
{
|
|
1270
|
+
#if _DEBUG_REFCOUNTS
|
|
1271
|
+
count_active_Nuitka_Function_Type += 1;
|
|
1272
|
+
count_allocated_Nuitka_Function_Type += 1;
|
|
1273
|
+
#endif
|
|
1274
|
+
|
|
1027
1275
|
struct Nuitka_FunctionObject *result;
|
|
1028
1276
|
|
|
1029
1277
|
// Macro to assign result memory from GC or free list.
|
|
1030
1278
|
allocateFromFreeList(free_list_functions, struct Nuitka_FunctionObject, Nuitka_Function_Type, closure_given);
|
|
1031
1279
|
|
|
1280
|
+
assert(closure_given == 0 || closure != NULL);
|
|
1281
|
+
|
|
1032
1282
|
memcpy(&result->m_closure[0], closure, closure_given * sizeof(struct Nuitka_CellObject *));
|
|
1033
1283
|
result->m_closure_given = closure_given;
|
|
1034
1284
|
|
|
@@ -1055,7 +1305,7 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
|
|
|
1055
1305
|
#endif
|
|
1056
1306
|
|
|
1057
1307
|
if (defaults == NULL) {
|
|
1058
|
-
|
|
1308
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
1059
1309
|
defaults = Py_None;
|
|
1060
1310
|
}
|
|
1061
1311
|
CHECK_OBJECT(defaults);
|
|
@@ -1065,8 +1315,8 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
|
|
|
1065
1315
|
_onUpdatedCompiledFunctionDefaultsValue(result);
|
|
1066
1316
|
|
|
1067
1317
|
#if PYTHON_VERSION >= 0x300
|
|
1068
|
-
assert(
|
|
1069
|
-
result->m_kwdefaults =
|
|
1318
|
+
assert(kw_defaults == NULL || (PyDict_Check(kw_defaults) && DICT_SIZE(kw_defaults) > 0));
|
|
1319
|
+
result->m_kwdefaults = kw_defaults;
|
|
1070
1320
|
|
|
1071
1321
|
assert(annotations == NULL || (PyDict_Check(annotations) && DICT_SIZE(annotations) > 0));
|
|
1072
1322
|
result->m_annotations = annotations;
|
|
@@ -1125,6 +1375,11 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
|
|
|
1125
1375
|
result->m_vectorcall = (vectorcallfunc)Nuitka_Function_tp_vectorcall;
|
|
1126
1376
|
#endif
|
|
1127
1377
|
|
|
1378
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
1379
|
+
result->m_type_params = const_tuple_empty;
|
|
1380
|
+
assert(_Py_IsImmortal(result->m_type_params));
|
|
1381
|
+
#endif
|
|
1382
|
+
|
|
1128
1383
|
Nuitka_GC_Track(result);
|
|
1129
1384
|
|
|
1130
1385
|
assert(Py_REFCNT(result) == 1);
|
|
@@ -1357,11 +1612,11 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
|
|
|
1357
1612
|
char const *function_name = Nuitka_String_AsString(function->m_qualname);
|
|
1358
1613
|
#endif
|
|
1359
1614
|
|
|
1360
|
-
Py_ssize_t
|
|
1615
|
+
Py_ssize_t co_kwonlyargcount = function->m_code_object->co_kwonlyargcount;
|
|
1361
1616
|
|
|
1362
1617
|
Py_ssize_t max_missing = 0;
|
|
1363
1618
|
|
|
1364
|
-
for (Py_ssize_t i =
|
|
1619
|
+
for (Py_ssize_t i = co_kwonlyargcount - 1; i >= 0; --i) {
|
|
1365
1620
|
if (kw_vars[i] == NULL) {
|
|
1366
1621
|
max_missing += 1;
|
|
1367
1622
|
}
|
|
@@ -1373,7 +1628,7 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
|
|
|
1373
1628
|
PyObject *and_str = PyUnicode_FromString(max_missing == 2 ? " and " : ", and ");
|
|
1374
1629
|
|
|
1375
1630
|
Py_ssize_t missing = 0;
|
|
1376
|
-
for (Py_ssize_t i =
|
|
1631
|
+
for (Py_ssize_t i = co_kwonlyargcount - 1; i >= 0; --i) {
|
|
1377
1632
|
if (kw_vars[i] == NULL) {
|
|
1378
1633
|
PyObject *current_str = function->m_varnames[function->m_args_positional_count + i];
|
|
1379
1634
|
|
|
@@ -1384,28 +1639,53 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
|
|
|
1384
1639
|
|
|
1385
1640
|
list_str = UNICODE_CONCAT(tstate, list_str, current);
|
|
1386
1641
|
|
|
1642
|
+
if (unlikely(list_str == NULL)) {
|
|
1643
|
+
list_str = old;
|
|
1644
|
+
break;
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1387
1647
|
Py_DECREF(old);
|
|
1388
1648
|
} else if (missing == 1) {
|
|
1389
1649
|
PyObject *old = list_str;
|
|
1390
1650
|
|
|
1391
1651
|
list_str = UNICODE_CONCAT(tstate, and_str, list_str);
|
|
1392
1652
|
|
|
1653
|
+
if (unlikely(list_str == NULL)) {
|
|
1654
|
+
list_str = old;
|
|
1655
|
+
break;
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1393
1658
|
Py_DECREF(old);
|
|
1394
1659
|
old = list_str;
|
|
1395
1660
|
|
|
1396
1661
|
list_str = UNICODE_CONCAT(tstate, current, list_str);
|
|
1397
1662
|
|
|
1663
|
+
if (unlikely(list_str == NULL)) {
|
|
1664
|
+
list_str = old;
|
|
1665
|
+
break;
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1398
1668
|
Py_DECREF(old);
|
|
1399
1669
|
} else {
|
|
1400
1670
|
PyObject *old = list_str;
|
|
1401
1671
|
|
|
1402
1672
|
list_str = UNICODE_CONCAT(tstate, comma_str, list_str);
|
|
1403
1673
|
|
|
1674
|
+
if (unlikely(list_str == NULL)) {
|
|
1675
|
+
list_str = old;
|
|
1676
|
+
break;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1404
1679
|
Py_DECREF(old);
|
|
1405
1680
|
old = list_str;
|
|
1406
1681
|
|
|
1407
1682
|
list_str = UNICODE_CONCAT(tstate, current, list_str);
|
|
1408
1683
|
|
|
1684
|
+
if (unlikely(list_str == NULL)) {
|
|
1685
|
+
list_str = old;
|
|
1686
|
+
break;
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1409
1689
|
Py_DECREF(old);
|
|
1410
1690
|
}
|
|
1411
1691
|
|
|
@@ -1519,10 +1799,10 @@ static Py_ssize_t handleKeywordArgs(PyThreadState *tstate, struct Nuitka_Functio
|
|
|
1519
1799
|
}
|
|
1520
1800
|
|
|
1521
1801
|
if (found == false) {
|
|
1522
|
-
PyObject **
|
|
1802
|
+
PyObject **var_names = function->m_varnames;
|
|
1523
1803
|
|
|
1524
1804
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
1525
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
1805
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
1526
1806
|
assert(python_pars[i] == NULL);
|
|
1527
1807
|
python_pars[i] = value;
|
|
1528
1808
|
|
|
@@ -1542,9 +1822,9 @@ static Py_ssize_t handleKeywordArgs(PyThreadState *tstate, struct Nuitka_Functio
|
|
|
1542
1822
|
bool pos_only_error = false;
|
|
1543
1823
|
|
|
1544
1824
|
for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
|
|
1545
|
-
PyObject **
|
|
1825
|
+
PyObject **var_names = function->m_varnames;
|
|
1546
1826
|
|
|
1547
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
1827
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
1548
1828
|
pos_only_error = true;
|
|
1549
1829
|
break;
|
|
1550
1830
|
}
|
|
@@ -1633,11 +1913,11 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
|
|
|
1633
1913
|
}
|
|
1634
1914
|
|
|
1635
1915
|
if (found == false) {
|
|
1636
|
-
PyObject **
|
|
1916
|
+
PyObject **var_names = function->m_varnames;
|
|
1637
1917
|
|
|
1638
1918
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
1639
1919
|
// TODO: Could do better here, STR/UNICODE key knowledge being there.
|
|
1640
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
1920
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
1641
1921
|
assert(python_pars[i] == NULL);
|
|
1642
1922
|
python_pars[i] = value;
|
|
1643
1923
|
|
|
@@ -1657,9 +1937,9 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
|
|
|
1657
1937
|
bool pos_only_error = false;
|
|
1658
1938
|
|
|
1659
1939
|
for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
|
|
1660
|
-
PyObject **
|
|
1940
|
+
PyObject **var_names = function->m_varnames;
|
|
1661
1941
|
|
|
1662
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
1942
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
1663
1943
|
pos_only_error = true;
|
|
1664
1944
|
break;
|
|
1665
1945
|
}
|
|
@@ -1692,7 +1972,7 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
|
|
|
1692
1972
|
return kw_found;
|
|
1693
1973
|
}
|
|
1694
1974
|
|
|
1695
|
-
static PyObject *COPY_DICT_KW(PyObject *dict_value);
|
|
1975
|
+
static PyObject *COPY_DICT_KW(PyThreadState *tstate, PyObject *dict_value);
|
|
1696
1976
|
|
|
1697
1977
|
static bool MAKE_STAR_DICT_DICTIONARY_COPY(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
|
|
1698
1978
|
PyObject **python_pars, PyObject *kw) {
|
|
@@ -1700,9 +1980,9 @@ static bool MAKE_STAR_DICT_DICTIONARY_COPY(PyThreadState *tstate, struct Nuitka_
|
|
|
1700
1980
|
assert(star_dict_index != -1);
|
|
1701
1981
|
|
|
1702
1982
|
if (kw == NULL || ((PyDictObject *)kw)->ma_used == 0) {
|
|
1703
|
-
python_pars[star_dict_index] = MAKE_DICT_EMPTY();
|
|
1983
|
+
python_pars[star_dict_index] = MAKE_DICT_EMPTY(tstate);
|
|
1704
1984
|
} else {
|
|
1705
|
-
python_pars[star_dict_index] = COPY_DICT_KW(kw);
|
|
1985
|
+
python_pars[star_dict_index] = COPY_DICT_KW(tstate, kw);
|
|
1706
1986
|
|
|
1707
1987
|
if (unlikely(python_pars[star_dict_index] == NULL)) {
|
|
1708
1988
|
formatErrorKeywordsMustBeString(tstate, function);
|
|
@@ -1735,7 +2015,7 @@ static Py_ssize_t handleKeywordArgsWithStarDict(PyThreadState *tstate, struct Nu
|
|
|
1735
2015
|
|
|
1736
2016
|
Py_ssize_t star_dict_index = function->m_args_star_dict_index;
|
|
1737
2017
|
|
|
1738
|
-
PyObject **
|
|
2018
|
+
PyObject **var_names = function->m_varnames;
|
|
1739
2019
|
|
|
1740
2020
|
#if PYTHON_VERSION < 0x380
|
|
1741
2021
|
Py_ssize_t kw_arg_start = 0;
|
|
@@ -1744,7 +2024,7 @@ static Py_ssize_t handleKeywordArgsWithStarDict(PyThreadState *tstate, struct Nu
|
|
|
1744
2024
|
#endif
|
|
1745
2025
|
|
|
1746
2026
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
1747
|
-
PyObject *arg_name =
|
|
2027
|
+
PyObject *arg_name = var_names[i];
|
|
1748
2028
|
|
|
1749
2029
|
PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
|
|
1750
2030
|
|
|
@@ -1800,7 +2080,7 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
|
|
|
1800
2080
|
Py_ssize_t keyword_after_index = function->m_args_positional_count;
|
|
1801
2081
|
#endif
|
|
1802
2082
|
|
|
1803
|
-
PyObject **
|
|
2083
|
+
PyObject **var_names = function->m_varnames;
|
|
1804
2084
|
|
|
1805
2085
|
#if PYTHON_VERSION < 0x380
|
|
1806
2086
|
Py_ssize_t kw_arg_start = 0;
|
|
@@ -1809,7 +2089,7 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
|
|
|
1809
2089
|
#endif
|
|
1810
2090
|
|
|
1811
2091
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
1812
|
-
PyObject *arg_name =
|
|
2092
|
+
PyObject *arg_name = var_names[i];
|
|
1813
2093
|
|
|
1814
2094
|
PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
|
|
1815
2095
|
|
|
@@ -1833,30 +2113,30 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
|
|
|
1833
2113
|
return kw_found;
|
|
1834
2114
|
}
|
|
1835
2115
|
|
|
1836
|
-
static void makeStarListTupleCopy(struct Nuitka_FunctionObject const *function,
|
|
1837
|
-
PyObject *const *args, Py_ssize_t args_size) {
|
|
2116
|
+
static void makeStarListTupleCopy(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
|
|
2117
|
+
PyObject **python_pars, PyObject *const *args, Py_ssize_t args_size) {
|
|
1838
2118
|
assert(function->m_args_star_list_index != -1);
|
|
1839
2119
|
Py_ssize_t list_star_index = function->m_args_star_list_index;
|
|
1840
2120
|
|
|
1841
2121
|
// Copy left-over argument values to the star list parameter given.
|
|
1842
2122
|
if (args_size > function->m_args_positional_count) {
|
|
1843
2123
|
python_pars[list_star_index] =
|
|
1844
|
-
MAKE_TUPLE(&args[function->m_args_positional_count], args_size - function->m_args_positional_count);
|
|
2124
|
+
MAKE_TUPLE(tstate, &args[function->m_args_positional_count], args_size - function->m_args_positional_count);
|
|
1845
2125
|
} else {
|
|
1846
2126
|
python_pars[list_star_index] = const_tuple_empty;
|
|
1847
2127
|
Py_INCREF(const_tuple_empty);
|
|
1848
2128
|
}
|
|
1849
2129
|
}
|
|
1850
2130
|
|
|
1851
|
-
static void makeStarListTupleCopyMethod(struct Nuitka_FunctionObject const *function,
|
|
1852
|
-
PyObject *const *args, Py_ssize_t args_size) {
|
|
2131
|
+
static void makeStarListTupleCopyMethod(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
|
|
2132
|
+
PyObject **python_pars, PyObject *const *args, Py_ssize_t args_size) {
|
|
1853
2133
|
assert(function->m_args_star_list_index != -1);
|
|
1854
2134
|
Py_ssize_t list_star_index = function->m_args_star_list_index;
|
|
1855
2135
|
|
|
1856
2136
|
// Copy left-over argument values to the star list parameter given.
|
|
1857
2137
|
if (args_size + 1 > function->m_args_positional_count) {
|
|
1858
|
-
python_pars[list_star_index] =
|
|
1859
|
-
|
|
2138
|
+
python_pars[list_star_index] = MAKE_TUPLE(tstate, &args[function->m_args_positional_count - 1],
|
|
2139
|
+
args_size + 1 - function->m_args_positional_count);
|
|
1860
2140
|
} else {
|
|
1861
2141
|
python_pars[list_star_index] = const_tuple_empty;
|
|
1862
2142
|
Py_INCREF(const_tuple_empty);
|
|
@@ -1944,7 +2224,7 @@ static bool _handleArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_Funct
|
|
|
1944
2224
|
#endif
|
|
1945
2225
|
|
|
1946
2226
|
if (function->m_args_star_list_index != -1) {
|
|
1947
|
-
makeStarListTupleCopy(function, python_pars, args, args_size);
|
|
2227
|
+
makeStarListTupleCopy(tstate, function, python_pars, args, args_size);
|
|
1948
2228
|
}
|
|
1949
2229
|
|
|
1950
2230
|
return true;
|
|
@@ -1963,7 +2243,7 @@ static bool handleMethodArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_
|
|
|
1963
2243
|
// Without self, there can only be star list to get the object as its
|
|
1964
2244
|
// first element. Or we complain about illegal arguments.
|
|
1965
2245
|
if (function->m_args_star_list_index == 0) {
|
|
1966
|
-
python_pars[0] = MAKE_TUPLE_EMPTY(args_size + 1);
|
|
2246
|
+
python_pars[0] = MAKE_TUPLE_EMPTY(tstate, args_size + 1);
|
|
1967
2247
|
PyTuple_SET_ITEM0(python_pars[0], 0, object);
|
|
1968
2248
|
|
|
1969
2249
|
for (Py_ssize_t i = 0; i < args_size; i++) {
|
|
@@ -2048,7 +2328,7 @@ static bool handleMethodArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_
|
|
|
2048
2328
|
#endif
|
|
2049
2329
|
|
|
2050
2330
|
if (function->m_args_star_list_index != -1) {
|
|
2051
|
-
makeStarListTupleCopyMethod(function, python_pars, args, args_size);
|
|
2331
|
+
makeStarListTupleCopyMethod(tstate, function, python_pars, args, args_size);
|
|
2052
2332
|
}
|
|
2053
2333
|
|
|
2054
2334
|
return true;
|
|
@@ -2178,7 +2458,7 @@ static bool _handleArgumentsPlain(PyThreadState *tstate, struct Nuitka_FunctionO
|
|
|
2178
2458
|
#endif
|
|
2179
2459
|
|
|
2180
2460
|
if (function->m_args_star_list_index != -1) {
|
|
2181
|
-
makeStarListTupleCopy(function, python_pars, args, args_size);
|
|
2461
|
+
makeStarListTupleCopy(tstate, function, python_pars, args, args_size);
|
|
2182
2462
|
}
|
|
2183
2463
|
|
|
2184
2464
|
return true;
|
|
@@ -2245,7 +2525,7 @@ static bool parseArgumentsPos(PyThreadState *tstate, struct Nuitka_FunctionObjec
|
|
|
2245
2525
|
#endif
|
|
2246
2526
|
|
|
2247
2527
|
if (function->m_args_star_dict_index != -1) {
|
|
2248
|
-
python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY();
|
|
2528
|
+
python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY(tstate);
|
|
2249
2529
|
}
|
|
2250
2530
|
|
|
2251
2531
|
return true;
|
|
@@ -2297,7 +2577,7 @@ static bool parseArgumentsMethodPos(PyThreadState *tstate, struct Nuitka_Functio
|
|
|
2297
2577
|
#endif
|
|
2298
2578
|
|
|
2299
2579
|
if (function->m_args_star_dict_index != -1) {
|
|
2300
|
-
python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY();
|
|
2580
|
+
python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY(tstate);
|
|
2301
2581
|
}
|
|
2302
2582
|
|
|
2303
2583
|
return true;
|
|
@@ -2611,10 +2891,10 @@ static Py_ssize_t _handleVectorcallKeywordArgs(PyThreadState *tstate, struct Nui
|
|
|
2611
2891
|
}
|
|
2612
2892
|
|
|
2613
2893
|
if (found == false) {
|
|
2614
|
-
PyObject **
|
|
2894
|
+
PyObject **var_names = function->m_varnames;
|
|
2615
2895
|
|
|
2616
2896
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
2617
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
2897
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
2618
2898
|
assert(python_pars[i] == NULL);
|
|
2619
2899
|
python_pars[i] = kw_values[pos];
|
|
2620
2900
|
Py_INCREF(python_pars[i]);
|
|
@@ -2633,9 +2913,9 @@ static Py_ssize_t _handleVectorcallKeywordArgs(PyThreadState *tstate, struct Nui
|
|
|
2633
2913
|
bool pos_only_error = false;
|
|
2634
2914
|
|
|
2635
2915
|
for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
|
|
2636
|
-
PyObject **
|
|
2916
|
+
PyObject **var_names = function->m_varnames;
|
|
2637
2917
|
|
|
2638
|
-
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(
|
|
2918
|
+
if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
|
|
2639
2919
|
pos_only_error = true;
|
|
2640
2920
|
break;
|
|
2641
2921
|
}
|
|
@@ -2710,7 +2990,7 @@ static Py_ssize_t handleVectorcallKeywordArgsWithStarDict(PyThreadState *tstate,
|
|
|
2710
2990
|
|
|
2711
2991
|
Py_ssize_t star_dict_index = function->m_args_star_dict_index;
|
|
2712
2992
|
|
|
2713
|
-
PyObject **
|
|
2993
|
+
PyObject **var_names = function->m_varnames;
|
|
2714
2994
|
|
|
2715
2995
|
#if PYTHON_VERSION < 0x380
|
|
2716
2996
|
Py_ssize_t kw_arg_start = 0;
|
|
@@ -2719,7 +2999,7 @@ static Py_ssize_t handleVectorcallKeywordArgsWithStarDict(PyThreadState *tstate,
|
|
|
2719
2999
|
#endif
|
|
2720
3000
|
|
|
2721
3001
|
for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
|
|
2722
|
-
PyObject *arg_name =
|
|
3002
|
+
PyObject *arg_name = var_names[i];
|
|
2723
3003
|
|
|
2724
3004
|
PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
|
|
2725
3005
|
|
|
@@ -2894,15 +3174,15 @@ static PyObject *Nuitka_Function_tp_call(struct Nuitka_FunctionObject *function,
|
|
|
2894
3174
|
static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *function, PyObject *const *stack,
|
|
2895
3175
|
size_t nargsf, PyObject *kw_names) {
|
|
2896
3176
|
assert(kw_names == NULL || PyTuple_CheckExact(kw_names));
|
|
2897
|
-
Py_ssize_t
|
|
3177
|
+
Py_ssize_t kwargs_count = (kw_names == NULL) ? 0 : PyTuple_GET_SIZE(kw_names);
|
|
2898
3178
|
|
|
2899
3179
|
Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
|
|
2900
3180
|
assert(nargs >= 0);
|
|
2901
|
-
assert((nargs == 0 &&
|
|
3181
|
+
assert((nargs == 0 && kwargs_count == 0) || stack != NULL);
|
|
2902
3182
|
|
|
2903
3183
|
PyThreadState *tstate = PyThreadState_GET();
|
|
2904
3184
|
return Nuitka_CallFunctionVectorcall(tstate, function, stack, nargs,
|
|
2905
|
-
kw_names ? &PyTuple_GET_ITEM(kw_names, 0) : NULL,
|
|
3185
|
+
kw_names ? &PyTuple_GET_ITEM(kw_names, 0) : NULL, kwargs_count);
|
|
2906
3186
|
}
|
|
2907
3187
|
#endif
|
|
2908
3188
|
|
|
@@ -2914,4 +3194,18 @@ static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *fun
|
|
|
2914
3194
|
|
|
2915
3195
|
#include "CompiledCodeHelpers.c"
|
|
2916
3196
|
|
|
2917
|
-
#include "InspectPatcher.c"
|
|
3197
|
+
#include "InspectPatcher.c"
|
|
3198
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
3199
|
+
// integrates with CPython, but also works on its own.
|
|
3200
|
+
//
|
|
3201
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3202
|
+
// you may not use this file except in compliance with the License.
|
|
3203
|
+
// You may obtain a copy of the License at
|
|
3204
|
+
//
|
|
3205
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
3206
|
+
//
|
|
3207
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
3208
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
3209
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3210
|
+
// See the License for the specific language governing permissions and
|
|
3211
|
+
// limitations under the License.
|