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 Asyncgen.
|
|
19
4
|
*
|
|
20
5
|
* Unlike in CPython, we have one type for just asyncgen, this doesn't do
|
|
@@ -135,11 +120,11 @@ static int Nuitka_Asyncgen_set_qualname(struct Nuitka_AsyncgenObject *asyncgen,
|
|
|
135
120
|
static PyObject *Nuitka_Asyncgen_get_ag_await(struct Nuitka_AsyncgenObject *asyncgen) {
|
|
136
121
|
CHECK_OBJECT(asyncgen);
|
|
137
122
|
|
|
138
|
-
if (asyncgen->
|
|
139
|
-
Py_INCREF(asyncgen->
|
|
140
|
-
return asyncgen->
|
|
123
|
+
if (asyncgen->m_yield_from) {
|
|
124
|
+
Py_INCREF(asyncgen->m_yield_from);
|
|
125
|
+
return asyncgen->m_yield_from;
|
|
141
126
|
} else {
|
|
142
|
-
|
|
127
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
143
128
|
return Py_None;
|
|
144
129
|
}
|
|
145
130
|
}
|
|
@@ -169,7 +154,7 @@ static PyObject *Nuitka_Asyncgen_get_frame(struct Nuitka_AsyncgenObject *asyncge
|
|
|
169
154
|
Py_INCREF(asyncgen->m_frame);
|
|
170
155
|
return (PyObject *)asyncgen->m_frame;
|
|
171
156
|
} else {
|
|
172
|
-
|
|
157
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
173
158
|
return Py_None;
|
|
174
159
|
}
|
|
175
160
|
}
|
|
@@ -200,23 +185,23 @@ static PyObject *Nuitka_YieldFromAsyncgenCore(PyThreadState *tstate, struct Nuit
|
|
|
200
185
|
CHECK_OBJECT(asyncgen);
|
|
201
186
|
CHECK_OBJECT_X(send_value);
|
|
202
187
|
|
|
203
|
-
PyObject *
|
|
204
|
-
CHECK_OBJECT(
|
|
188
|
+
PyObject *yield_from = asyncgen->m_yield_from;
|
|
189
|
+
CHECK_OBJECT(yield_from);
|
|
205
190
|
|
|
206
191
|
// Need to make it unaccessible while using it.
|
|
207
|
-
asyncgen->
|
|
192
|
+
asyncgen->m_yield_from = NULL;
|
|
208
193
|
|
|
209
194
|
PyObject *returned_value;
|
|
210
|
-
PyObject *yielded = _Nuitka_YieldFromCore(tstate,
|
|
195
|
+
PyObject *yielded = _Nuitka_YieldFromCore(tstate, yield_from, send_value, &returned_value, mode);
|
|
211
196
|
|
|
212
197
|
if (yielded == NULL) {
|
|
213
|
-
assert(asyncgen->
|
|
214
|
-
Py_DECREF(
|
|
198
|
+
assert(asyncgen->m_yield_from == NULL);
|
|
199
|
+
Py_DECREF(yield_from);
|
|
215
200
|
|
|
216
201
|
yielded = ((asyncgen_code)asyncgen->m_code)(tstate, asyncgen, returned_value);
|
|
217
202
|
} else {
|
|
218
|
-
assert(asyncgen->
|
|
219
|
-
asyncgen->
|
|
203
|
+
assert(asyncgen->m_yield_from == NULL);
|
|
204
|
+
asyncgen->m_yield_from = yield_from;
|
|
220
205
|
}
|
|
221
206
|
|
|
222
207
|
return yielded;
|
|
@@ -295,28 +280,24 @@ static PyObject *Nuitka_YieldFromAsyncgenInitial(PyThreadState *tstate, struct N
|
|
|
295
280
|
static PyObject *Nuitka_AsyncgenValueWrapper_New(PyObject *value);
|
|
296
281
|
|
|
297
282
|
static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_AsyncgenObject *asyncgen,
|
|
298
|
-
PyObject *value, bool closing,
|
|
299
|
-
|
|
283
|
+
PyObject *value, bool closing,
|
|
284
|
+
struct Nuitka_ExceptionPreservationItem *exception_state,
|
|
300
285
|
PyObject **result) {
|
|
301
286
|
CHECK_OBJECT(asyncgen);
|
|
302
287
|
assert(Nuitka_Asyncgen_Check((PyObject *)asyncgen));
|
|
303
288
|
CHECK_OBJECT_X(value);
|
|
304
|
-
|
|
305
|
-
CHECK_OBJECT_X(exception_value);
|
|
306
|
-
CHECK_OBJECT_X(exception_tb);
|
|
289
|
+
CHECK_EXCEPTION_STATE_X(exception_state);
|
|
307
290
|
|
|
308
291
|
#if _DEBUG_ASYNCGEN
|
|
309
292
|
PRINT_ASYNCGEN_STATUS("Enter", asyncgen);
|
|
310
293
|
PRINT_COROUTINE_VALUE("value", value);
|
|
311
|
-
|
|
294
|
+
PRINT_EXCEPTION_STATE(exception_state);
|
|
312
295
|
PRINT_CURRENT_EXCEPTION();
|
|
313
296
|
PRINT_NEW_LINE();
|
|
314
297
|
#endif
|
|
315
298
|
|
|
316
299
|
if (value != NULL) {
|
|
317
|
-
|
|
318
|
-
assert(exception_value == NULL);
|
|
319
|
-
assert(exception_tb == NULL);
|
|
300
|
+
ASSERT_EMPTY_EXCEPTION_STATE(exception_state);
|
|
320
301
|
}
|
|
321
302
|
|
|
322
303
|
if (asyncgen->m_status == status_Unused && value != NULL && value != Py_None) {
|
|
@@ -357,11 +338,11 @@ static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_
|
|
|
357
338
|
asyncgen->m_running = true;
|
|
358
339
|
|
|
359
340
|
// Check for thrown exception, and publish it.
|
|
360
|
-
if (unlikely(
|
|
341
|
+
if (unlikely(HAS_EXCEPTION_STATE(exception_state))) {
|
|
361
342
|
assert(value == NULL);
|
|
362
343
|
|
|
363
344
|
// Transfer exception ownership to published.
|
|
364
|
-
|
|
345
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
365
346
|
}
|
|
366
347
|
|
|
367
348
|
if (asyncgen->m_frame) {
|
|
@@ -378,7 +359,7 @@ static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_
|
|
|
378
359
|
|
|
379
360
|
PyObject *yielded;
|
|
380
361
|
|
|
381
|
-
if (asyncgen->
|
|
362
|
+
if (asyncgen->m_yield_from == NULL) {
|
|
382
363
|
yielded = ((asyncgen_code)asyncgen->m_code)(tstate, asyncgen, value);
|
|
383
364
|
} else {
|
|
384
365
|
// This does not release the value if any, so we need to do it afterwards.
|
|
@@ -386,16 +367,14 @@ static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_
|
|
|
386
367
|
Py_XDECREF(value);
|
|
387
368
|
}
|
|
388
369
|
|
|
389
|
-
// If the asyncgen returns with
|
|
370
|
+
// If the asyncgen returns with m_yield_from set, it wants us to yield
|
|
390
371
|
// from that value from now on.
|
|
391
|
-
while (yielded == NULL && asyncgen->
|
|
372
|
+
while (yielded == NULL && asyncgen->m_yield_from != NULL) {
|
|
392
373
|
yielded = Nuitka_YieldFromAsyncgenNext(tstate, asyncgen);
|
|
393
374
|
}
|
|
394
375
|
|
|
395
376
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
396
377
|
|
|
397
|
-
tstate = PyThreadState_GET();
|
|
398
|
-
|
|
399
378
|
// Remove the back frame from asyncgen if it's there.
|
|
400
379
|
if (asyncgen->m_frame) {
|
|
401
380
|
// assert(tstate->frame == &asyncgen->m_frame->m_frame);
|
|
@@ -441,42 +420,21 @@ static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_
|
|
|
441
420
|
PyObject *error_occurred = GET_ERROR_OCCURRED(tstate);
|
|
442
421
|
|
|
443
422
|
if (error_occurred == PyExc_StopIteration || error_occurred == PyExc_StopAsyncIteration) {
|
|
444
|
-
|
|
445
|
-
PyTracebackObject *saved_exception_tb;
|
|
446
|
-
|
|
447
|
-
// TODO: For Python3.12, this kind of code ought to use tstate methods entirely.
|
|
448
|
-
FETCH_ERROR_OCCURRED(tstate, &saved_exception_type, &saved_exception_value, &saved_exception_tb);
|
|
449
|
-
NORMALIZE_EXCEPTION(tstate, &saved_exception_type, &saved_exception_value, &saved_exception_tb);
|
|
450
|
-
|
|
423
|
+
char const *message;
|
|
451
424
|
if (error_occurred == PyExc_StopIteration) {
|
|
452
|
-
|
|
425
|
+
message = "async generator raised StopIteration";
|
|
453
426
|
} else {
|
|
454
|
-
|
|
455
|
-
"async generator raised StopAsyncIteration");
|
|
427
|
+
message = "async generator raised StopAsyncIteration";
|
|
456
428
|
}
|
|
457
429
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
RAISE_EXCEPTION_WITH_CAUSE(tstate, &exception_type, &exception_value, &exception_tb,
|
|
461
|
-
saved_exception_value);
|
|
462
|
-
|
|
463
|
-
CHECK_OBJECT(exception_value);
|
|
464
|
-
CHECK_OBJECT(saved_exception_value);
|
|
465
|
-
|
|
466
|
-
Py_INCREF(saved_exception_value);
|
|
467
|
-
PyException_SetContext(exception_value, saved_exception_value);
|
|
468
|
-
|
|
469
|
-
Py_DECREF(saved_exception_type);
|
|
470
|
-
Py_XDECREF(saved_exception_tb);
|
|
471
|
-
|
|
472
|
-
RESTORE_ERROR_OCCURRED(tstate, exception_type, exception_value, exception_tb);
|
|
430
|
+
RAISE_RUNTIME_ERROR_RAISED_STOP_ITERATION(tstate, message);
|
|
473
431
|
return PYGEN_ERROR;
|
|
474
432
|
}
|
|
475
433
|
|
|
476
434
|
return PYGEN_ERROR;
|
|
477
435
|
} else {
|
|
478
436
|
// For normal yield, wrap the result value before returning.
|
|
479
|
-
if (asyncgen->
|
|
437
|
+
if (asyncgen->m_yield_from == NULL) {
|
|
480
438
|
// Transferred ownership to constructor of Nuitka_AsyncgenValueWrapper
|
|
481
439
|
PyObject *wrapped = Nuitka_AsyncgenValueWrapper_New(yielded);
|
|
482
440
|
yielded = wrapped;
|
|
@@ -491,21 +449,17 @@ static PySendResult _Nuitka_Asyncgen_sendR(PyThreadState *tstate, struct Nuitka_
|
|
|
491
449
|
Py_XDECREF(value);
|
|
492
450
|
|
|
493
451
|
// Release exception if any, we are finished with it and will raise another.
|
|
494
|
-
|
|
495
|
-
Py_XDECREF(exception_value);
|
|
496
|
-
Py_XDECREF(exception_tb);
|
|
452
|
+
RELEASE_ERROR_OCCURRED_STATE_X(exception_state);
|
|
497
453
|
|
|
498
454
|
return PYGEN_RETURN;
|
|
499
455
|
}
|
|
500
456
|
}
|
|
501
457
|
|
|
502
458
|
static PyObject *_Nuitka_Asyncgen_send(PyThreadState *tstate, struct Nuitka_AsyncgenObject *asyncgen, PyObject *value,
|
|
503
|
-
bool closing,
|
|
504
|
-
PyTracebackObject *exception_tb) {
|
|
459
|
+
bool closing, struct Nuitka_ExceptionPreservationItem *exception_state) {
|
|
505
460
|
|
|
506
461
|
PyObject *result;
|
|
507
|
-
PySendResult res = _Nuitka_Asyncgen_sendR(tstate, asyncgen, value, closing,
|
|
508
|
-
exception_tb, &result);
|
|
462
|
+
PySendResult res = _Nuitka_Asyncgen_sendR(tstate, asyncgen, value, closing, exception_state, &result);
|
|
509
463
|
|
|
510
464
|
switch (res) {
|
|
511
465
|
case PYGEN_RETURN:
|
|
@@ -528,9 +482,10 @@ static bool _Nuitka_Asyncgen_close(PyThreadState *tstate, struct Nuitka_Asyncgen
|
|
|
528
482
|
CHECK_OBJECT(asyncgen);
|
|
529
483
|
|
|
530
484
|
if (asyncgen->m_status == status_Running) {
|
|
531
|
-
|
|
485
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
486
|
+
SET_EXCEPTION_PRESERVATION_STATE_FROM_ARGS(tstate, &exception_state, PyExc_GeneratorExit, NULL, NULL);
|
|
532
487
|
|
|
533
|
-
PyObject *result = _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, true,
|
|
488
|
+
PyObject *result = _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, true, &exception_state);
|
|
534
489
|
|
|
535
490
|
if (unlikely(result)) {
|
|
536
491
|
Py_DECREF(result);
|
|
@@ -545,8 +500,8 @@ static bool _Nuitka_Asyncgen_close(PyThreadState *tstate, struct Nuitka_Asyncgen
|
|
|
545
500
|
return true;
|
|
546
501
|
}
|
|
547
502
|
|
|
548
|
-
static bool
|
|
549
|
-
|
|
503
|
+
static bool _Nuitka_Generator_check_throw(PyThreadState *tstate,
|
|
504
|
+
struct Nuitka_ExceptionPreservationItem *exception_state);
|
|
550
505
|
|
|
551
506
|
// This function is called when yielding to a asyncgen through "_Nuitka_YieldFromPassExceptionTo"
|
|
552
507
|
// and potentially wrapper objects used by generators, or by the throw method itself.
|
|
@@ -555,41 +510,35 @@ static bool _Nuitka_Generator_check_throw2(PyThreadState *tstate, PyObject **exc
|
|
|
555
510
|
// value of exception_type will not be NULL, but the actual exception will not necessarily
|
|
556
511
|
// be normalized.
|
|
557
512
|
static PyObject *_Nuitka_Asyncgen_throw2(PyThreadState *tstate, struct Nuitka_AsyncgenObject *asyncgen,
|
|
558
|
-
bool close_on_genexit,
|
|
559
|
-
|
|
513
|
+
bool close_on_genexit,
|
|
514
|
+
struct Nuitka_ExceptionPreservationItem *exception_state) {
|
|
560
515
|
CHECK_OBJECT(asyncgen);
|
|
561
516
|
assert(Nuitka_Asyncgen_Check((PyObject *)asyncgen));
|
|
562
|
-
|
|
563
|
-
CHECK_OBJECT_X(exception_value);
|
|
564
|
-
CHECK_OBJECT_X(exception_tb);
|
|
517
|
+
CHECK_EXCEPTION_STATE(exception_state);
|
|
565
518
|
|
|
566
519
|
#if _DEBUG_ASYNCGEN
|
|
567
520
|
PRINT_ASYNCGEN_STATUS("Enter", asyncgen);
|
|
568
|
-
PRINT_COROUTINE_VALUE("
|
|
569
|
-
|
|
521
|
+
PRINT_COROUTINE_VALUE("yield_from", asyncgen->m_yield_from);
|
|
522
|
+
PRINT_EXCEPTION_STATE(exception_state);
|
|
570
523
|
PRINT_NEW_LINE();
|
|
571
524
|
#endif
|
|
572
525
|
|
|
573
|
-
if (asyncgen->
|
|
526
|
+
if (asyncgen->m_yield_from != NULL) {
|
|
574
527
|
// TODO: This check is not done for coroutines, correct?
|
|
575
528
|
if (close_on_genexit) {
|
|
576
|
-
if (
|
|
529
|
+
if (EXCEPTION_STATE_MATCH_BOOL_SINGLE(tstate, exception_state, PyExc_GeneratorExit)) {
|
|
577
530
|
// Asynchronous generators need to close the yield_from.
|
|
578
531
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
579
|
-
bool res = Nuitka_gen_close_iter(tstate, asyncgen->
|
|
532
|
+
bool res = Nuitka_gen_close_iter(tstate, asyncgen->m_yield_from);
|
|
580
533
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
581
534
|
|
|
582
535
|
if (res == false) {
|
|
583
536
|
// Release exception, we are done with it now and pick up the new one.
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
Py_XDECREF(exception_tb);
|
|
587
|
-
|
|
588
|
-
FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
|
|
537
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
538
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
589
539
|
}
|
|
590
540
|
|
|
591
|
-
return _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, false,
|
|
592
|
-
exception_tb);
|
|
541
|
+
return _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, false, exception_state);
|
|
593
542
|
}
|
|
594
543
|
}
|
|
595
544
|
|
|
@@ -597,56 +546,55 @@ static PyObject *_Nuitka_Asyncgen_throw2(PyThreadState *tstate, struct Nuitka_As
|
|
|
597
546
|
|
|
598
547
|
#if _DEBUG_ASYNCGEN
|
|
599
548
|
PRINT_ASYNCGEN_STATUS("Passing to yielded from", asyncgen);
|
|
600
|
-
PRINT_COROUTINE_VALUE("
|
|
549
|
+
PRINT_COROUTINE_VALUE("m_yield_from", asyncgen->m_yield_from);
|
|
601
550
|
PRINT_NEW_LINE();
|
|
602
551
|
#endif
|
|
603
552
|
|
|
604
553
|
#if NUITKA_UNCOMPILED_THROW_INTEGRATION
|
|
605
|
-
if (PyGen_CheckExact(asyncgen->
|
|
606
|
-
PyGenObject *gen = (PyGenObject *)asyncgen->
|
|
554
|
+
if (PyGen_CheckExact(asyncgen->m_yield_from) || PyCoro_CheckExact(asyncgen->m_yield_from)) {
|
|
555
|
+
PyGenObject *gen = (PyGenObject *)asyncgen->m_yield_from;
|
|
607
556
|
|
|
608
557
|
// Transferred exception ownership to "Nuitka_UncompiledGenerator_throw".
|
|
609
558
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
610
|
-
ret = Nuitka_UncompiledGenerator_throw(tstate, gen, 1,
|
|
559
|
+
ret = Nuitka_UncompiledGenerator_throw(tstate, gen, 1, exception_state);
|
|
611
560
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
612
561
|
} else
|
|
613
562
|
#endif
|
|
614
|
-
if (Nuitka_Generator_Check(asyncgen->
|
|
615
|
-
struct Nuitka_GeneratorObject *gen = ((struct Nuitka_GeneratorObject *)asyncgen->
|
|
563
|
+
if (Nuitka_Generator_Check(asyncgen->m_yield_from)) {
|
|
564
|
+
struct Nuitka_GeneratorObject *gen = ((struct Nuitka_GeneratorObject *)asyncgen->m_yield_from);
|
|
616
565
|
// Transferred exception ownership to "_Nuitka_Generator_throw2".
|
|
617
566
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
618
|
-
ret = _Nuitka_Generator_throw2(tstate, gen,
|
|
567
|
+
ret = _Nuitka_Generator_throw2(tstate, gen, exception_state);
|
|
619
568
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
620
|
-
} else if (Nuitka_Coroutine_Check(asyncgen->
|
|
621
|
-
struct Nuitka_CoroutineObject *coro = ((struct Nuitka_CoroutineObject *)asyncgen->
|
|
569
|
+
} else if (Nuitka_Coroutine_Check(asyncgen->m_yield_from)) {
|
|
570
|
+
struct Nuitka_CoroutineObject *coro = ((struct Nuitka_CoroutineObject *)asyncgen->m_yield_from);
|
|
622
571
|
// Transferred exception ownership to "_Nuitka_Coroutine_throw2".
|
|
623
572
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
624
|
-
ret = _Nuitka_Coroutine_throw2(tstate, coro, true,
|
|
573
|
+
ret = _Nuitka_Coroutine_throw2(tstate, coro, true, exception_state);
|
|
625
574
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
626
|
-
} else if (Nuitka_CoroutineWrapper_Check(asyncgen->
|
|
575
|
+
} else if (Nuitka_CoroutineWrapper_Check(asyncgen->m_yield_from)) {
|
|
627
576
|
struct Nuitka_CoroutineObject *coro =
|
|
628
|
-
((struct Nuitka_CoroutineWrapperObject *)asyncgen->
|
|
577
|
+
((struct Nuitka_CoroutineWrapperObject *)asyncgen->m_yield_from)->m_coroutine;
|
|
629
578
|
|
|
630
579
|
// Transferred exception ownership to "_Nuitka_Coroutine_throw2".
|
|
631
580
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
632
|
-
ret = _Nuitka_Coroutine_throw2(tstate, coro, true,
|
|
581
|
+
ret = _Nuitka_Coroutine_throw2(tstate, coro, true, exception_state);
|
|
633
582
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
634
|
-
} else if (Nuitka_AsyncgenAsend_Check(asyncgen->
|
|
583
|
+
} else if (Nuitka_AsyncgenAsend_Check(asyncgen->m_yield_from)) {
|
|
635
584
|
struct Nuitka_AsyncgenAsendObject *asyncgen_asend =
|
|
636
|
-
((struct Nuitka_AsyncgenAsendObject *)asyncgen->
|
|
585
|
+
((struct Nuitka_AsyncgenAsendObject *)asyncgen->m_yield_from);
|
|
637
586
|
|
|
638
587
|
// Transferred exception ownership to "_Nuitka_AsyncgenAsend_throw2".
|
|
639
588
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
640
|
-
ret = _Nuitka_AsyncgenAsend_throw2(tstate, asyncgen_asend,
|
|
589
|
+
ret = _Nuitka_AsyncgenAsend_throw2(tstate, asyncgen_asend, exception_state);
|
|
641
590
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
642
591
|
} else {
|
|
643
|
-
PyObject *meth = PyObject_GetAttr(asyncgen->
|
|
592
|
+
PyObject *meth = PyObject_GetAttr(asyncgen->m_yield_from, const_str_plain_throw);
|
|
593
|
+
|
|
644
594
|
if (unlikely(meth == NULL)) {
|
|
645
595
|
if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
|
|
646
596
|
// Release exception, we are done with it now.
|
|
647
|
-
|
|
648
|
-
Py_XDECREF(exception_value);
|
|
649
|
-
Py_XDECREF(exception_tb);
|
|
597
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
650
598
|
|
|
651
599
|
return NULL;
|
|
652
600
|
}
|
|
@@ -657,24 +605,22 @@ static PyObject *_Nuitka_Asyncgen_throw2(PyThreadState *tstate, struct Nuitka_As
|
|
|
657
605
|
goto throw_here;
|
|
658
606
|
}
|
|
659
607
|
|
|
660
|
-
|
|
608
|
+
CHECK_EXCEPTION_STATE(exception_state);
|
|
661
609
|
|
|
662
610
|
#if 0
|
|
663
611
|
// TODO: Add slow mode traces.
|
|
664
|
-
PRINT_ITEM(coroutine->
|
|
612
|
+
PRINT_ITEM(coroutine->m_yield_from);
|
|
665
613
|
PRINT_NEW_LINE();
|
|
666
614
|
#endif
|
|
667
615
|
|
|
668
616
|
Nuitka_MarkAsyncgenAsRunning(asyncgen);
|
|
669
|
-
ret =
|
|
617
|
+
ret = Nuitka_CallGeneratorThrowMethod(meth, exception_state);
|
|
670
618
|
Nuitka_MarkAsyncgenAsNotRunning(asyncgen);
|
|
671
619
|
|
|
672
620
|
Py_DECREF(meth);
|
|
673
621
|
|
|
674
622
|
// Release exception, we are done with it now.
|
|
675
|
-
|
|
676
|
-
Py_XDECREF(exception_value);
|
|
677
|
-
Py_XDECREF(exception_tb);
|
|
623
|
+
RELEASE_ERROR_OCCURRED_STATE(exception_state);
|
|
678
624
|
}
|
|
679
625
|
|
|
680
626
|
if (unlikely(ret == NULL)) {
|
|
@@ -683,17 +629,17 @@ static PyObject *_Nuitka_Asyncgen_throw2(PyThreadState *tstate, struct Nuitka_As
|
|
|
683
629
|
if (_PyGen_FetchStopIterationValue(&val) == 0) {
|
|
684
630
|
CHECK_OBJECT(val);
|
|
685
631
|
|
|
686
|
-
asyncgen->
|
|
632
|
+
asyncgen->m_yield_from = NULL;
|
|
687
633
|
|
|
688
634
|
// Return value, not to continue with yielding from.
|
|
689
|
-
if (asyncgen->
|
|
690
|
-
CHECK_OBJECT(asyncgen->
|
|
635
|
+
if (asyncgen->m_yield_from != NULL) {
|
|
636
|
+
CHECK_OBJECT(asyncgen->m_yield_from);
|
|
691
637
|
#if _DEBUG_ASYNCGEN
|
|
692
638
|
PRINT_ASYNCGEN_STATUS("Yield from removal:", asyncgen);
|
|
693
|
-
PRINT_COROUTINE_VALUE("
|
|
639
|
+
PRINT_COROUTINE_VALUE("yield_from", asyncgen->m_yield_from);
|
|
694
640
|
#endif
|
|
695
|
-
Py_DECREF(asyncgen->
|
|
696
|
-
asyncgen->
|
|
641
|
+
Py_DECREF(asyncgen->m_yield_from);
|
|
642
|
+
asyncgen->m_yield_from = NULL;
|
|
697
643
|
}
|
|
698
644
|
|
|
699
645
|
#if _DEBUG_ASYNCGEN
|
|
@@ -702,15 +648,22 @@ static PyObject *_Nuitka_Asyncgen_throw2(PyThreadState *tstate, struct Nuitka_As
|
|
|
702
648
|
PRINT_NEW_LINE();
|
|
703
649
|
#endif
|
|
704
650
|
|
|
705
|
-
|
|
651
|
+
struct Nuitka_ExceptionPreservationItem no_exception_state;
|
|
652
|
+
INIT_ERROR_OCCURRED_STATE(&no_exception_state);
|
|
653
|
+
|
|
654
|
+
ret = _Nuitka_Asyncgen_send(tstate, asyncgen, val, false, &no_exception_state);
|
|
706
655
|
} else {
|
|
707
656
|
#if _DEBUG_ASYNCGEN
|
|
708
657
|
PRINT_ASYNCGEN_STATUS("Sending exception value into ourselves", asyncgen);
|
|
709
|
-
PRINT_COROUTINE_VALUE("
|
|
658
|
+
PRINT_COROUTINE_VALUE("yield_from", asyncgen->m_yield_from);
|
|
710
659
|
PRINT_CURRENT_EXCEPTION();
|
|
711
660
|
PRINT_NEW_LINE();
|
|
712
661
|
#endif
|
|
713
|
-
|
|
662
|
+
|
|
663
|
+
struct Nuitka_ExceptionPreservationItem no_exception_state;
|
|
664
|
+
INIT_ERROR_OCCURRED_STATE(&no_exception_state);
|
|
665
|
+
|
|
666
|
+
ret = _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, false, &no_exception_state);
|
|
714
667
|
}
|
|
715
668
|
|
|
716
669
|
#if _DEBUG_ASYNCGEN
|
|
@@ -737,30 +690,33 @@ throw_here:
|
|
|
737
690
|
PRINT_ASYNCGEN_STATUS("Need to throw into itself", asyncgen);
|
|
738
691
|
#endif
|
|
739
692
|
|
|
740
|
-
if (unlikely(
|
|
741
|
-
// Exception was released by
|
|
693
|
+
if (unlikely(_Nuitka_Generator_check_throw(tstate, exception_state) == false)) {
|
|
694
|
+
// Exception was released by _Nuitka_Generator_check_throw already.
|
|
742
695
|
return NULL;
|
|
743
696
|
}
|
|
744
697
|
|
|
745
698
|
PyObject *result;
|
|
746
699
|
|
|
747
700
|
if (asyncgen->m_status == status_Running) {
|
|
748
|
-
result = _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, false,
|
|
701
|
+
result = _Nuitka_Asyncgen_send(tstate, asyncgen, NULL, false, exception_state);
|
|
749
702
|
} else if (asyncgen->m_status == status_Finished) {
|
|
750
|
-
|
|
703
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
751
704
|
result = NULL;
|
|
752
705
|
} else {
|
|
706
|
+
PyTracebackObject *exception_tb = GET_EXCEPTION_STATE_TRACEBACK(exception_state);
|
|
707
|
+
|
|
753
708
|
if (exception_tb == NULL) {
|
|
754
709
|
// TODO: Our compiled objects really need a way to store common
|
|
755
710
|
// stuff in a "shared" part across all instances, and outside of
|
|
756
711
|
// run time, so we could reuse this.
|
|
757
712
|
struct Nuitka_FrameObject *frame =
|
|
758
713
|
MAKE_FUNCTION_FRAME(tstate, asyncgen->m_code_object, asyncgen->m_module, 0);
|
|
759
|
-
|
|
714
|
+
SET_EXCEPTION_STATE_TRACEBACK(exception_state,
|
|
715
|
+
MAKE_TRACEBACK(frame, asyncgen->m_code_object->co_firstlineno));
|
|
760
716
|
Py_DECREF(frame);
|
|
761
717
|
}
|
|
762
718
|
|
|
763
|
-
|
|
719
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, exception_state);
|
|
764
720
|
|
|
765
721
|
#if _DEBUG_ASYNCGEN
|
|
766
722
|
PRINT_ASYNCGEN_STATUS("Finishing from exception", asyncgen);
|
|
@@ -774,7 +730,7 @@ throw_here:
|
|
|
774
730
|
|
|
775
731
|
#if _DEBUG_ASYNCGEN
|
|
776
732
|
PRINT_ASYNCGEN_STATUS("Leave", asyncgen);
|
|
777
|
-
PRINT_COROUTINE_VALUE("
|
|
733
|
+
PRINT_COROUTINE_VALUE("yield_from", asyncgen->m_yield_from);
|
|
778
734
|
PRINT_CURRENT_EXCEPTION();
|
|
779
735
|
PRINT_NEW_LINE();
|
|
780
736
|
#endif
|
|
@@ -804,11 +760,13 @@ static PyObject *Nuitka_Asyncgen_throw(PyThreadState *tstate, struct Nuitka_Asyn
|
|
|
804
760
|
#endif
|
|
805
761
|
|
|
806
762
|
// Handing ownership of exception over, we need not release it ourselves
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
763
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
764
|
+
if (_Nuitka_Generator_make_throw_exception_state(tstate, &exception_state, exception_type, exception_value,
|
|
765
|
+
exception_tb) == false) {
|
|
766
|
+
return NULL;
|
|
767
|
+
}
|
|
810
768
|
|
|
811
|
-
PyObject *result = _Nuitka_Asyncgen_throw2(tstate, asyncgen, false,
|
|
769
|
+
PyObject *result = _Nuitka_Asyncgen_throw2(tstate, asyncgen, false, &exception_state);
|
|
812
770
|
|
|
813
771
|
if (result == NULL) {
|
|
814
772
|
if (HAS_ERROR_OCCURRED(tstate) == false) {
|
|
@@ -822,9 +780,7 @@ static PyObject *Nuitka_Asyncgen_throw(PyThreadState *tstate, struct Nuitka_Asyn
|
|
|
822
780
|
PRINT_CURRENT_EXCEPTION();
|
|
823
781
|
#endif
|
|
824
782
|
|
|
825
|
-
|
|
826
|
-
CHECK_OBJECT_X(exception_value);
|
|
827
|
-
CHECK_OBJECT_X(exception_tb);
|
|
783
|
+
CHECK_EXCEPTION_STATE(&exception_state);
|
|
828
784
|
|
|
829
785
|
return result;
|
|
830
786
|
}
|
|
@@ -937,7 +893,10 @@ static PySendResult _Nuitka_Asyncgen_am_send(struct Nuitka_AsyncgenObject *async
|
|
|
937
893
|
|
|
938
894
|
PyThreadState *tstate = PyThreadState_GET();
|
|
939
895
|
|
|
940
|
-
|
|
896
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
897
|
+
INIT_ERROR_OCCURRED_STATE(&exception_state);
|
|
898
|
+
|
|
899
|
+
PySendResult res = _Nuitka_Asyncgen_sendR(tstate, asyncgen, arg, false, &exception_state, result);
|
|
941
900
|
|
|
942
901
|
#if _DEBUG_ASYNCGEN
|
|
943
902
|
PRINT_ASYNCGEN_STATUS("Leave", asyncgen);
|
|
@@ -955,9 +914,8 @@ static void Nuitka_Asyncgen_tp_finalize(struct Nuitka_AsyncgenObject *asyncgen)
|
|
|
955
914
|
|
|
956
915
|
PyThreadState *tstate = PyThreadState_GET();
|
|
957
916
|
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
FETCH_ERROR_OCCURRED(tstate, &save_exception_type, &save_exception_value, &save_exception_tb);
|
|
917
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
918
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
961
919
|
|
|
962
920
|
bool close_result = _Nuitka_Asyncgen_close(tstate, asyncgen);
|
|
963
921
|
|
|
@@ -966,7 +924,7 @@ static void Nuitka_Asyncgen_tp_finalize(struct Nuitka_AsyncgenObject *asyncgen)
|
|
|
966
924
|
}
|
|
967
925
|
|
|
968
926
|
/* Restore the saved exception if any. */
|
|
969
|
-
|
|
927
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
970
928
|
}
|
|
971
929
|
|
|
972
930
|
#define MAX_ASYNCGEN_FREE_LIST_COUNT 100
|
|
@@ -987,13 +945,12 @@ static void Nuitka_Asyncgen_tp_dealloc(struct Nuitka_AsyncgenObject *asyncgen) {
|
|
|
987
945
|
PyThreadState *tstate = PyThreadState_GET();
|
|
988
946
|
|
|
989
947
|
// Save the current exception, if any, we must preserve it.
|
|
990
|
-
|
|
991
|
-
PyTracebackObject *save_exception_tb;
|
|
948
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
992
949
|
|
|
993
950
|
PyObject *finalizer = asyncgen->m_finalizer;
|
|
994
951
|
if (finalizer != NULL && asyncgen->m_closed == false) {
|
|
995
|
-
|
|
996
|
-
|
|
952
|
+
// Save the current exception, if any.
|
|
953
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
997
954
|
|
|
998
955
|
PyObject *res = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, finalizer, (PyObject *)asyncgen);
|
|
999
956
|
|
|
@@ -1003,11 +960,11 @@ static void Nuitka_Asyncgen_tp_dealloc(struct Nuitka_AsyncgenObject *asyncgen) {
|
|
|
1003
960
|
Py_DECREF(res);
|
|
1004
961
|
}
|
|
1005
962
|
|
|
1006
|
-
|
|
963
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
1007
964
|
return;
|
|
1008
965
|
}
|
|
1009
966
|
|
|
1010
|
-
|
|
967
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
1011
968
|
|
|
1012
969
|
bool close_result = _Nuitka_Asyncgen_close(tstate, asyncgen);
|
|
1013
970
|
|
|
@@ -1046,7 +1003,7 @@ static void Nuitka_Asyncgen_tp_dealloc(struct Nuitka_AsyncgenObject *asyncgen) {
|
|
|
1046
1003
|
/* Put the object into free list or release to GC */
|
|
1047
1004
|
releaseToFreeList(free_list_asyncgens, asyncgen, MAX_ASYNCGEN_FREE_LIST_COUNT);
|
|
1048
1005
|
|
|
1049
|
-
|
|
1006
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
1050
1007
|
}
|
|
1051
1008
|
|
|
1052
1009
|
static PyObject *Nuitka_Asyncgen_tp_repr(struct Nuitka_AsyncgenObject *asyncgen) {
|
|
@@ -1059,7 +1016,7 @@ static PyObject *Nuitka_Asyncgen_tp_repr(struct Nuitka_AsyncgenObject *asyncgen)
|
|
|
1059
1016
|
static int Nuitka_Asyncgen_tp_traverse(struct Nuitka_AsyncgenObject *asyncgen, visitproc visit, void *arg) {
|
|
1060
1017
|
CHECK_OBJECT(asyncgen);
|
|
1061
1018
|
|
|
1062
|
-
Py_VISIT(asyncgen->
|
|
1019
|
+
Py_VISIT(asyncgen->m_yield_from);
|
|
1063
1020
|
|
|
1064
1021
|
for (Py_ssize_t i = 0; i < asyncgen->m_closure_given; i++) {
|
|
1065
1022
|
Py_VISIT(asyncgen->m_closure[i]);
|
|
@@ -1091,7 +1048,7 @@ static PyAsyncMethods Nuitka_Asyncgen_as_async = {
|
|
|
1091
1048
|
|
|
1092
1049
|
// TODO: Set "__doc__" automatically for method clones of compiled types from
|
|
1093
1050
|
// the documentation of built-in original type.
|
|
1094
|
-
static PyGetSetDef
|
|
1051
|
+
static PyGetSetDef Nuitka_Asyncgen_tp_getset[] = {
|
|
1095
1052
|
{(char *)"__name__", (getter)Nuitka_Asyncgen_get_name, (setter)Nuitka_Asyncgen_set_name, NULL},
|
|
1096
1053
|
{(char *)"__qualname__", (getter)Nuitka_Asyncgen_get_qualname, (setter)Nuitka_Asyncgen_set_qualname, NULL},
|
|
1097
1054
|
{(char *)"ag_await", (getter)Nuitka_Asyncgen_get_ag_await, (setter)NULL, NULL},
|
|
@@ -1136,7 +1093,7 @@ PyTypeObject Nuitka_Asyncgen_Type = {
|
|
|
1136
1093
|
0, // tp_iternext
|
|
1137
1094
|
Nuitka_Asyncgen_methods, // tp_methods
|
|
1138
1095
|
Nuitka_Asyncgen_members, // tp_members
|
|
1139
|
-
|
|
1096
|
+
Nuitka_Asyncgen_tp_getset, // tp_getset
|
|
1140
1097
|
0, // tp_base
|
|
1141
1098
|
0, // tp_dict
|
|
1142
1099
|
0, // tp_descr_get
|
|
@@ -1195,7 +1152,7 @@ PyObject *Nuitka_Asyncgen_New(asyncgen_code code, PyObject *module, PyObject *na
|
|
|
1195
1152
|
result->m_qualname = qualname;
|
|
1196
1153
|
Py_INCREF(qualname);
|
|
1197
1154
|
|
|
1198
|
-
result->
|
|
1155
|
+
result->m_yield_from = NULL;
|
|
1199
1156
|
|
|
1200
1157
|
memcpy(&result->m_closure[0], closure, closure_given * sizeof(struct Nuitka_CellObject *));
|
|
1201
1158
|
result->m_closure_given = closure_given;
|
|
@@ -1393,7 +1350,13 @@ struct _PyAsyncGenWrappedValue {
|
|
|
1393
1350
|
PyObject *agw_val;
|
|
1394
1351
|
};
|
|
1395
1352
|
|
|
1353
|
+
#if PYTHON_VERSION < 0x3d0
|
|
1396
1354
|
#define _PyAsyncGenWrappedValue_CheckExact(o) (Py_TYPE(o) == &_PyAsyncGenWrappedValue_Type)
|
|
1355
|
+
#else
|
|
1356
|
+
static PyTypeObject *Nuitka_PyAsyncGenWrappedValue_Type = NULL;
|
|
1357
|
+
|
|
1358
|
+
#define _PyAsyncGenWrappedValue_CheckExact(o) (Py_TYPE(o) == Nuitka_PyAsyncGenWrappedValue_Type)
|
|
1359
|
+
#endif
|
|
1397
1360
|
|
|
1398
1361
|
static PyObject *_Nuitka_Asyncgen_unwrap_value(PyThreadState *tstate, struct Nuitka_AsyncgenObject *asyncgen,
|
|
1399
1362
|
PyObject *result) {
|
|
@@ -1419,7 +1382,7 @@ static PyObject *_Nuitka_Asyncgen_unwrap_value(PyThreadState *tstate, struct Nui
|
|
|
1419
1382
|
|
|
1420
1383
|
if (_PyAsyncGenWrappedValue_CheckExact(result)) {
|
|
1421
1384
|
/* async yield */
|
|
1422
|
-
|
|
1385
|
+
Nuitka_SetStopIterationValue(tstate, ((struct _PyAsyncGenWrappedValue *)result)->agw_val);
|
|
1423
1386
|
|
|
1424
1387
|
Py_DECREF(result);
|
|
1425
1388
|
|
|
@@ -1429,7 +1392,7 @@ static PyObject *_Nuitka_Asyncgen_unwrap_value(PyThreadState *tstate, struct Nui
|
|
|
1429
1392
|
return NULL;
|
|
1430
1393
|
} else if (Nuitka_AsyncgenWrappedValue_CheckExact(result)) {
|
|
1431
1394
|
/* async yield */
|
|
1432
|
-
|
|
1395
|
+
Nuitka_SetStopIterationValue(tstate, ((struct Nuitka_AsyncgenWrappedValueObject *)result)->m_value);
|
|
1433
1396
|
|
|
1434
1397
|
Py_DECREF(result);
|
|
1435
1398
|
|
|
@@ -1530,7 +1493,11 @@ static PyObject *Nuitka_AsyncgenAsend_send(struct Nuitka_AsyncgenAsendObject *as
|
|
|
1530
1493
|
#endif
|
|
1531
1494
|
|
|
1532
1495
|
Py_INCREF(arg);
|
|
1533
|
-
|
|
1496
|
+
|
|
1497
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
1498
|
+
INIT_ERROR_OCCURRED_STATE(&exception_state);
|
|
1499
|
+
|
|
1500
|
+
PyObject *result = _Nuitka_Asyncgen_send(tstate, asyncgen_asend->m_gen, arg, false, &exception_state);
|
|
1534
1501
|
|
|
1535
1502
|
#if _DEBUG_ASYNCGEN
|
|
1536
1503
|
PRINT_STRING("Returned from _Nuitka_Asyncgen_send\n");
|
|
@@ -1625,11 +1592,10 @@ static PyObject *Nuitka_AsyncgenAsend_throw(struct Nuitka_AsyncgenAsendObject *a
|
|
|
1625
1592
|
}
|
|
1626
1593
|
|
|
1627
1594
|
static PyObject *_Nuitka_AsyncgenAsend_throw2(PyThreadState *tstate, struct Nuitka_AsyncgenAsendObject *asyncgen_asend,
|
|
1628
|
-
|
|
1629
|
-
PyTracebackObject *exception_tb) {
|
|
1595
|
+
struct Nuitka_ExceptionPreservationItem *exception_state) {
|
|
1630
1596
|
#if _DEBUG_ASYNCGEN
|
|
1631
1597
|
PRINT_ASYNCGENASEND_STATUS("Enter", asyncgen_asend);
|
|
1632
|
-
|
|
1598
|
+
PRINT_EXCEPTION_STATE(exception_state);
|
|
1633
1599
|
PRINT_CURRENT_EXCEPTION();
|
|
1634
1600
|
PRINT_NEW_LINE();
|
|
1635
1601
|
#endif
|
|
@@ -1639,8 +1605,7 @@ static PyObject *_Nuitka_AsyncgenAsend_throw2(PyThreadState *tstate, struct Nuit
|
|
|
1639
1605
|
return NULL;
|
|
1640
1606
|
}
|
|
1641
1607
|
|
|
1642
|
-
PyObject *result =
|
|
1643
|
-
_Nuitka_Asyncgen_throw2(tstate, asyncgen_asend->m_gen, false, exception_type, exception_value, exception_tb);
|
|
1608
|
+
PyObject *result = _Nuitka_Asyncgen_throw2(tstate, asyncgen_asend->m_gen, false, exception_state);
|
|
1644
1609
|
|
|
1645
1610
|
// TODO: This might not be all that necessary as this is not directly outside facing,
|
|
1646
1611
|
// but there were tests failing when this was not the specific value.
|
|
@@ -1679,7 +1644,7 @@ static PyObject *_Nuitka_AsyncgenAsend_throw2(PyThreadState *tstate, struct Nuit
|
|
|
1679
1644
|
static PyObject *Nuitka_AsyncgenAsend_close(struct Nuitka_AsyncgenAsendObject *asyncgen_asend, PyObject *args) {
|
|
1680
1645
|
asyncgen_asend->m_state = AWAITABLE_STATE_CLOSED;
|
|
1681
1646
|
|
|
1682
|
-
|
|
1647
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
1683
1648
|
return Py_None;
|
|
1684
1649
|
}
|
|
1685
1650
|
|
|
@@ -1914,10 +1879,12 @@ static PyObject *Nuitka_AsyncgenAthrow_send(struct Nuitka_AsyncgenAthrowObject *
|
|
|
1914
1879
|
if (asyncgen_athrow->m_args == NULL) {
|
|
1915
1880
|
asyncgen->m_closed = true;
|
|
1916
1881
|
|
|
1917
|
-
|
|
1882
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
1883
|
+
SET_EXCEPTION_PRESERVATION_STATE_FROM_ARGS(tstate, &exception_state, PyExc_GeneratorExit, NULL, NULL);
|
|
1884
|
+
|
|
1918
1885
|
retval = _Nuitka_Asyncgen_throw2(tstate, asyncgen,
|
|
1919
1886
|
1, /* Do not close generator when PyExc_GeneratorExit is passed */
|
|
1920
|
-
|
|
1887
|
+
&exception_state);
|
|
1921
1888
|
|
|
1922
1889
|
if (retval) {
|
|
1923
1890
|
if (_PyAsyncGenWrappedValue_CheckExact(retval) || Nuitka_AsyncgenWrappedValue_CheckExact(retval)) {
|
|
@@ -1944,13 +1911,15 @@ static PyObject *Nuitka_AsyncgenAthrow_send(struct Nuitka_AsyncgenAthrowObject *
|
|
|
1944
1911
|
}
|
|
1945
1912
|
|
|
1946
1913
|
// Handing ownership of exception over, we need not release it ourselves
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1914
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
1915
|
+
if (_Nuitka_Generator_make_throw_exception_state(tstate, &exception_state, exception_type, exception_value,
|
|
1916
|
+
exception_tb) == false) {
|
|
1917
|
+
return NULL;
|
|
1918
|
+
}
|
|
1950
1919
|
|
|
1951
1920
|
retval = _Nuitka_Asyncgen_throw2(tstate, asyncgen,
|
|
1952
1921
|
0, /* Do not close generator when PyExc_GeneratorExit is passed */
|
|
1953
|
-
|
|
1922
|
+
&exception_state);
|
|
1954
1923
|
|
|
1955
1924
|
retval = _Nuitka_Asyncgen_unwrap_value(tstate, asyncgen, retval);
|
|
1956
1925
|
}
|
|
@@ -1964,7 +1933,10 @@ static PyObject *Nuitka_AsyncgenAthrow_send(struct Nuitka_AsyncgenAthrowObject *
|
|
|
1964
1933
|
|
|
1965
1934
|
assert(asyncgen_athrow->m_state == AWAITABLE_STATE_ITER);
|
|
1966
1935
|
|
|
1967
|
-
|
|
1936
|
+
struct Nuitka_ExceptionPreservationItem exception_state;
|
|
1937
|
+
INIT_ERROR_OCCURRED_STATE(&exception_state);
|
|
1938
|
+
|
|
1939
|
+
retval = _Nuitka_Asyncgen_send(tstate, asyncgen, arg, false, &exception_state);
|
|
1968
1940
|
|
|
1969
1941
|
if (asyncgen_athrow->m_args) {
|
|
1970
1942
|
return _Nuitka_Asyncgen_unwrap_value(tstate, asyncgen, retval);
|
|
@@ -2079,7 +2051,7 @@ static PyObject *Nuitka_AsyncgenAthrow_tp_iternext(struct Nuitka_AsyncgenAthrowO
|
|
|
2079
2051
|
static PyObject *Nuitka_AsyncgenAthrow_close(struct Nuitka_AsyncgenAthrowObject *asyncgen_athrow) {
|
|
2080
2052
|
asyncgen_athrow->m_state = AWAITABLE_STATE_CLOSED;
|
|
2081
2053
|
|
|
2082
|
-
|
|
2054
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
2083
2055
|
return Py_None;
|
|
2084
2056
|
}
|
|
2085
2057
|
|
|
@@ -2210,4 +2182,26 @@ static void _initCompiledAsyncgenTypes(void) {
|
|
|
2210
2182
|
Nuitka_PyType_Ready(&Nuitka_AsyncgenAsend_Type, NULL, true, false, true, true, false);
|
|
2211
2183
|
Nuitka_PyType_Ready(&Nuitka_AsyncgenAthrow_Type, NULL, true, false, true, true, false);
|
|
2212
2184
|
Nuitka_PyType_Ready(&Nuitka_AsyncgenValueWrapper_Type, NULL, false, false, false, false, false);
|
|
2185
|
+
|
|
2186
|
+
#if PYTHON_VERSION >= 0x3d0
|
|
2187
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
2188
|
+
PyObject *asyncgen_wrapper_object = _PyIntrinsics_UnaryFunctions[INTRINSIC_ASYNC_GEN_WRAP].func(tstate, Py_None);
|
|
2189
|
+
Nuitka_PyAsyncGenWrappedValue_Type = Py_TYPE(asyncgen_wrapper_object);
|
|
2190
|
+
Py_DECREF(asyncgen_wrapper_object);
|
|
2191
|
+
#endif
|
|
2213
2192
|
}
|
|
2193
|
+
|
|
2194
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
2195
|
+
// integrates with CPython, but also works on its own.
|
|
2196
|
+
//
|
|
2197
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
2198
|
+
// you may not use this file except in compliance with the License.
|
|
2199
|
+
// You may obtain a copy of the License at
|
|
2200
|
+
//
|
|
2201
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
2202
|
+
//
|
|
2203
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
2204
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
2205
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2206
|
+
// See the License for the specific language governing permissions and
|
|
2207
|
+
// limitations under the License.
|