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,25 +1,10 @@
|
|
|
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
|
-
//
|
|
18
|
-
#include "nuitka/prelude.h"
|
|
1
|
+
// Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
19
2
|
|
|
3
|
+
#ifdef __IDE_ONLY__
|
|
20
4
|
#include "nuitka/freelists.h"
|
|
21
|
-
|
|
22
|
-
#include
|
|
5
|
+
#include "nuitka/prelude.h"
|
|
6
|
+
#include <structmember.h>
|
|
7
|
+
#endif
|
|
23
8
|
|
|
24
9
|
// For reporting about reference counts per type.
|
|
25
10
|
#if _DEBUG_REFCOUNTS
|
|
@@ -37,7 +22,7 @@ int count_hit_frame_cache_instances = 0;
|
|
|
37
22
|
#endif
|
|
38
23
|
|
|
39
24
|
#if PYTHON_VERSION < 0x3b0
|
|
40
|
-
static PyMemberDef
|
|
25
|
+
static PyMemberDef Nuitka_Frame_members[] = {
|
|
41
26
|
{(char *)"f_back", T_OBJECT, offsetof(PyFrameObject, f_back), READONLY | RESTRICTED},
|
|
42
27
|
{(char *)"f_code", T_OBJECT, offsetof(PyFrameObject, f_code), READONLY | RESTRICTED},
|
|
43
28
|
{(char *)"f_builtins", T_OBJECT, offsetof(PyFrameObject, f_builtins), READONLY | RESTRICTED},
|
|
@@ -46,12 +31,16 @@ static PyMemberDef Nuitka_Frame_memberlist[] = {
|
|
|
46
31
|
{NULL}};
|
|
47
32
|
|
|
48
33
|
#else
|
|
49
|
-
#define
|
|
34
|
+
#define Nuitka_Frame_members 0
|
|
50
35
|
#endif
|
|
51
36
|
|
|
52
37
|
#if PYTHON_VERSION < 0x300
|
|
53
38
|
|
|
54
|
-
static PyObject *
|
|
39
|
+
static PyObject *_Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame) {
|
|
40
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
41
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
42
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
43
|
+
|
|
55
44
|
PyObject *result = frame->m_frame.f_exc_traceback;
|
|
56
45
|
|
|
57
46
|
if (result == NULL) {
|
|
@@ -62,7 +51,11 @@ static PyObject *Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame
|
|
|
62
51
|
return result;
|
|
63
52
|
}
|
|
64
53
|
|
|
65
|
-
static int
|
|
54
|
+
static int _Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyObject *traceback) {
|
|
55
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
56
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
57
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
58
|
+
|
|
66
59
|
Py_XDECREF(frame->m_frame.f_exc_traceback);
|
|
67
60
|
|
|
68
61
|
if (traceback == Py_None) {
|
|
@@ -75,7 +68,11 @@ static int Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyOb
|
|
|
75
68
|
return 0;
|
|
76
69
|
}
|
|
77
70
|
|
|
78
|
-
static PyObject *
|
|
71
|
+
static PyObject *_Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
|
|
72
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
73
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
74
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
75
|
+
|
|
79
76
|
PyObject *result;
|
|
80
77
|
|
|
81
78
|
if (frame->m_frame.f_exc_type != NULL) {
|
|
@@ -88,7 +85,11 @@ static PyObject *Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
|
|
|
88
85
|
return result;
|
|
89
86
|
}
|
|
90
87
|
|
|
91
|
-
static int
|
|
88
|
+
static int _Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject *exception_type) {
|
|
89
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
90
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
91
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
92
|
+
|
|
92
93
|
PyObject *old = frame->m_frame.f_exc_type;
|
|
93
94
|
|
|
94
95
|
if (exception_type == Py_None) {
|
|
@@ -103,7 +104,11 @@ static int Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject
|
|
|
103
104
|
return 0;
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
static PyObject *
|
|
107
|
+
static PyObject *_Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
|
|
108
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
109
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
110
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
111
|
+
|
|
107
112
|
PyObject *result;
|
|
108
113
|
|
|
109
114
|
if (frame->m_frame.f_exc_value != NULL) {
|
|
@@ -116,7 +121,11 @@ static PyObject *Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
|
|
|
116
121
|
return result;
|
|
117
122
|
}
|
|
118
123
|
|
|
119
|
-
static int
|
|
124
|
+
static int _Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject *exception_value) {
|
|
125
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
126
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
127
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
128
|
+
|
|
120
129
|
PyObject *old = frame->m_frame.f_exc_value;
|
|
121
130
|
|
|
122
131
|
if (exception_value == Py_None) {
|
|
@@ -130,14 +139,24 @@ static int Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject
|
|
|
130
139
|
return 0;
|
|
131
140
|
}
|
|
132
141
|
|
|
133
|
-
static PyObject *
|
|
134
|
-
|
|
142
|
+
static PyObject *_Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame, void *closure) {
|
|
143
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
144
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
145
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
146
|
+
|
|
147
|
+
Py_INCREF_IMMORTAL(Py_False);
|
|
135
148
|
return Py_False;
|
|
136
149
|
}
|
|
137
150
|
|
|
138
151
|
#endif
|
|
139
152
|
|
|
140
|
-
static PyObject *
|
|
153
|
+
static PyObject *_Nuitka_Frame_get_locals(struct Nuitka_FrameObject *nuitka_frame, void *closure) {
|
|
154
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
|
|
155
|
+
CHECK_OBJECT((PyObject *)nuitka_frame);
|
|
156
|
+
assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
|
|
157
|
+
|
|
158
|
+
NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
|
|
159
|
+
|
|
141
160
|
if (nuitka_frame->m_type_description == NULL) {
|
|
142
161
|
#if PYTHON_VERSION < 0x3b0
|
|
143
162
|
PyFrameObject *locals_owner = &nuitka_frame->m_frame;
|
|
@@ -146,14 +165,14 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
|
|
|
146
165
|
#endif
|
|
147
166
|
|
|
148
167
|
if (locals_owner->f_locals == NULL) {
|
|
149
|
-
locals_owner->f_locals = MAKE_DICT_EMPTY();
|
|
168
|
+
locals_owner->f_locals = MAKE_DICT_EMPTY(tstate);
|
|
150
169
|
}
|
|
151
170
|
|
|
152
171
|
Py_INCREF(locals_owner->f_locals);
|
|
153
172
|
return locals_owner->f_locals;
|
|
154
173
|
} else {
|
|
155
|
-
PyObject *result = MAKE_DICT_EMPTY();
|
|
156
|
-
PyObject **
|
|
174
|
+
PyObject *result = MAKE_DICT_EMPTY(tstate);
|
|
175
|
+
PyObject **var_names = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
|
|
157
176
|
|
|
158
177
|
char const *w = nuitka_frame->m_type_description;
|
|
159
178
|
char const *t = nuitka_frame->m_locals_storage;
|
|
@@ -166,7 +185,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
|
|
|
166
185
|
CHECK_OBJECT_X(value);
|
|
167
186
|
|
|
168
187
|
if (value != NULL) {
|
|
169
|
-
DICT_SET_ITEM(result, *
|
|
188
|
+
DICT_SET_ITEM(result, *var_names, value);
|
|
170
189
|
}
|
|
171
190
|
|
|
172
191
|
t += sizeof(PyObject *);
|
|
@@ -179,7 +198,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
|
|
|
179
198
|
CHECK_OBJECT(value);
|
|
180
199
|
|
|
181
200
|
if (value->ob_ref != NULL) {
|
|
182
|
-
DICT_SET_ITEM(result, *
|
|
201
|
+
DICT_SET_ITEM(result, *var_names, value->ob_ref);
|
|
183
202
|
}
|
|
184
203
|
|
|
185
204
|
t += sizeof(struct Nuitka_CellObject *);
|
|
@@ -194,11 +213,11 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
|
|
|
194
213
|
t += sizeof(int);
|
|
195
214
|
switch ((nuitka_bool)value) {
|
|
196
215
|
case NUITKA_BOOL_TRUE: {
|
|
197
|
-
DICT_SET_ITEM(result, *
|
|
216
|
+
DICT_SET_ITEM(result, *var_names, Py_True);
|
|
198
217
|
break;
|
|
199
218
|
}
|
|
200
219
|
case NUITKA_BOOL_FALSE: {
|
|
201
|
-
DICT_SET_ITEM(result, *
|
|
220
|
+
DICT_SET_ITEM(result, *var_names, Py_False);
|
|
202
221
|
break;
|
|
203
222
|
}
|
|
204
223
|
default:
|
|
@@ -211,24 +230,36 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
|
|
|
211
230
|
}
|
|
212
231
|
|
|
213
232
|
w += 1;
|
|
214
|
-
|
|
233
|
+
var_names += 1;
|
|
215
234
|
}
|
|
216
235
|
|
|
217
236
|
return result;
|
|
218
237
|
}
|
|
219
238
|
}
|
|
220
239
|
|
|
221
|
-
static PyObject *
|
|
240
|
+
static PyObject *_Nuitka_Frame_get_lineno(struct Nuitka_FrameObject *frame, void *closure) {
|
|
241
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
242
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
243
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
244
|
+
|
|
222
245
|
return PyInt_FromLong(frame->m_frame.f_lineno);
|
|
223
246
|
}
|
|
224
247
|
|
|
225
|
-
static PyObject *
|
|
248
|
+
static PyObject *_Nuitka_Frame_get_trace(struct Nuitka_FrameObject *frame, void *closure) {
|
|
249
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
250
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
251
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
252
|
+
|
|
226
253
|
PyObject *result = frame->m_frame.f_trace;
|
|
227
254
|
Py_INCREF(result);
|
|
228
255
|
return result;
|
|
229
256
|
}
|
|
230
257
|
|
|
231
|
-
static int
|
|
258
|
+
static int _Nuitka_Frame_set_trace(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
|
|
259
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
260
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
261
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
262
|
+
|
|
232
263
|
PyThreadState *tstate = PyThreadState_GET();
|
|
233
264
|
|
|
234
265
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace is not writable in Nuitka");
|
|
@@ -236,26 +267,42 @@ static int Nuitka_Frame_settrace(struct Nuitka_FrameObject *frame, PyObject *v,
|
|
|
236
267
|
}
|
|
237
268
|
|
|
238
269
|
#if PYTHON_VERSION >= 0x370
|
|
239
|
-
static PyObject *
|
|
270
|
+
static PyObject *_Nuitka_Frame_get_trace_lines(struct Nuitka_FrameObject *frame, void *closure) {
|
|
271
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
272
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
273
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
274
|
+
|
|
240
275
|
PyObject *result = Py_False;
|
|
241
|
-
|
|
276
|
+
Py_INCREF_IMMORTAL(result);
|
|
242
277
|
return result;
|
|
243
278
|
}
|
|
244
279
|
|
|
245
|
-
static int
|
|
280
|
+
static int _Nuitka_Frame_set_trace_lines(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
|
|
281
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
282
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
283
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
284
|
+
|
|
246
285
|
PyThreadState *tstate = PyThreadState_GET();
|
|
247
286
|
|
|
248
287
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_lines is not writable in Nuitka");
|
|
249
288
|
return -1;
|
|
250
289
|
}
|
|
251
290
|
|
|
252
|
-
static PyObject *
|
|
291
|
+
static PyObject *_Nuitka_Frame_get_trace_opcodes(struct Nuitka_FrameObject *frame, void *closure) {
|
|
292
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
293
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
294
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
295
|
+
|
|
253
296
|
PyObject *result = Py_False;
|
|
254
|
-
|
|
297
|
+
Py_INCREF_IMMORTAL(result);
|
|
255
298
|
return result;
|
|
256
299
|
}
|
|
257
300
|
|
|
258
|
-
static int
|
|
301
|
+
static int _Nuitka_Frame_set_trace_opcodes(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
|
|
302
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
303
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
304
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
305
|
+
|
|
259
306
|
PyThreadState *tstate = PyThreadState_GET();
|
|
260
307
|
|
|
261
308
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_opcodes is not writable in Nuitka");
|
|
@@ -263,33 +310,27 @@ static int Nuitka_Frame_settraceopcodes(struct Nuitka_FrameObject *frame, PyObje
|
|
|
263
310
|
}
|
|
264
311
|
#endif
|
|
265
312
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
270
|
-
#endif
|
|
271
|
-
|
|
272
|
-
static PyGetSetDef Nuitka_Frame_getsetlist[] = {
|
|
273
|
-
{(char *)"f_locals", (getter)Nuitka_Frame_getlocals, NULL, NULL},
|
|
274
|
-
{(char *)"f_lineno", (getter)Nuitka_Frame_getlineno, NULL, NULL},
|
|
275
|
-
{(char *)"f_trace", (getter)Nuitka_Frame_gettrace, (setter)Nuitka_Frame_settrace, NULL},
|
|
313
|
+
static PyGetSetDef Nuitka_Frame_tp_getset[] = {
|
|
314
|
+
{(char *)"f_locals", (getter)_Nuitka_Frame_get_locals, NULL, NULL},
|
|
315
|
+
{(char *)"f_lineno", (getter)_Nuitka_Frame_get_lineno, NULL, NULL},
|
|
316
|
+
{(char *)"f_trace", (getter)_Nuitka_Frame_get_trace, (setter)_Nuitka_Frame_set_trace, NULL},
|
|
276
317
|
#if PYTHON_VERSION < 0x300
|
|
277
|
-
{(char *)"f_restricted", (getter)
|
|
278
|
-
{(char *)"f_exc_traceback", (getter)
|
|
279
|
-
{(char *)"f_exc_type", (getter)
|
|
280
|
-
{(char *)"f_exc_value", (getter)
|
|
318
|
+
{(char *)"f_restricted", (getter)_Nuitka_Frame_get_restricted, NULL, NULL},
|
|
319
|
+
{(char *)"f_exc_traceback", (getter)_Nuitka_Frame_get_exc_traceback, (setter)_Nuitka_Frame_set_exc_traceback, NULL},
|
|
320
|
+
{(char *)"f_exc_type", (getter)_Nuitka_Frame_get_exc_type, (setter)_Nuitka_Frame_set_exc_type, NULL},
|
|
321
|
+
{(char *)"f_exc_value", (getter)_Nuitka_Frame_get_exc_value, (setter)_Nuitka_Frame_set_exc_value, NULL},
|
|
281
322
|
#endif
|
|
282
323
|
#if PYTHON_VERSION >= 0x370
|
|
283
|
-
{(char *)"f_trace_lines", (getter)
|
|
284
|
-
{(char *)"f_trace_opcodes", (getter)
|
|
285
|
-
#endif
|
|
286
|
-
#if PYTHON_VERSION >= 0x3b0
|
|
287
|
-
{(char *)"f_trace_lines", (getter)Nuitka_Frame_getback, NULL, NULL},
|
|
324
|
+
{(char *)"f_trace_lines", (getter)_Nuitka_Frame_get_trace_lines, (setter)_Nuitka_Frame_set_trace_lines, NULL},
|
|
325
|
+
{(char *)"f_trace_opcodes", (getter)_Nuitka_Frame_get_trace_opcodes, (setter)_Nuitka_Frame_set_trace_opcodes, NULL},
|
|
288
326
|
#endif
|
|
289
327
|
{NULL}};
|
|
290
328
|
|
|
291
329
|
// tp_repr slot, decide how a function shall be output
|
|
292
330
|
static PyObject *Nuitka_Frame_tp_repr(struct Nuitka_FrameObject *nuitka_frame) {
|
|
331
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
|
|
332
|
+
CHECK_OBJECT((PyObject *)nuitka_frame);
|
|
333
|
+
assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
|
|
293
334
|
|
|
294
335
|
#if PYTHON_VERSION >= 0x370
|
|
295
336
|
PyCodeObject *code_object = Nuitka_GetFrameCodeObject(nuitka_frame);
|
|
@@ -367,10 +408,9 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
|
|
|
367
408
|
// Save the current exception, if any, we must to not corrupt it.
|
|
368
409
|
PyThreadState *tstate = PyThreadState_GET();
|
|
369
410
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
RESTORE_ERROR_OCCURRED(tstate, save_exception_type, save_exception_value, save_exception_tb);
|
|
411
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state1;
|
|
412
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
|
|
413
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
|
|
374
414
|
#endif
|
|
375
415
|
|
|
376
416
|
Nuitka_GC_UnTrack(nuitka_frame);
|
|
@@ -382,6 +422,7 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
|
|
|
382
422
|
_PyInterpreterFrame *locals_owner = &nuitka_frame->m_interpreter_frame;
|
|
383
423
|
#endif
|
|
384
424
|
|
|
425
|
+
assert(Nuitka_GC_IS_TRACKED_X((PyObject *)frame->f_back));
|
|
385
426
|
Py_XDECREF(frame->f_back);
|
|
386
427
|
Py_DECREF(locals_owner->f_builtins);
|
|
387
428
|
Py_DECREF(locals_owner->f_globals);
|
|
@@ -395,6 +436,13 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
|
|
|
395
436
|
|
|
396
437
|
Nuitka_Frame_tp_clear(nuitka_frame);
|
|
397
438
|
|
|
439
|
+
Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
|
|
440
|
+
if (Py_REFCNT(nuitka_frame) >= 1) {
|
|
441
|
+
// TODO: Allow this in debug mode, for now we would like to reproduce it.
|
|
442
|
+
assert(false);
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
|
|
398
446
|
#if PYTHON_VERSION >= 0x3b0
|
|
399
447
|
// Restore from backup, see header comment for the field "m_ob_size" to get
|
|
400
448
|
// it.
|
|
@@ -404,13 +452,19 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
|
|
|
404
452
|
releaseToFreeList(free_list_frames, nuitka_frame, MAX_FRAME_FREE_LIST_COUNT);
|
|
405
453
|
|
|
406
454
|
#ifndef __NUITKA_NO_ASSERT__
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
455
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state2;
|
|
456
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
|
|
457
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
|
|
458
|
+
|
|
459
|
+
ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
|
|
410
460
|
#endif
|
|
411
461
|
}
|
|
412
462
|
|
|
413
463
|
static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc visit, void *arg) {
|
|
464
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
465
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
466
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
467
|
+
|
|
414
468
|
Py_VISIT(frame->m_frame.f_back);
|
|
415
469
|
|
|
416
470
|
#if PYTHON_VERSION < 0x3b0
|
|
@@ -474,9 +528,13 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
|
|
|
474
528
|
return 0;
|
|
475
529
|
}
|
|
476
530
|
|
|
477
|
-
#if PYTHON_VERSION >=
|
|
531
|
+
#if PYTHON_VERSION >= 0x300
|
|
478
532
|
|
|
479
533
|
static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
|
|
534
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
535
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
536
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
537
|
+
|
|
480
538
|
PyThreadState *tstate = PyThreadState_GET();
|
|
481
539
|
|
|
482
540
|
if (Nuitka_Frame_IsExecuting(frame)) {
|
|
@@ -498,7 +556,7 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
|
|
|
498
556
|
}
|
|
499
557
|
#endif
|
|
500
558
|
|
|
501
|
-
#if PYTHON_VERSION >=
|
|
559
|
+
#if PYTHON_VERSION >= 0x300
|
|
502
560
|
// For frames that are closed, we also need to close the generator.
|
|
503
561
|
PyObject *f_gen = Nuitka_GetFrameGenerator(frame);
|
|
504
562
|
if (f_gen != NULL) {
|
|
@@ -555,6 +613,10 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
|
|
|
555
613
|
#endif
|
|
556
614
|
|
|
557
615
|
static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame) {
|
|
616
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
617
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
618
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
619
|
+
|
|
558
620
|
#if PYTHON_VERSION < 0x3b0
|
|
559
621
|
return Py_SIZE(frame);
|
|
560
622
|
#else
|
|
@@ -563,11 +625,15 @@ static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame)
|
|
|
563
625
|
}
|
|
564
626
|
|
|
565
627
|
static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame) {
|
|
628
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame));
|
|
629
|
+
CHECK_OBJECT((PyObject *)frame);
|
|
630
|
+
assert(_PyObject_GC_IS_TRACKED(frame));
|
|
631
|
+
|
|
566
632
|
return PyInt_FromSsize_t(sizeof(struct Nuitka_FrameObject) + Py_SIZE(frame));
|
|
567
633
|
}
|
|
568
634
|
|
|
569
635
|
static PyMethodDef Nuitka_Frame_methods[] = {
|
|
570
|
-
#if PYTHON_VERSION >=
|
|
636
|
+
#if PYTHON_VERSION >= 0x300
|
|
571
637
|
{"clear", (PyCFunction)Nuitka_Frame_clear, METH_NOARGS, "F.clear(): clear most references held by the frame"},
|
|
572
638
|
#endif
|
|
573
639
|
{"__sizeof__", (PyCFunction)Nuitka_Frame_sizeof, METH_NOARGS, "F.__sizeof__() -> size of F in memory, in bytes"},
|
|
@@ -601,8 +667,8 @@ PyTypeObject Nuitka_Frame_Type = {
|
|
|
601
667
|
0, // tp_iter
|
|
602
668
|
0, // tp_iternext
|
|
603
669
|
Nuitka_Frame_methods, // tp_methods
|
|
604
|
-
|
|
605
|
-
|
|
670
|
+
Nuitka_Frame_members, // tp_members
|
|
671
|
+
Nuitka_Frame_tp_getset, // tp_getset
|
|
606
672
|
0, // tp_base
|
|
607
673
|
0, // tp_dict
|
|
608
674
|
};
|
|
@@ -619,23 +685,24 @@ void _initCompiledFrameType(void) {
|
|
|
619
685
|
assert(Nuitka_Frame_Type.tp_methods != PyFrame_Type.tp_methods);
|
|
620
686
|
assert(Nuitka_Frame_Type.tp_members != PyFrame_Type.tp_members);
|
|
621
687
|
assert(Nuitka_Frame_Type.tp_getset != PyFrame_Type.tp_getset);
|
|
622
|
-
|
|
688
|
+
|
|
623
689
|
assert(Nuitka_Frame_Type.tp_descr_get != PyFrame_Type.tp_descr_get || PyFrame_Type.tp_descr_get == NULL);
|
|
624
690
|
|
|
625
691
|
assert(Nuitka_Frame_Type.tp_descr_set != PyFrame_Type.tp_descr_set || PyFrame_Type.tp_descr_set == NULL);
|
|
626
692
|
assert(Nuitka_Frame_Type.tp_dictoffset != PyFrame_Type.tp_dictoffset || PyFrame_Type.tp_dictoffset == 0);
|
|
627
693
|
// TODO: These get changed and into the same thing, not sure what to compare against, project something
|
|
694
|
+
// assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
|
|
628
695
|
// assert(Nuitka_Frame_Type.tp_init != PyFrame_Type.tp_init || PyFrame_Type.tp_init == NULL);
|
|
629
696
|
// assert(Nuitka_Frame_Type.tp_alloc != PyFrame_Type.tp_alloc || PyFrame_Type.tp_alloc == NULL);
|
|
630
697
|
// assert(Nuitka_Frame_Type.tp_new != PyFrame_Type.tp_new || PyFrame_Type.tp_new == NULL);
|
|
631
698
|
// assert(Nuitka_Frame_Type.tp_free != PyFrame_Type.tp_free || PyFrame_Type.tp_free == NULL);
|
|
699
|
+
// assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
|
|
632
700
|
assert(Nuitka_Frame_Type.tp_bases != PyFrame_Type.tp_bases);
|
|
633
701
|
assert(Nuitka_Frame_Type.tp_mro != PyFrame_Type.tp_mro);
|
|
634
702
|
assert(Nuitka_Frame_Type.tp_cache != PyFrame_Type.tp_cache || PyFrame_Type.tp_cache == NULL);
|
|
635
703
|
assert(Nuitka_Frame_Type.tp_subclasses != PyFrame_Type.tp_subclasses || PyFrame_Type.tp_cache == NULL);
|
|
636
|
-
assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
|
|
637
704
|
assert(Nuitka_Frame_Type.tp_del != PyFrame_Type.tp_del || PyFrame_Type.tp_del == NULL);
|
|
638
|
-
#if PYTHON_VERSION >=
|
|
705
|
+
#if PYTHON_VERSION >= 0x300
|
|
639
706
|
assert(Nuitka_Frame_Type.tp_finalize != PyFrame_Type.tp_finalize || PyFrame_Type.tp_finalize == NULL);
|
|
640
707
|
#endif
|
|
641
708
|
Nuitka_PyType_Ready(&Nuitka_Frame_Type, &PyFrame_Type, true, true, false, false, false);
|
|
@@ -674,7 +741,12 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
|
|
|
674
741
|
_PyInterpreterFrame *locals_owner = &result->m_interpreter_frame;
|
|
675
742
|
#endif
|
|
676
743
|
|
|
744
|
+
#if PYTHON_VERSION < 0x3d0
|
|
677
745
|
locals_owner->f_code = code;
|
|
746
|
+
#else
|
|
747
|
+
// TODO: Why is our code object not just immortal.
|
|
748
|
+
locals_owner->f_executable = (PyObject *)code;
|
|
749
|
+
#endif
|
|
678
750
|
|
|
679
751
|
frame->f_trace = Py_None;
|
|
680
752
|
|
|
@@ -708,12 +780,12 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
|
|
|
708
780
|
|
|
709
781
|
#if PYTHON_VERSION < 0x3b0
|
|
710
782
|
frame->f_lasti = -1;
|
|
711
|
-
frame->f_iblock = 0;
|
|
783
|
+
frame->f_iblock = 0; // spell-checker: ignore iblock
|
|
712
784
|
#endif
|
|
713
785
|
|
|
714
786
|
frame->f_lineno = code->co_firstlineno;
|
|
715
787
|
|
|
716
|
-
#if PYTHON_VERSION >=
|
|
788
|
+
#if PYTHON_VERSION >= 0x300
|
|
717
789
|
Nuitka_SetFrameGenerator(result, NULL);
|
|
718
790
|
|
|
719
791
|
Nuitka_Frame_MarkAsNotExecuting(result);
|
|
@@ -721,9 +793,18 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
|
|
|
721
793
|
|
|
722
794
|
#if PYTHON_VERSION >= 0x3b0
|
|
723
795
|
result->m_interpreter_frame.frame_obj = &result->m_frame;
|
|
724
|
-
result->m_interpreter_frame.owner =
|
|
796
|
+
result->m_interpreter_frame.owner = FRAME_OWNED_BY_GENERATOR;
|
|
797
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
798
|
+
result->m_interpreter_frame.f_funcobj = NULL; // spell-checker: ignore funcobj
|
|
799
|
+
#else
|
|
800
|
+
result->m_interpreter_frame.f_func = NULL;
|
|
801
|
+
#endif
|
|
802
|
+
#if PYTHON_VERSION < 0x3d0
|
|
725
803
|
result->m_interpreter_frame.prev_instr = _PyCode_CODE(code);
|
|
804
|
+
#endif
|
|
726
805
|
result->m_frame.f_frame = &result->m_interpreter_frame;
|
|
806
|
+
|
|
807
|
+
assert(!_PyFrame_IsIncomplete(&result->m_interpreter_frame));
|
|
727
808
|
#endif
|
|
728
809
|
|
|
729
810
|
Nuitka_GC_Track(result);
|
|
@@ -769,7 +850,7 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
|
|
|
769
850
|
#if PYTHON_VERSION >= 0x3b0
|
|
770
851
|
PyObject *function_qualname,
|
|
771
852
|
#endif
|
|
772
|
-
PyObject *
|
|
853
|
+
PyObject *arg_names, PyObject *free_vars, int arg_count
|
|
773
854
|
#if PYTHON_VERSION >= 0x300
|
|
774
855
|
,
|
|
775
856
|
int kw_only_count
|
|
@@ -780,21 +861,35 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
|
|
|
780
861
|
#endif
|
|
781
862
|
) {
|
|
782
863
|
CHECK_OBJECT(filename);
|
|
783
|
-
assert(
|
|
864
|
+
assert(Nuitka_StringOrUnicode_CheckExact(filename));
|
|
784
865
|
CHECK_OBJECT(function_name);
|
|
785
866
|
assert(Nuitka_String_CheckExact(function_name));
|
|
786
867
|
|
|
787
|
-
|
|
788
|
-
|
|
868
|
+
#if PYTHON_VERSION < 0x300
|
|
869
|
+
PyObject *filename_str = NULL;
|
|
870
|
+
|
|
871
|
+
// TODO: Memory leak of filename, it might be intended transferred to the
|
|
872
|
+
// code object by using code.
|
|
873
|
+
if (PyUnicode_CheckExact(filename)) {
|
|
874
|
+
filename_str = PyUnicode_AsUTF8String(filename);
|
|
875
|
+
filename = filename_str;
|
|
876
|
+
} else {
|
|
877
|
+
filename_str = filename;
|
|
878
|
+
Py_INCREF(filename);
|
|
879
|
+
}
|
|
880
|
+
#endif
|
|
881
|
+
|
|
882
|
+
if (arg_names == NULL || arg_names == Py_None) {
|
|
883
|
+
arg_names = const_tuple_empty;
|
|
789
884
|
}
|
|
790
|
-
CHECK_OBJECT(
|
|
791
|
-
assert(PyTuple_Check(
|
|
885
|
+
CHECK_OBJECT(arg_names);
|
|
886
|
+
assert(PyTuple_Check(arg_names));
|
|
792
887
|
|
|
793
|
-
if (
|
|
794
|
-
|
|
888
|
+
if (free_vars == NULL || free_vars == Py_None) {
|
|
889
|
+
free_vars = const_tuple_empty;
|
|
795
890
|
}
|
|
796
|
-
CHECK_OBJECT(
|
|
797
|
-
assert(PyTuple_Check(
|
|
891
|
+
CHECK_OBJECT(free_vars);
|
|
892
|
+
assert(PyTuple_Check(free_vars));
|
|
798
893
|
|
|
799
894
|
// The PyCode_New has funny code that interns, mutating the tuple that owns
|
|
800
895
|
// it. Really serious non-immutable shit. We have triggered that changes
|
|
@@ -803,36 +898,76 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
|
|
|
803
898
|
// TODO: Reactivate once code object creation becomes un-streaming driven
|
|
804
899
|
// and we can pass the extra args with no worries.
|
|
805
900
|
|
|
806
|
-
// Py_hash_t hash = DEEP_HASH(
|
|
901
|
+
// Py_hash_t hash = DEEP_HASH(arg_names);
|
|
807
902
|
#endif
|
|
808
903
|
|
|
904
|
+
// spell-checker: ignore lnotab
|
|
809
905
|
#if PYTHON_VERSION < 0x300
|
|
810
906
|
PyObject *code = const_str_empty;
|
|
811
907
|
PyObject *lnotab = const_str_empty;
|
|
812
|
-
|
|
813
|
-
|
|
908
|
+
PyObject *consts = const_tuple_empty;
|
|
909
|
+
PyObject *names = const_tuple_empty;
|
|
910
|
+
int stacksize = 0;
|
|
911
|
+
#elif PYTHON_VERSION < 0x3b0
|
|
814
912
|
PyObject *code = const_bytes_empty;
|
|
815
913
|
PyObject *lnotab = const_bytes_empty;
|
|
914
|
+
PyObject *consts = const_tuple_empty;
|
|
915
|
+
PyObject *names = const_tuple_empty;
|
|
916
|
+
int stacksize = 0;
|
|
816
917
|
#else
|
|
817
918
|
// Our code object needs to be recognizable, and Python doesn't store the
|
|
818
919
|
// length anymore, so we need a non-empty one.
|
|
819
920
|
static PyObject *empty_code = NULL;
|
|
921
|
+
static PyObject *lnotab = NULL;
|
|
922
|
+
static PyObject *consts = NULL;
|
|
923
|
+
static PyObject *names = NULL;
|
|
924
|
+
// TODO: Seems removable.
|
|
925
|
+
static PyObject *exception_table = NULL;
|
|
926
|
+
static int stacksize = 0;
|
|
927
|
+
|
|
820
928
|
if (empty_code == NULL) {
|
|
821
|
-
|
|
929
|
+
// Only needed once here.
|
|
930
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
931
|
+
|
|
932
|
+
PyObject *empty_code_module_object = Py_CompileString(
|
|
933
|
+
"def empty(): raise RuntimeError('Compiled function bytecode used')", "<exec>", Py_file_input);
|
|
934
|
+
NUITKA_MAY_BE_UNUSED PyObject *module =
|
|
935
|
+
PyImport_ExecCodeModule("nuitka_empty_function", empty_code_module_object);
|
|
936
|
+
CHECK_OBJECT(module);
|
|
937
|
+
|
|
938
|
+
PyObject *empty_function = PyObject_GetAttrString(module, "empty");
|
|
939
|
+
CHECK_OBJECT(empty_function);
|
|
940
|
+
PyObject *empty_code_object = PyObject_GetAttrString(empty_function, "__code__");
|
|
941
|
+
CHECK_OBJECT(empty_code_object);
|
|
942
|
+
|
|
943
|
+
NUITKA_MAY_BE_UNUSED bool bool_res = Nuitka_DelModuleString(tstate, "nuitka_empty_function");
|
|
944
|
+
assert(bool_res != false);
|
|
945
|
+
|
|
946
|
+
empty_code = PyObject_GetAttrString(empty_code_object, "co_code");
|
|
947
|
+
CHECK_OBJECT(empty_code);
|
|
948
|
+
lnotab = PyObject_GetAttrString(empty_code_object, "co_lnotab");
|
|
949
|
+
CHECK_OBJECT(lnotab);
|
|
950
|
+
consts = PyObject_GetAttrString(empty_code_object, "co_consts");
|
|
951
|
+
CHECK_OBJECT(consts);
|
|
952
|
+
names = PyObject_GetAttrString(empty_code_object, "co_names");
|
|
953
|
+
CHECK_OBJECT(names);
|
|
954
|
+
exception_table = PyObject_GetAttrString(empty_code_object, "co_exceptiontable");
|
|
955
|
+
CHECK_OBJECT(exception_table);
|
|
956
|
+
|
|
957
|
+
stacksize = (int)PyLong_AsLong(PyObject_GetAttrString(empty_code_object, "co_stacksize"));
|
|
822
958
|
}
|
|
959
|
+
|
|
823
960
|
PyObject *code = empty_code;
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
}
|
|
830
|
-
#endif
|
|
961
|
+
CHECK_OBJECT(empty_code);
|
|
962
|
+
CHECK_OBJECT(lnotab);
|
|
963
|
+
CHECK_OBJECT(consts);
|
|
964
|
+
CHECK_OBJECT(names);
|
|
965
|
+
CHECK_OBJECT(exception_table);
|
|
831
966
|
#endif
|
|
832
967
|
|
|
833
968
|
// For Python 3.11 this value is checked, even if not used.
|
|
834
|
-
#if PYTHON_VERSION >=
|
|
835
|
-
int nlocals = (int)PyTuple_GET_SIZE(
|
|
969
|
+
#if PYTHON_VERSION >= 0x3b0
|
|
970
|
+
int nlocals = (int)PyTuple_GET_SIZE(arg_names);
|
|
836
971
|
#else
|
|
837
972
|
int nlocals = 0;
|
|
838
973
|
#endif
|
|
@@ -841,50 +976,52 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
|
|
|
841
976
|
// and is not available for Python2.
|
|
842
977
|
|
|
843
978
|
#if PYTHON_VERSION >= 0x380
|
|
844
|
-
PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, //
|
|
979
|
+
PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // arg_count
|
|
845
980
|
#else
|
|
846
|
-
PyCodeObject *result = PyCode_New(arg_count, //
|
|
981
|
+
PyCodeObject *result = PyCode_New(arg_count, // arg_count
|
|
847
982
|
#endif
|
|
848
983
|
|
|
849
984
|
#if PYTHON_VERSION >= 0x300
|
|
850
985
|
#if PYTHON_VERSION >= 0x380
|
|
851
|
-
pos_only_count, //
|
|
986
|
+
pos_only_count, // pos-only count
|
|
852
987
|
#endif
|
|
853
988
|
kw_only_count, // kw-only count
|
|
854
989
|
#endif
|
|
855
990
|
nlocals, // nlocals
|
|
856
|
-
|
|
991
|
+
stacksize, // stacksize
|
|
857
992
|
flags, // flags
|
|
858
993
|
code, // code (bytecode)
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
const_tuple_empty, //
|
|
994
|
+
consts, // consts (we are not going to be compatible)
|
|
995
|
+
names, // names (we are not going to be compatible)
|
|
996
|
+
arg_names, // var_names (we are not going to be compatible)
|
|
997
|
+
free_vars, // free_vars
|
|
998
|
+
const_tuple_empty, // cell_vars (we are not going to be compatible)
|
|
864
999
|
filename, // filename
|
|
865
1000
|
function_name, // name
|
|
866
1001
|
#if PYTHON_VERSION >= 0x3b0
|
|
867
1002
|
function_qualname, // qualname
|
|
868
1003
|
#endif
|
|
869
|
-
line, //
|
|
1004
|
+
line, // first_lineno (offset of the code object)
|
|
870
1005
|
lnotab // lnotab (table to translate code object)
|
|
871
1006
|
#if PYTHON_VERSION >= 0x3b0
|
|
872
1007
|
,
|
|
873
|
-
|
|
1008
|
+
exception_table // exception_table
|
|
874
1009
|
#endif
|
|
875
1010
|
);
|
|
876
1011
|
|
|
877
|
-
// assert(DEEP_HASH(tstate,
|
|
1012
|
+
// assert(DEEP_HASH(tstate, arg_names) == hash);
|
|
878
1013
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
1014
|
+
#if PYTHON_VERSION < 0x300
|
|
1015
|
+
Py_DECREF(filename_str);
|
|
1016
|
+
#endif
|
|
882
1017
|
|
|
883
|
-
CHECK_OBJECT(result);
|
|
884
1018
|
return result;
|
|
885
1019
|
}
|
|
886
1020
|
|
|
887
1021
|
void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char const *type_description, ...) {
|
|
1022
|
+
assert(Nuitka_Frame_CheckExact((PyObject *)frame_object));
|
|
1023
|
+
CHECK_OBJECT((PyObject *)frame_object);
|
|
1024
|
+
assert(_PyObject_GC_IS_TRACKED(frame_object));
|
|
888
1025
|
assertFrameObject(frame_object);
|
|
889
1026
|
|
|
890
1027
|
#if _DEBUG_FRAME
|
|
@@ -939,6 +1076,11 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
|
|
|
939
1076
|
CHECK_OBJECT_X(value->ob_ref);
|
|
940
1077
|
|
|
941
1078
|
memcpy(t, &value, sizeof(struct Nuitka_CellObject *));
|
|
1079
|
+
// TODO: Reference count must become wrong here, should
|
|
1080
|
+
// be forced to one probably, or we should simply not
|
|
1081
|
+
// store cells, but their values. Take a ref off "value"
|
|
1082
|
+
// is probably not needed.
|
|
1083
|
+
// Py_SET_REFCNT((struct Nuitka_CellObject *)t, 1);
|
|
942
1084
|
Py_INCREF(value);
|
|
943
1085
|
|
|
944
1086
|
t += sizeof(struct Nuitka_CellObject *);
|
|
@@ -975,10 +1117,8 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
|
|
|
975
1117
|
void dumpFrameStack(void) {
|
|
976
1118
|
PyThreadState *tstate = PyThreadState_GET();
|
|
977
1119
|
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
FETCH_ERROR_OCCURRED(&saved_exception_type, &saved_exception_value, &saved_exception_tb);
|
|
1120
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
1121
|
+
FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
982
1122
|
|
|
983
1123
|
int total = 0;
|
|
984
1124
|
|
|
@@ -1014,7 +1154,7 @@ void dumpFrameStack(void) {
|
|
|
1014
1154
|
current_repr = const_str_empty;
|
|
1015
1155
|
Py_INCREF(const_str_empty);
|
|
1016
1156
|
}
|
|
1017
|
-
PyObject *code_repr = PyObject_Str((PyObject *)current->current_frame
|
|
1157
|
+
PyObject *code_repr = PyObject_Str((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(current->current_frame));
|
|
1018
1158
|
#endif
|
|
1019
1159
|
|
|
1020
1160
|
PRINT_FORMAT("Frame stack %d: %s %d %s\n", total--, Nuitka_String_AsString(current_repr), Py_REFCNT(current),
|
|
@@ -1032,7 +1172,7 @@ void dumpFrameStack(void) {
|
|
|
1032
1172
|
|
|
1033
1173
|
PRINT_STRING(">---------<\n");
|
|
1034
1174
|
|
|
1035
|
-
|
|
1175
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
|
|
1036
1176
|
}
|
|
1037
1177
|
|
|
1038
1178
|
static void PRINT_UNCOMPILED_FRAME(char const *prefix, PyFrameObject *frame) {
|
|
@@ -1070,7 +1210,7 @@ void PRINT_INTERPRETER_FRAME(char const *prefix, Nuitka_ThreadStateFrameType *fr
|
|
|
1070
1210
|
if (frame) {
|
|
1071
1211
|
PRINT_FORMAT("0x%lx ", frame);
|
|
1072
1212
|
|
|
1073
|
-
PyObject *code_object_str = PyObject_Repr((PyObject *)frame
|
|
1213
|
+
PyObject *code_object_str = PyObject_Repr((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(frame));
|
|
1074
1214
|
PRINT_ITEM(code_object_str);
|
|
1075
1215
|
Py_DECREF(code_object_str);
|
|
1076
1216
|
} else {
|
|
@@ -1087,8 +1227,22 @@ void PRINT_TOP_FRAME(char const *prefix) {
|
|
|
1087
1227
|
#if PYTHON_VERSION < 0x3b0
|
|
1088
1228
|
PRINT_UNCOMPILED_FRAME(prefix, tstate->frame);
|
|
1089
1229
|
#else
|
|
1090
|
-
PRINT_INTERPRETER_FRAME(prefix, tstate
|
|
1230
|
+
PRINT_INTERPRETER_FRAME(prefix, CURRENT_TSTATE_INTERPRETER_FRAME(tstate));
|
|
1091
1231
|
#endif
|
|
1092
1232
|
}
|
|
1093
1233
|
|
|
1094
|
-
#endif
|
|
1234
|
+
#endif
|
|
1235
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1236
|
+
// integrates with CPython, but also works on its own.
|
|
1237
|
+
//
|
|
1238
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1239
|
+
// you may not use this file except in compliance with the License.
|
|
1240
|
+
// You may obtain a copy of the License at
|
|
1241
|
+
//
|
|
1242
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1243
|
+
//
|
|
1244
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1245
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1246
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1247
|
+
// See the License for the specific language governing permissions and
|
|
1248
|
+
// limitations under the License.
|