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
|
/** Uncompiled generator integration
|
|
19
4
|
*
|
|
20
5
|
* This is for use in compiled generator, coroutine, async types. The file in
|
|
@@ -34,9 +19,39 @@
|
|
|
34
19
|
#undef Py_BUILD_CORE
|
|
35
20
|
#endif
|
|
36
21
|
|
|
22
|
+
#if PYTHON_VERSION >= 0x300
|
|
23
|
+
static PyObject *Nuitka_CallGeneratorThrowMethod(PyObject *throw_method,
|
|
24
|
+
struct Nuitka_ExceptionPreservationItem *exception_state);
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#if PYTHON_VERSION >= 0x300
|
|
28
|
+
static PyBaseExceptionObject *Nuitka_BaseExceptionSingleArg_new(PyThreadState *tstate, PyTypeObject *type,
|
|
29
|
+
PyObject *arg) {
|
|
30
|
+
PyBaseExceptionObject *result = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
|
|
31
|
+
|
|
32
|
+
result->dict = NULL;
|
|
33
|
+
result->traceback = NULL;
|
|
34
|
+
result->cause = NULL;
|
|
35
|
+
result->context = NULL;
|
|
36
|
+
result->suppress_context = 0;
|
|
37
|
+
|
|
38
|
+
result->args = MAKE_TUPLE1(tstate, arg);
|
|
39
|
+
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static PyObject *Nuitka_CreateStopIteration(PyThreadState *tstate, PyObject *value) {
|
|
44
|
+
PyStopIterationObject *result =
|
|
45
|
+
(PyStopIterationObject *)Nuitka_BaseExceptionSingleArg_new(tstate, (PyTypeObject *)PyExc_StopIteration, value);
|
|
46
|
+
|
|
47
|
+
result->value = value;
|
|
48
|
+
Py_INCREF(value);
|
|
49
|
+
|
|
50
|
+
return (PyObject *)result;
|
|
51
|
+
}
|
|
52
|
+
|
|
37
53
|
// This function takes no reference to value, and publishes a StopIteration
|
|
38
54
|
// exception with it.
|
|
39
|
-
#if PYTHON_VERSION >= 0x300
|
|
40
55
|
static void Nuitka_SetStopIterationValue(PyThreadState *tstate, PyObject *value) {
|
|
41
56
|
CHECK_OBJECT(value);
|
|
42
57
|
|
|
@@ -47,8 +62,11 @@ static void Nuitka_SetStopIterationValue(PyThreadState *tstate, PyObject *value)
|
|
|
47
62
|
return;
|
|
48
63
|
}
|
|
49
64
|
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
SET_CURRENT_EXCEPTION_TYPE0_VALUE1(tstate, PyExc_StopIteration, stop_value);
|
|
66
|
+
#elif PYTHON_VERSION >= 0x3c0
|
|
67
|
+
struct Nuitka_ExceptionPreservationItem exception_state = {Nuitka_CreateStopIteration(tstate, value)};
|
|
68
|
+
|
|
69
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &exception_state);
|
|
52
70
|
#else
|
|
53
71
|
if (likely(!PyTuple_Check(value) && !PyExceptionInstance_Check(value))) {
|
|
54
72
|
Py_INCREF(PyExc_StopIteration);
|
|
@@ -56,15 +74,10 @@ static void Nuitka_SetStopIterationValue(PyThreadState *tstate, PyObject *value)
|
|
|
56
74
|
|
|
57
75
|
RESTORE_ERROR_OCCURRED(tstate, PyExc_StopIteration, value, NULL);
|
|
58
76
|
} else {
|
|
59
|
-
|
|
77
|
+
struct Nuitka_ExceptionPreservationItem exception_state = {Py_NewRef(PyExc_StopIteration),
|
|
78
|
+
Nuitka_CreateStopIteration(tstate, value)};
|
|
60
79
|
|
|
61
|
-
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
Py_INCREF(PyExc_StopIteration);
|
|
66
|
-
|
|
67
|
-
RESTORE_ERROR_OCCURRED(tstate, PyExc_StopIteration, stop_value, NULL);
|
|
80
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &exception_state);
|
|
68
81
|
}
|
|
69
82
|
#endif
|
|
70
83
|
}
|
|
@@ -115,45 +128,10 @@ static inline bool Nuitka_PyFrameHasCompleted(PyFrameObject *const frame) {
|
|
|
115
128
|
// what it does. It's unrelated to compiled generators, and used from coroutines
|
|
116
129
|
// and asyncgen to interact with them.
|
|
117
130
|
static PyObject *Nuitka_PyGen_Send(PyThreadState *tstate, PyGenObject *gen, PyObject *arg) {
|
|
118
|
-
#if
|
|
119
|
-
PyObject *res;
|
|
120
|
-
|
|
121
|
-
if (gen->status == GEN_CREATED) {
|
|
122
|
-
if (unlikely(arg != Py_None)) {
|
|
123
|
-
char const *msg = "generator raised StopIteration";
|
|
124
|
-
if (PyCoro_CheckExact(gen)) {
|
|
125
|
-
msg = "coroutine raised StopIteration";
|
|
126
|
-
} else if (PyAsyncGen_CheckExact(gen)) {
|
|
127
|
-
msg = "async generator raised StopIteration";
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
_PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);
|
|
131
|
-
return NULL;
|
|
132
|
-
}
|
|
133
|
-
arg = NULL;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
res = PyEval2_EvalGen(gen, arg);
|
|
137
|
-
|
|
138
|
-
if (likely(res != NULL)) {
|
|
139
|
-
assert(gen->status == GEN_SUSPENDED);
|
|
140
|
-
return res;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (likely(gen->return_value == Py_None)) {
|
|
144
|
-
gen->return_value = NULL;
|
|
145
|
-
SET_CURRENT_EXCEPTION_TYPE0(tstate,
|
|
146
|
-
PyAsyncGen_CheckExact(gen) ? PyExc_StopAsyncIteration : PyExc_StopIteration);
|
|
147
|
-
return NULL;
|
|
148
|
-
} else if (gen->return_value != NULL) {
|
|
149
|
-
Nuitka_SetStopIterationValue(tstate, gen->return_value);
|
|
150
|
-
return NULL;
|
|
151
|
-
} else {
|
|
152
|
-
return gen_wrap_exception(gen);
|
|
153
|
-
}
|
|
154
|
-
#elif PYTHON_VERSION >= 0x3a0
|
|
131
|
+
#if PYTHON_VERSION >= 0x3a0
|
|
155
132
|
PyObject *result;
|
|
156
133
|
|
|
134
|
+
// TODO: Avoid API call for performance.
|
|
157
135
|
PySendResult res = PyIter_Send((PyObject *)gen, arg, &result);
|
|
158
136
|
|
|
159
137
|
switch (res) {
|
|
@@ -271,10 +249,11 @@ static PyObject *Nuitka_PyGen_Send(PyThreadState *tstate, PyGenObject *gen, PyOb
|
|
|
271
249
|
if (result == Py_None) {
|
|
272
250
|
SET_CURRENT_EXCEPTION_TYPE0(tstate, PyExc_StopIteration);
|
|
273
251
|
} else {
|
|
274
|
-
PyObject *e =
|
|
252
|
+
PyObject *e = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, (PyObject *)PyExc_StopIteration, result);
|
|
275
253
|
|
|
276
|
-
if (e != NULL) {
|
|
277
|
-
|
|
254
|
+
if (likely(e != NULL)) {
|
|
255
|
+
Py_INCREF(PyExc_StopIteration);
|
|
256
|
+
RESTORE_ERROR_OCCURRED(tstate, PyExc_StopIteration, e, NULL);
|
|
278
257
|
}
|
|
279
258
|
}
|
|
280
259
|
|
|
@@ -299,7 +278,7 @@ static PyObject *Nuitka_PyGen_Send(PyThreadState *tstate, PyGenObject *gen, PyOb
|
|
|
299
278
|
#endif
|
|
300
279
|
|
|
301
280
|
// Now release frame.
|
|
302
|
-
#if PYTHON_VERSION >=
|
|
281
|
+
#if PYTHON_VERSION >= 0x300
|
|
303
282
|
gen->gi_frame->f_gen = NULL;
|
|
304
283
|
#endif
|
|
305
284
|
gen->gi_frame = NULL;
|
|
@@ -313,7 +292,7 @@ static PyObject *Nuitka_PyGen_Send(PyThreadState *tstate, PyGenObject *gen, PyOb
|
|
|
313
292
|
assert(result == Py_None || !PyAsyncGen_CheckExact(gen));
|
|
314
293
|
|
|
315
294
|
if (result == Py_None && !PyAsyncGen_CheckExact(gen)) {
|
|
316
|
-
|
|
295
|
+
Py_DECREF_IMMORTAL(result);
|
|
317
296
|
result = NULL;
|
|
318
297
|
}
|
|
319
298
|
} else {
|
|
@@ -348,26 +327,20 @@ static PyObject *Nuitka_PyGen_Send(PyThreadState *tstate, PyGenObject *gen, PyOb
|
|
|
348
327
|
|
|
349
328
|
#endif
|
|
350
329
|
|
|
351
|
-
// TODO: Disabled for
|
|
330
|
+
// TODO: Disabled for Python 3.13 until it becomes more ready.
|
|
352
331
|
// Not done for earlier versions yet, indicate usability for compiled
|
|
353
332
|
// generators, but it seems that mostly coroutines need it anyway, so the
|
|
354
333
|
// benefit would be only for performance and not by a lot.
|
|
355
|
-
#if PYTHON_VERSION >=
|
|
334
|
+
#if PYTHON_VERSION >= 0x300 && PYTHON_VERSION < 0x3d0
|
|
356
335
|
#define NUITKA_UNCOMPILED_THROW_INTEGRATION 1
|
|
357
336
|
#endif
|
|
358
337
|
|
|
359
|
-
// TODO: Disabled for Python3.12 until release of it
|
|
360
|
-
#if PYTHON_VERSION >= 0x3c0
|
|
361
|
-
#undef NUITKA_UNCOMPILED_THROW_INTEGRATION
|
|
362
|
-
#define NUITKA_UNCOMPILED_THROW_INTEGRATION 0
|
|
363
|
-
#endif
|
|
364
|
-
|
|
365
338
|
#if NUITKA_UNCOMPILED_THROW_INTEGRATION
|
|
366
339
|
|
|
367
|
-
static bool
|
|
368
|
-
|
|
340
|
+
static bool _Nuitka_Generator_check_throw(PyThreadState *tstate,
|
|
341
|
+
struct Nuitka_ExceptionPreservationItem *exception_state);
|
|
369
342
|
|
|
370
|
-
#if PYTHON_VERSION <
|
|
343
|
+
#if PYTHON_VERSION < 0x3b0
|
|
371
344
|
#include <opcode.h>
|
|
372
345
|
// Clashes with our helper names.
|
|
373
346
|
#undef CALL_FUNCTION
|
|
@@ -386,11 +359,9 @@ static int Nuitka_PyGen_gen_close_iter(PyThreadState *tstate, PyObject *yf);
|
|
|
386
359
|
// spell-checker: ignore classderef,getattribute,precall
|
|
387
360
|
const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
388
361
|
#if PYTHON_VERSION >= 0x3c0
|
|
389
|
-
[ASYNC_GEN_WRAP] = ASYNC_GEN_WRAP,
|
|
390
362
|
[BEFORE_ASYNC_WITH] = BEFORE_ASYNC_WITH,
|
|
391
363
|
[BEFORE_WITH] = BEFORE_WITH,
|
|
392
364
|
[BINARY_OP] = BINARY_OP,
|
|
393
|
-
[BINARY_OP_ADAPTIVE] = BINARY_OP,
|
|
394
365
|
[BINARY_OP_ADD_FLOAT] = BINARY_OP,
|
|
395
366
|
[BINARY_OP_ADD_INT] = BINARY_OP,
|
|
396
367
|
[BINARY_OP_ADD_UNICODE] = BINARY_OP,
|
|
@@ -401,7 +372,6 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
401
372
|
[BINARY_OP_SUBTRACT_INT] = BINARY_OP,
|
|
402
373
|
[BINARY_SLICE] = BINARY_SLICE,
|
|
403
374
|
[BINARY_SUBSCR] = BINARY_SUBSCR,
|
|
404
|
-
[BINARY_SUBSCR_ADAPTIVE] = BINARY_SUBSCR,
|
|
405
375
|
[BINARY_SUBSCR_DICT] = BINARY_SUBSCR,
|
|
406
376
|
[BINARY_SUBSCR_GETITEM] = BINARY_SUBSCR,
|
|
407
377
|
[BINARY_SUBSCR_LIST_INT] = BINARY_SUBSCR,
|
|
@@ -415,11 +385,12 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
415
385
|
[BUILD_TUPLE] = BUILD_TUPLE,
|
|
416
386
|
[CACHE] = CACHE,
|
|
417
387
|
[CALL] = CALL,
|
|
418
|
-
[CALL_ADAPTIVE] = CALL,
|
|
419
388
|
[CALL_BOUND_METHOD_EXACT_ARGS] = CALL,
|
|
420
389
|
[CALL_BUILTIN_CLASS] = CALL,
|
|
421
390
|
[CALL_BUILTIN_FAST_WITH_KEYWORDS] = CALL,
|
|
422
391
|
[CALL_FUNCTION_EX] = CALL_FUNCTION_EX,
|
|
392
|
+
[CALL_INTRINSIC_1] = CALL_INTRINSIC_1,
|
|
393
|
+
[CALL_INTRINSIC_2] = CALL_INTRINSIC_2,
|
|
423
394
|
[CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = CALL,
|
|
424
395
|
[CALL_NO_KW_BUILTIN_FAST] = CALL,
|
|
425
396
|
[CALL_NO_KW_BUILTIN_O] = CALL,
|
|
@@ -438,10 +409,9 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
438
409
|
[CHECK_EXC_MATCH] = CHECK_EXC_MATCH,
|
|
439
410
|
[CLEANUP_THROW] = CLEANUP_THROW,
|
|
440
411
|
[COMPARE_OP] = COMPARE_OP,
|
|
441
|
-
[
|
|
442
|
-
[
|
|
443
|
-
[
|
|
444
|
-
[COMPARE_OP_STR_JUMP] = COMPARE_OP,
|
|
412
|
+
[COMPARE_OP_FLOAT] = COMPARE_OP,
|
|
413
|
+
[COMPARE_OP_INT] = COMPARE_OP,
|
|
414
|
+
[COMPARE_OP_STR] = COMPARE_OP,
|
|
445
415
|
[CONTAINS_OP] = CONTAINS_OP,
|
|
446
416
|
[COPY] = COPY,
|
|
447
417
|
[COPY_FREE_VARS] = COPY_FREE_VARS,
|
|
@@ -454,13 +424,15 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
454
424
|
[DICT_MERGE] = DICT_MERGE,
|
|
455
425
|
[DICT_UPDATE] = DICT_UPDATE,
|
|
456
426
|
[END_ASYNC_FOR] = END_ASYNC_FOR,
|
|
427
|
+
[END_FOR] = END_FOR,
|
|
428
|
+
[END_SEND] = END_SEND,
|
|
457
429
|
[EXTENDED_ARG] = EXTENDED_ARG,
|
|
458
|
-
[EXTENDED_ARG_QUICK] = EXTENDED_ARG,
|
|
459
430
|
[FORMAT_VALUE] = FORMAT_VALUE,
|
|
460
431
|
[FOR_ITER] = FOR_ITER,
|
|
461
|
-
[
|
|
432
|
+
[FOR_ITER_GEN] = FOR_ITER,
|
|
462
433
|
[FOR_ITER_LIST] = FOR_ITER,
|
|
463
434
|
[FOR_ITER_RANGE] = FOR_ITER,
|
|
435
|
+
[FOR_ITER_TUPLE] = FOR_ITER,
|
|
464
436
|
[GET_AITER] = GET_AITER,
|
|
465
437
|
[GET_ANEXT] = GET_ANEXT,
|
|
466
438
|
[GET_AWAITABLE] = GET_AWAITABLE,
|
|
@@ -469,47 +441,64 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
469
441
|
[GET_YIELD_FROM_ITER] = GET_YIELD_FROM_ITER,
|
|
470
442
|
[IMPORT_FROM] = IMPORT_FROM,
|
|
471
443
|
[IMPORT_NAME] = IMPORT_NAME,
|
|
472
|
-
[
|
|
444
|
+
[INSTRUMENTED_CALL] = INSTRUMENTED_CALL,
|
|
445
|
+
[INSTRUMENTED_CALL_FUNCTION_EX] = INSTRUMENTED_CALL_FUNCTION_EX,
|
|
446
|
+
[INSTRUMENTED_END_FOR] = INSTRUMENTED_END_FOR,
|
|
447
|
+
[INSTRUMENTED_END_SEND] = INSTRUMENTED_END_SEND,
|
|
448
|
+
[INSTRUMENTED_FOR_ITER] = INSTRUMENTED_FOR_ITER,
|
|
449
|
+
[INSTRUMENTED_INSTRUCTION] = INSTRUMENTED_INSTRUCTION,
|
|
450
|
+
[INSTRUMENTED_JUMP_BACKWARD] = INSTRUMENTED_JUMP_BACKWARD,
|
|
451
|
+
[INSTRUMENTED_JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD,
|
|
452
|
+
[INSTRUMENTED_LINE] = INSTRUMENTED_LINE,
|
|
453
|
+
[INSTRUMENTED_LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR,
|
|
454
|
+
[INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
|
|
455
|
+
[INSTRUMENTED_POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE,
|
|
456
|
+
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
|
|
457
|
+
[INSTRUMENTED_POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE,
|
|
458
|
+
[INSTRUMENTED_RESUME] = INSTRUMENTED_RESUME,
|
|
459
|
+
[INSTRUMENTED_RETURN_CONST] = INSTRUMENTED_RETURN_CONST,
|
|
460
|
+
[INSTRUMENTED_RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE,
|
|
461
|
+
[INSTRUMENTED_YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE,
|
|
462
|
+
[INTERPRETER_EXIT] = INTERPRETER_EXIT,
|
|
473
463
|
[IS_OP] = IS_OP,
|
|
474
464
|
[JUMP_BACKWARD] = JUMP_BACKWARD,
|
|
475
465
|
[JUMP_BACKWARD_NO_INTERRUPT] = JUMP_BACKWARD_NO_INTERRUPT,
|
|
476
|
-
[JUMP_BACKWARD_QUICK] = JUMP_BACKWARD,
|
|
477
466
|
[JUMP_FORWARD] = JUMP_FORWARD,
|
|
478
|
-
[JUMP_IF_FALSE_OR_POP] = JUMP_IF_FALSE_OR_POP,
|
|
479
|
-
[JUMP_IF_TRUE_OR_POP] = JUMP_IF_TRUE_OR_POP,
|
|
480
467
|
[KW_NAMES] = KW_NAMES,
|
|
481
468
|
[LIST_APPEND] = LIST_APPEND,
|
|
482
469
|
[LIST_EXTEND] = LIST_EXTEND,
|
|
483
|
-
[LIST_TO_TUPLE] = LIST_TO_TUPLE,
|
|
484
470
|
[LOAD_ASSERTION_ERROR] = LOAD_ASSERTION_ERROR,
|
|
485
471
|
[LOAD_ATTR] = LOAD_ATTR,
|
|
486
|
-
[LOAD_ATTR_ADAPTIVE] = LOAD_ATTR,
|
|
487
472
|
[LOAD_ATTR_CLASS] = LOAD_ATTR,
|
|
488
473
|
[LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = LOAD_ATTR,
|
|
489
474
|
[LOAD_ATTR_INSTANCE_VALUE] = LOAD_ATTR,
|
|
490
475
|
[LOAD_ATTR_METHOD_LAZY_DICT] = LOAD_ATTR,
|
|
491
476
|
[LOAD_ATTR_METHOD_NO_DICT] = LOAD_ATTR,
|
|
492
|
-
[LOAD_ATTR_METHOD_WITH_DICT] = LOAD_ATTR,
|
|
493
477
|
[LOAD_ATTR_METHOD_WITH_VALUES] = LOAD_ATTR,
|
|
494
478
|
[LOAD_ATTR_MODULE] = LOAD_ATTR,
|
|
495
479
|
[LOAD_ATTR_PROPERTY] = LOAD_ATTR,
|
|
496
480
|
[LOAD_ATTR_SLOT] = LOAD_ATTR,
|
|
497
481
|
[LOAD_ATTR_WITH_HINT] = LOAD_ATTR,
|
|
498
482
|
[LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS,
|
|
499
|
-
[LOAD_CLASSDEREF] = LOAD_CLASSDEREF,
|
|
500
483
|
[LOAD_CLOSURE] = LOAD_CLOSURE,
|
|
501
484
|
[LOAD_CONST] = LOAD_CONST,
|
|
502
485
|
[LOAD_CONST__LOAD_FAST] = LOAD_CONST,
|
|
503
486
|
[LOAD_DEREF] = LOAD_DEREF,
|
|
504
487
|
[LOAD_FAST] = LOAD_FAST,
|
|
488
|
+
[LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
|
|
505
489
|
[LOAD_FAST_CHECK] = LOAD_FAST_CHECK,
|
|
506
490
|
[LOAD_FAST__LOAD_CONST] = LOAD_FAST,
|
|
507
491
|
[LOAD_FAST__LOAD_FAST] = LOAD_FAST,
|
|
492
|
+
[LOAD_FROM_DICT_OR_DEREF] = LOAD_FROM_DICT_OR_DEREF,
|
|
493
|
+
[LOAD_FROM_DICT_OR_GLOBALS] = LOAD_FROM_DICT_OR_GLOBALS,
|
|
508
494
|
[LOAD_GLOBAL] = LOAD_GLOBAL,
|
|
509
|
-
[LOAD_GLOBAL_ADAPTIVE] = LOAD_GLOBAL,
|
|
510
495
|
[LOAD_GLOBAL_BUILTIN] = LOAD_GLOBAL,
|
|
511
496
|
[LOAD_GLOBAL_MODULE] = LOAD_GLOBAL,
|
|
497
|
+
[LOAD_LOCALS] = LOAD_LOCALS,
|
|
512
498
|
[LOAD_NAME] = LOAD_NAME,
|
|
499
|
+
[LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR,
|
|
500
|
+
[LOAD_SUPER_ATTR_ATTR] = LOAD_SUPER_ATTR,
|
|
501
|
+
[LOAD_SUPER_ATTR_METHOD] = LOAD_SUPER_ATTR,
|
|
513
502
|
[MAKE_CELL] = MAKE_CELL,
|
|
514
503
|
[MAKE_FUNCTION] = MAKE_FUNCTION,
|
|
515
504
|
[MAP_ADD] = MAP_ADD,
|
|
@@ -524,22 +513,21 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
524
513
|
[POP_JUMP_IF_NOT_NONE] = POP_JUMP_IF_NOT_NONE,
|
|
525
514
|
[POP_JUMP_IF_TRUE] = POP_JUMP_IF_TRUE,
|
|
526
515
|
[POP_TOP] = POP_TOP,
|
|
527
|
-
[PREP_RERAISE_STAR] = PREP_RERAISE_STAR,
|
|
528
|
-
[PRINT_EXPR] = PRINT_EXPR,
|
|
529
516
|
[PUSH_EXC_INFO] = PUSH_EXC_INFO,
|
|
530
517
|
[PUSH_NULL] = PUSH_NULL,
|
|
531
518
|
[RAISE_VARARGS] = RAISE_VARARGS,
|
|
532
519
|
[RERAISE] = RERAISE,
|
|
520
|
+
[RESERVED] = RESERVED,
|
|
533
521
|
[RESUME] = RESUME,
|
|
534
|
-
[
|
|
522
|
+
[RETURN_CONST] = RETURN_CONST,
|
|
535
523
|
[RETURN_GENERATOR] = RETURN_GENERATOR,
|
|
536
524
|
[RETURN_VALUE] = RETURN_VALUE,
|
|
537
525
|
[SEND] = SEND,
|
|
526
|
+
[SEND_GEN] = SEND,
|
|
538
527
|
[SETUP_ANNOTATIONS] = SETUP_ANNOTATIONS,
|
|
539
528
|
[SET_ADD] = SET_ADD,
|
|
540
529
|
[SET_UPDATE] = SET_UPDATE,
|
|
541
530
|
[STORE_ATTR] = STORE_ATTR,
|
|
542
|
-
[STORE_ATTR_ADAPTIVE] = STORE_ATTR,
|
|
543
531
|
[STORE_ATTR_INSTANCE_VALUE] = STORE_ATTR,
|
|
544
532
|
[STORE_ATTR_SLOT] = STORE_ATTR,
|
|
545
533
|
[STORE_ATTR_WITH_HINT] = STORE_ATTR,
|
|
@@ -551,17 +539,14 @@ const uint8_t Nuitka_PyOpcode_Deopt[256] = {
|
|
|
551
539
|
[STORE_NAME] = STORE_NAME,
|
|
552
540
|
[STORE_SLICE] = STORE_SLICE,
|
|
553
541
|
[STORE_SUBSCR] = STORE_SUBSCR,
|
|
554
|
-
[STORE_SUBSCR_ADAPTIVE] = STORE_SUBSCR,
|
|
555
542
|
[STORE_SUBSCR_DICT] = STORE_SUBSCR,
|
|
556
543
|
[STORE_SUBSCR_LIST_INT] = STORE_SUBSCR,
|
|
557
544
|
[SWAP] = SWAP,
|
|
558
545
|
[UNARY_INVERT] = UNARY_INVERT,
|
|
559
546
|
[UNARY_NEGATIVE] = UNARY_NEGATIVE,
|
|
560
547
|
[UNARY_NOT] = UNARY_NOT,
|
|
561
|
-
[UNARY_POSITIVE] = UNARY_POSITIVE,
|
|
562
548
|
[UNPACK_EX] = UNPACK_EX,
|
|
563
549
|
[UNPACK_SEQUENCE] = UNPACK_SEQUENCE,
|
|
564
|
-
[UNPACK_SEQUENCE_ADAPTIVE] = UNPACK_SEQUENCE,
|
|
565
550
|
[UNPACK_SEQUENCE_LIST] = UNPACK_SEQUENCE,
|
|
566
551
|
[UNPACK_SEQUENCE_TUPLE] = UNPACK_SEQUENCE,
|
|
567
552
|
[UNPACK_SEQUENCE_TWO_TUPLE] = UNPACK_SEQUENCE,
|
|
@@ -776,6 +761,7 @@ PyObject *Nuitka_PyGen_yf(PyGenObject *gen) {
|
|
|
776
761
|
return yf;
|
|
777
762
|
}
|
|
778
763
|
|
|
764
|
+
#if PYTHON_VERSION < 0x3c0
|
|
779
765
|
// Because it is not exported, we need to duplicate this.
|
|
780
766
|
static PyFrameObject *_Nuitka_PyFrame_New_NoTrack(PyCodeObject *code) {
|
|
781
767
|
int slots = code->co_nlocalsplus + code->co_stacksize;
|
|
@@ -800,17 +786,15 @@ static PyFrameObject *_Nuitka_PyFrame_New_NoTrack(PyCodeObject *code) {
|
|
|
800
786
|
static PyFrameObject *_Nuitka_PyFrame_MakeAndSetFrameObject(PyThreadState *tstate, _PyInterpreterFrame *frame) {
|
|
801
787
|
assert(frame->frame_obj == NULL);
|
|
802
788
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
FETCH_ERROR_OCCURRED(tstate, &error_type, &error_value, &error_traceback);
|
|
789
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
790
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
807
791
|
|
|
808
792
|
PyFrameObject *f = _Nuitka_PyFrame_New_NoTrack(frame->f_code);
|
|
809
793
|
|
|
810
794
|
// Out of memory should be rare.
|
|
811
795
|
assert(f != NULL);
|
|
812
796
|
|
|
813
|
-
|
|
797
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
814
798
|
|
|
815
799
|
// Apparently there are situations where there is a race with what code creates the
|
|
816
800
|
// frame, and this time it's not us.
|
|
@@ -846,7 +830,6 @@ static inline PyFrameObject *_Nuitka_PyFrame_GetFrameObject(PyThreadState *tstat
|
|
|
846
830
|
}
|
|
847
831
|
|
|
848
832
|
// Also not exported, taking over a frame object.
|
|
849
|
-
|
|
850
833
|
static void _Nuitka_take_ownership(PyThreadState *tstate, PyFrameObject *f, _PyInterpreterFrame *frame) {
|
|
851
834
|
assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
|
|
852
835
|
assert(frame->owner != FRAME_CLEARED);
|
|
@@ -915,9 +898,17 @@ static void _Nuitka_PyFrame_Clear(PyThreadState *tstate, _PyInterpreterFrame *fr
|
|
|
915
898
|
#else
|
|
916
899
|
Py_DECREF(frame->f_funcobj);
|
|
917
900
|
#endif
|
|
918
|
-
|
|
901
|
+
|
|
902
|
+
#if PYTHON_VERSION < 0x3d0
|
|
903
|
+
Py_XDECREF(frame->f_code);
|
|
904
|
+
#else
|
|
905
|
+
Py_XDECREF(frame->f_executable);
|
|
906
|
+
#endif
|
|
919
907
|
}
|
|
908
|
+
#endif
|
|
920
909
|
|
|
910
|
+
// Needs to be similar to "gen_send_ex2" implementation in CPython. This is the low
|
|
911
|
+
// end of an uncompiled generator receiving a value.
|
|
921
912
|
static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject *gen, PyObject *arg,
|
|
922
913
|
PyObject **presult, int exc, int closing) {
|
|
923
914
|
_PyInterpreterFrame *frame = (_PyInterpreterFrame *)gen->gi_iframe;
|
|
@@ -955,7 +946,7 @@ static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject
|
|
|
955
946
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "cannot reuse already awaited coroutine");
|
|
956
947
|
} else if (arg && !exc) {
|
|
957
948
|
*presult = Py_None;
|
|
958
|
-
|
|
949
|
+
Py_INCREF_IMMORTAL(*presult);
|
|
959
950
|
return PYGEN_RETURN;
|
|
960
951
|
}
|
|
961
952
|
return PYGEN_ERROR;
|
|
@@ -968,9 +959,13 @@ static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject
|
|
|
968
959
|
Py_INCREF(result);
|
|
969
960
|
_PyFrame_StackPush(frame, result);
|
|
970
961
|
|
|
971
|
-
|
|
962
|
+
#if PYTHON_VERSION < 0x3c0
|
|
963
|
+
frame->previous = CURRENT_TSTATE_INTERPRETER_FRAME(tstate);
|
|
964
|
+
#endif
|
|
965
|
+
|
|
966
|
+
_PyErr_StackItem *prev_exc_info = tstate->exc_info;
|
|
967
|
+
gen->gi_exc_state.previous_item = prev_exc_info;
|
|
972
968
|
|
|
973
|
-
gen->gi_exc_state.previous_item = tstate->exc_info;
|
|
974
969
|
tstate->exc_info = &gen->gi_exc_state;
|
|
975
970
|
|
|
976
971
|
if (exc) {
|
|
@@ -980,15 +975,21 @@ static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject
|
|
|
980
975
|
|
|
981
976
|
gen->gi_frame_state = FRAME_EXECUTING;
|
|
982
977
|
result = _PyEval_EvalFrame(tstate, frame, exc);
|
|
978
|
+
#if PYTHON_VERSION < 0x3c0
|
|
983
979
|
if (gen->gi_frame_state == FRAME_EXECUTING) {
|
|
984
980
|
gen->gi_frame_state = FRAME_COMPLETED;
|
|
985
981
|
}
|
|
986
982
|
tstate->exc_info = gen->gi_exc_state.previous_item;
|
|
987
983
|
gen->gi_exc_state.previous_item = NULL;
|
|
988
984
|
|
|
989
|
-
assert(tstate
|
|
985
|
+
assert(CURRENT_TSTATE_INTERPRETER_FRAME(tstate) == frame->previous);
|
|
990
986
|
frame->previous = NULL;
|
|
991
|
-
|
|
987
|
+
#else
|
|
988
|
+
assert(tstate->exc_info == prev_exc_info);
|
|
989
|
+
assert(gen->gi_exc_state.previous_item == NULL);
|
|
990
|
+
assert(gen->gi_frame_state != FRAME_EXECUTING);
|
|
991
|
+
assert(frame->previous == NULL);
|
|
992
|
+
#endif
|
|
992
993
|
if (result != NULL) {
|
|
993
994
|
if (gen->gi_frame_state == FRAME_SUSPENDED) {
|
|
994
995
|
*presult = result;
|
|
@@ -998,9 +999,12 @@ static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject
|
|
|
998
999
|
assert(result == Py_None || !PyAsyncGen_CheckExact(gen));
|
|
999
1000
|
|
|
1000
1001
|
if (result == Py_None && !PyAsyncGen_CheckExact(gen) && !arg) {
|
|
1002
|
+
// TODO: Have Py_CLEAR_IMMORTAL maybe
|
|
1003
|
+
|
|
1001
1004
|
Py_CLEAR(result);
|
|
1002
1005
|
}
|
|
1003
1006
|
} else {
|
|
1007
|
+
#if PYTHON_VERSION < 0x3c0
|
|
1004
1008
|
if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
|
|
1005
1009
|
const char *msg = "generator raised StopIteration";
|
|
1006
1010
|
if (PyCoro_CheckExact(gen)) {
|
|
@@ -1013,12 +1017,20 @@ static PySendResult Nuitka_PyGen_gen_send_ex2(PyThreadState *tstate, PyGenObject
|
|
|
1013
1017
|
const char *msg = "async generator raised StopAsyncIteration";
|
|
1014
1018
|
_PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);
|
|
1015
1019
|
}
|
|
1020
|
+
#else
|
|
1021
|
+
assert(!PyErr_ExceptionMatches(PyExc_StopIteration));
|
|
1022
|
+
assert(!PyAsyncGen_CheckExact(gen) || !PyErr_ExceptionMatches(PyExc_StopAsyncIteration));
|
|
1023
|
+
|
|
1024
|
+
#endif
|
|
1016
1025
|
}
|
|
1017
1026
|
|
|
1018
1027
|
_PyErr_ClearExcState(&gen->gi_exc_state);
|
|
1019
1028
|
|
|
1020
1029
|
gen->gi_frame_state = FRAME_CLEARED;
|
|
1030
|
+
|
|
1031
|
+
#if PYTHON_VERSION < 0x3c0
|
|
1021
1032
|
_Nuitka_PyFrame_Clear(tstate, frame);
|
|
1033
|
+
#endif
|
|
1022
1034
|
|
|
1023
1035
|
*presult = result;
|
|
1024
1036
|
return result ? PYGEN_RETURN : PYGEN_ERROR;
|
|
@@ -1035,7 +1047,7 @@ static PyObject *Nuitka_PyGen_gen_send_ex(PyThreadState *tstate, PyGenObject *ge
|
|
|
1035
1047
|
} else if (result == Py_None) {
|
|
1036
1048
|
SET_CURRENT_EXCEPTION_TYPE0(tstate, PyExc_StopIteration);
|
|
1037
1049
|
} else {
|
|
1038
|
-
|
|
1050
|
+
Nuitka_SetStopIterationValue(tstate, result);
|
|
1039
1051
|
}
|
|
1040
1052
|
|
|
1041
1053
|
Py_DECREF(result);
|
|
@@ -1052,12 +1064,11 @@ static PyObject *Nuitka_PyGen_gen_send_ex(PyThreadState *tstate, PyGenObject *ge
|
|
|
1052
1064
|
// value of exception_type will not be NULL, but the actual exception will not necessarily
|
|
1053
1065
|
// be normalized.
|
|
1054
1066
|
static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenObject *gen, int close_on_genexit,
|
|
1055
|
-
|
|
1056
|
-
PyTracebackObject *exception_tb) {
|
|
1067
|
+
struct Nuitka_ExceptionPreservationItem *exception_state) {
|
|
1057
1068
|
#if _DEBUG_GENERATOR
|
|
1058
1069
|
PRINT_STRING("Nuitka_UncompiledGenerator_throw: Enter ");
|
|
1059
1070
|
PRINT_ITEM((PyObject *)gen);
|
|
1060
|
-
|
|
1071
|
+
PRINT_EXCEPTION_STATE(exception_state);
|
|
1061
1072
|
PRINT_NEW_LINE();
|
|
1062
1073
|
#endif
|
|
1063
1074
|
|
|
@@ -1066,7 +1077,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1066
1077
|
if (yf != NULL) {
|
|
1067
1078
|
_PyInterpreterFrame *frame = (_PyInterpreterFrame *)gen->gi_iframe;
|
|
1068
1079
|
|
|
1069
|
-
if (close_on_genexit &&
|
|
1080
|
+
if (close_on_genexit && EXCEPTION_STATE_MATCH_BOOL_SINGLE(tstate, exception_state, PyExc_GeneratorExit)) {
|
|
1070
1081
|
PyFrameState state = (PyFrameState)gen->gi_frame_state;
|
|
1071
1082
|
gen->gi_frame_state = FRAME_EXECUTING;
|
|
1072
1083
|
|
|
@@ -1079,9 +1090,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1079
1090
|
if (err < 0) {
|
|
1080
1091
|
// Releasing exception, we are done with it, raising instead the error just
|
|
1081
1092
|
// occurred.
|
|
1082
|
-
|
|
1083
|
-
Py_XDECREF(exception_value);
|
|
1084
|
-
Py_XDECREF(exception_tb);
|
|
1093
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1085
1094
|
|
|
1086
1095
|
return Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 0);
|
|
1087
1096
|
}
|
|
@@ -1093,17 +1102,16 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1093
1102
|
PyObject *ret;
|
|
1094
1103
|
|
|
1095
1104
|
if (PyGen_CheckExact(yf) || PyCoro_CheckExact(yf)) {
|
|
1096
|
-
_PyInterpreterFrame *prev = tstate
|
|
1105
|
+
_PyInterpreterFrame *prev = CURRENT_TSTATE_INTERPRETER_FRAME(tstate);
|
|
1097
1106
|
frame->previous = prev;
|
|
1098
|
-
tstate
|
|
1107
|
+
CURRENT_TSTATE_INTERPRETER_FRAME(tstate) = frame;
|
|
1099
1108
|
PyFrameState state = (PyFrameState)gen->gi_frame_state;
|
|
1100
1109
|
gen->gi_frame_state = FRAME_EXECUTING;
|
|
1101
1110
|
|
|
1102
1111
|
// Handing exception ownership to "Nuitka_UncompiledGenerator_throw".
|
|
1103
|
-
ret = Nuitka_UncompiledGenerator_throw(tstate, (PyGenObject *)yf, close_on_genexit,
|
|
1104
|
-
exception_value, exception_tb);
|
|
1112
|
+
ret = Nuitka_UncompiledGenerator_throw(tstate, (PyGenObject *)yf, close_on_genexit, exception_state);
|
|
1105
1113
|
gen->gi_frame_state = state;
|
|
1106
|
-
tstate
|
|
1114
|
+
CURRENT_TSTATE_INTERPRETER_FRAME(tstate) = prev;
|
|
1107
1115
|
frame->previous = NULL;
|
|
1108
1116
|
} else {
|
|
1109
1117
|
#if 0
|
|
@@ -1129,21 +1137,19 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1129
1137
|
PyFrameState state = (PyFrameState)gen->gi_frame_state;
|
|
1130
1138
|
gen->gi_frame_state = FRAME_EXECUTING;
|
|
1131
1139
|
|
|
1132
|
-
|
|
1133
|
-
ret = PyObject_CallFunctionObjArgs(meth, exception_type, exception_value, exception_tb, NULL);
|
|
1140
|
+
ret = Nuitka_CallGeneratorThrowMethod(meth, exception_state);
|
|
1134
1141
|
|
|
1135
1142
|
gen->gi_frame_state = state;
|
|
1136
1143
|
|
|
1137
1144
|
// Releasing exception, we are done with it.
|
|
1138
|
-
|
|
1139
|
-
Py_XDECREF(exception_value);
|
|
1140
|
-
Py_XDECREF(exception_tb);
|
|
1145
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1141
1146
|
|
|
1142
1147
|
Py_DECREF(meth);
|
|
1143
1148
|
}
|
|
1144
1149
|
Py_DECREF(yf);
|
|
1145
1150
|
|
|
1146
1151
|
if (ret == NULL) {
|
|
1152
|
+
#if PYTHON_VERSION < 0x3c0
|
|
1147
1153
|
PyObject *val;
|
|
1148
1154
|
assert(gen->gi_frame_state < FRAME_CLEARED);
|
|
1149
1155
|
ret = _PyFrame_StackPop((_PyInterpreterFrame *)gen->gi_iframe);
|
|
@@ -1156,7 +1162,9 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1156
1162
|
if (_PyGen_FetchStopIterationValue(&val) == 0) {
|
|
1157
1163
|
ret = Nuitka_PyGen_gen_send_ex(tstate, gen, val, 0, 0);
|
|
1158
1164
|
Py_DECREF(val);
|
|
1159
|
-
} else
|
|
1165
|
+
} else
|
|
1166
|
+
#endif
|
|
1167
|
+
{
|
|
1160
1168
|
ret = Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 0);
|
|
1161
1169
|
}
|
|
1162
1170
|
}
|
|
@@ -1165,51 +1173,19 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1165
1173
|
}
|
|
1166
1174
|
|
|
1167
1175
|
throw_here:
|
|
1168
|
-
if (exception_tb == (PyTracebackObject *)Py_None) {
|
|
1169
|
-
exception_tb = NULL;
|
|
1170
|
-
Py_DECREF(exception_tb);
|
|
1171
|
-
} else if (exception_tb != NULL && !PyTraceBack_Check(exception_tb)) {
|
|
1172
|
-
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "throw() third argument must be a traceback object");
|
|
1173
|
-
goto failed_throw;
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
1176
|
tstate = _PyThreadState_GET();
|
|
1177
1177
|
|
|
1178
|
-
if (
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
if (exception_value && exception_value != Py_None) {
|
|
1182
|
-
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
|
|
1183
|
-
"instance exception may not have a separate value");
|
|
1184
|
-
goto failed_throw;
|
|
1185
|
-
} else {
|
|
1186
|
-
// Normalize manually here via APIs
|
|
1187
|
-
Py_XDECREF(exception_value);
|
|
1188
|
-
exception_value = exception_type;
|
|
1189
|
-
exception_type = PyExceptionInstance_Class(exception_type);
|
|
1190
|
-
Py_INCREF(exception_type);
|
|
1191
|
-
|
|
1192
|
-
if (exception_tb == NULL) {
|
|
1193
|
-
// Can remain NULL if no traceback is available.
|
|
1194
|
-
exception_tb = GET_EXCEPTION_TRACEBACK(exception_value);
|
|
1195
|
-
Py_XINCREF(exception_tb);
|
|
1196
|
-
}
|
|
1197
|
-
}
|
|
1198
|
-
} else {
|
|
1199
|
-
// Raisable
|
|
1200
|
-
SET_CURRENT_EXCEPTION_TYPE_COMPLAINT(
|
|
1201
|
-
"exceptions must be classes or instances deriving from BaseException, not %s", exception_type);
|
|
1202
|
-
goto failed_throw;
|
|
1178
|
+
if (unlikely(_Nuitka_Generator_check_throw(tstate, exception_state) == false)) {
|
|
1179
|
+
// Exception was released by _Nuitka_Generator_check_throw already.
|
|
1180
|
+
return NULL;
|
|
1203
1181
|
}
|
|
1204
1182
|
|
|
1205
|
-
|
|
1183
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
1206
1184
|
|
|
1207
1185
|
return Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 1);
|
|
1208
1186
|
|
|
1209
1187
|
failed_throw:
|
|
1210
|
-
|
|
1211
|
-
Py_XDECREF(exception_value);
|
|
1212
|
-
Py_XDECREF(exception_tb);
|
|
1188
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1213
1189
|
|
|
1214
1190
|
return NULL;
|
|
1215
1191
|
}
|
|
@@ -1379,6 +1355,7 @@ static PyObject *Nuitka_PyGen_gen_send_ex(PyThreadState *tstate, PyGenObject *ge
|
|
|
1379
1355
|
Nuitka_SetStopIterationValue(tstate, result);
|
|
1380
1356
|
}
|
|
1381
1357
|
|
|
1358
|
+
// TODO: Add Py_CLEAR_IMMORTAL maybe
|
|
1382
1359
|
Py_CLEAR(result);
|
|
1383
1360
|
}
|
|
1384
1361
|
#if PYTHON_VERSION >= 0x350
|
|
@@ -1446,6 +1423,7 @@ static PyObject *Nuitka_PyGen_gen_send_ex(PyThreadState *tstate, PyGenObject *ge
|
|
|
1446
1423
|
}
|
|
1447
1424
|
assert(result == Py_None || !PyAsyncGen_CheckExact(gen));
|
|
1448
1425
|
if (result == Py_None && !PyAsyncGen_CheckExact(gen) && !arg) {
|
|
1426
|
+
// TODO: Add Py_CLEAR_IMMORTAL maybe
|
|
1449
1427
|
Py_CLEAR(result);
|
|
1450
1428
|
}
|
|
1451
1429
|
} else {
|
|
@@ -1482,19 +1460,19 @@ static PyObject *Nuitka_PyGen_gen_send_ex(PyThreadState *tstate, PyGenObject *ge
|
|
|
1482
1460
|
// value of exception_type will not be NULL, but the actual exception will not necessarily
|
|
1483
1461
|
// be normalized.
|
|
1484
1462
|
static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenObject *gen, int close_on_genexit,
|
|
1485
|
-
|
|
1486
|
-
PyTracebackObject *exception_tb) {
|
|
1463
|
+
struct Nuitka_ExceptionPreservationItem *exception_state) {
|
|
1487
1464
|
#if _DEBUG_GENERATOR
|
|
1488
1465
|
PRINT_STRING("Nuitka_UncompiledGenerator_throw: Enter ");
|
|
1489
1466
|
PRINT_ITEM((PyObject *)gen);
|
|
1490
|
-
|
|
1467
|
+
PRINT_EXCEPTION_STATE(exception_state);
|
|
1491
1468
|
PRINT_NEW_LINE();
|
|
1492
1469
|
#endif
|
|
1493
1470
|
|
|
1494
1471
|
PyObject *yf = Nuitka_PyGen_yf(gen);
|
|
1495
1472
|
|
|
1496
1473
|
if (yf != NULL) {
|
|
1497
|
-
if (close_on_genexit &&
|
|
1474
|
+
if (close_on_genexit &&
|
|
1475
|
+
EXCEPTION_MATCH_BOOL_SINGLE(tstate, exception_state->exception_type, PyExc_GeneratorExit)) {
|
|
1498
1476
|
#if PYTHON_VERSION < 0x3a0
|
|
1499
1477
|
gen->gi_running = 1;
|
|
1500
1478
|
#else
|
|
@@ -1513,9 +1491,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1513
1491
|
if (err < 0) {
|
|
1514
1492
|
// Releasing exception, we are done with it, raising instead the error just
|
|
1515
1493
|
// occurred.
|
|
1516
|
-
|
|
1517
|
-
Py_XDECREF(exception_value);
|
|
1518
|
-
Py_XDECREF(exception_tb);
|
|
1494
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1519
1495
|
|
|
1520
1496
|
return Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 0);
|
|
1521
1497
|
}
|
|
@@ -1539,8 +1515,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1539
1515
|
#endif
|
|
1540
1516
|
|
|
1541
1517
|
// Handing exception ownership to "Nuitka_UncompiledGenerator_throw".
|
|
1542
|
-
ret = Nuitka_UncompiledGenerator_throw(tstate, (PyGenObject *)yf, close_on_genexit,
|
|
1543
|
-
exception_value, exception_tb);
|
|
1518
|
+
ret = Nuitka_UncompiledGenerator_throw(tstate, (PyGenObject *)yf, close_on_genexit, exception_state);
|
|
1544
1519
|
|
|
1545
1520
|
#if PYTHON_VERSION < 0x3a0
|
|
1546
1521
|
gen->gi_running = 0;
|
|
@@ -1562,9 +1537,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1562
1537
|
Py_DECREF(yf);
|
|
1563
1538
|
|
|
1564
1539
|
// Releasing exception, we are done with it.
|
|
1565
|
-
|
|
1566
|
-
Py_XDECREF(exception_value);
|
|
1567
|
-
Py_XDECREF(exception_tb);
|
|
1540
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1568
1541
|
|
|
1569
1542
|
return NULL;
|
|
1570
1543
|
}
|
|
@@ -1583,7 +1556,8 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1583
1556
|
gen->gi_frame->f_state = FRAME_EXECUTING;
|
|
1584
1557
|
#endif
|
|
1585
1558
|
// TODO: Faster call code should be used.
|
|
1586
|
-
ret =
|
|
1559
|
+
ret = Nuitka_CallGeneratorThrowMethod(meth, exception_state);
|
|
1560
|
+
|
|
1587
1561
|
#if PYTHON_VERSION < 0x3a0
|
|
1588
1562
|
gen->gi_running = 0;
|
|
1589
1563
|
#else
|
|
@@ -1591,9 +1565,7 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1591
1565
|
#endif
|
|
1592
1566
|
|
|
1593
1567
|
// Releasing exception, we are done with it.
|
|
1594
|
-
|
|
1595
|
-
Py_XDECREF(exception_value);
|
|
1596
|
-
Py_XDECREF(exception_tb);
|
|
1568
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
1597
1569
|
|
|
1598
1570
|
Py_DECREF(meth);
|
|
1599
1571
|
}
|
|
@@ -1616,10 +1588,10 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1616
1588
|
gen->gi_frame->f_lasti += 1;
|
|
1617
1589
|
#endif
|
|
1618
1590
|
|
|
1619
|
-
if (_PyGen_FetchStopIterationValue(&exception_value) == 0) {
|
|
1620
|
-
ret = Nuitka_PyGen_gen_send_ex(tstate, gen, exception_value, 0, 0);
|
|
1591
|
+
if (_PyGen_FetchStopIterationValue(&exception_state->exception_value) == 0) {
|
|
1592
|
+
ret = Nuitka_PyGen_gen_send_ex(tstate, gen, exception_state->exception_value, 0, 0);
|
|
1621
1593
|
|
|
1622
|
-
Py_DECREF(exception_value);
|
|
1594
|
+
Py_DECREF(exception_state->exception_value);
|
|
1623
1595
|
} else {
|
|
1624
1596
|
ret = Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 0);
|
|
1625
1597
|
}
|
|
@@ -1629,13 +1601,13 @@ static PyObject *Nuitka_UncompiledGenerator_throw(PyThreadState *tstate, PyGenOb
|
|
|
1629
1601
|
|
|
1630
1602
|
throw_here:
|
|
1631
1603
|
// We continue to have exception ownership here.
|
|
1632
|
-
if (unlikely(
|
|
1633
|
-
// Exception was released by
|
|
1604
|
+
if (unlikely(_Nuitka_Generator_check_throw(tstate, exception_state) == false)) {
|
|
1605
|
+
// Exception was released by _Nuitka_Generator_check_throw already.
|
|
1634
1606
|
return NULL;
|
|
1635
1607
|
}
|
|
1636
1608
|
|
|
1637
1609
|
// Transfer exception ownership to published exception.
|
|
1638
|
-
|
|
1610
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
1639
1611
|
|
|
1640
1612
|
return Nuitka_PyGen_gen_send_ex(tstate, gen, Py_None, 1, 1);
|
|
1641
1613
|
}
|
|
@@ -1734,10 +1706,25 @@ static PyObject *Nuitka_PyGen_gen_close(PyThreadState *tstate, PyGenObject *gen,
|
|
|
1734
1706
|
if (PyErr_ExceptionMatches(PyExc_StopIteration) || PyErr_ExceptionMatches(PyExc_GeneratorExit)) {
|
|
1735
1707
|
CLEAR_ERROR_OCCURRED(tstate);
|
|
1736
1708
|
|
|
1737
|
-
|
|
1709
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
1738
1710
|
return Py_None;
|
|
1739
1711
|
}
|
|
1740
1712
|
return NULL;
|
|
1741
1713
|
}
|
|
1742
1714
|
|
|
1743
1715
|
#endif
|
|
1716
|
+
|
|
1717
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1718
|
+
// integrates with CPython, but also works on its own.
|
|
1719
|
+
//
|
|
1720
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1721
|
+
// you may not use this file except in compliance with the License.
|
|
1722
|
+
// You may obtain a copy of the License at
|
|
1723
|
+
//
|
|
1724
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1725
|
+
//
|
|
1726
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1727
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1728
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1729
|
+
// See the License for the specific language governing permissions and
|
|
1730
|
+
// limitations under the License.
|