Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,20 +1,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
|
/**
|
|
19
4
|
* This is responsible for deep copy and hashing of constants.
|
|
20
5
|
*/
|
|
@@ -41,7 +26,7 @@ PyObject *DEEP_COPY_LIST(PyThreadState *tstate, PyObject *value) {
|
|
|
41
26
|
assert(PyList_CheckExact(value));
|
|
42
27
|
|
|
43
28
|
Py_ssize_t n = PyList_GET_SIZE(value);
|
|
44
|
-
PyObject *result = MAKE_LIST_EMPTY(n);
|
|
29
|
+
PyObject *result = MAKE_LIST_EMPTY(tstate, n);
|
|
45
30
|
|
|
46
31
|
PyTypeObject *type = NULL;
|
|
47
32
|
copy_func copy_function = NULL;
|
|
@@ -76,7 +61,7 @@ PyObject *DEEP_COPY_TUPLE(PyThreadState *tstate, PyObject *value) {
|
|
|
76
61
|
|
|
77
62
|
Py_ssize_t n = PyTuple_GET_SIZE(value);
|
|
78
63
|
|
|
79
|
-
PyObject *result = MAKE_TUPLE_EMPTY_VAR(n);
|
|
64
|
+
PyObject *result = MAKE_TUPLE_EMPTY_VAR(tstate, n);
|
|
80
65
|
|
|
81
66
|
for (Py_ssize_t i = 0; i < n; i++) {
|
|
82
67
|
PyTuple_SET_ITEM(result, i, DEEP_COPY(tstate, PyTuple_GET_ITEM(value, i)));
|
|
@@ -161,8 +146,10 @@ static void _initDeepCopy(void) {
|
|
|
161
146
|
|
|
162
147
|
#if PYTHON_VERSION >= 0x3a0
|
|
163
148
|
{
|
|
149
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
150
|
+
|
|
164
151
|
PyObject *args[2] = {(PyObject *)&PyFloat_Type, (PyObject *)&PyTuple_Type};
|
|
165
|
-
PyObject *args_tuple = MAKE_TUPLE(args, 2);
|
|
152
|
+
PyObject *args_tuple = MAKE_TUPLE(tstate, args, 2);
|
|
166
153
|
PyObject *union_value = MAKE_UNION_TYPE(args_tuple);
|
|
167
154
|
|
|
168
155
|
Nuitka_PyUnion_Type = Py_TYPE(union_value);
|
|
@@ -376,10 +363,9 @@ Py_hash_t DEEP_HASH(PyThreadState *tstate, PyObject *value) {
|
|
|
376
363
|
} else if (PyLong_Check(value)) {
|
|
377
364
|
Py_hash_t result = DEEP_HASH_INIT(tstate, value);
|
|
378
365
|
|
|
379
|
-
|
|
380
|
-
PyTracebackObject *exception_tb;
|
|
366
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
381
367
|
|
|
382
|
-
|
|
368
|
+
FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
383
369
|
|
|
384
370
|
// Use string to hash the long value, which relies on that to not
|
|
385
371
|
// use the object address.
|
|
@@ -387,16 +373,15 @@ Py_hash_t DEEP_HASH(PyThreadState *tstate, PyObject *value) {
|
|
|
387
373
|
result ^= DEEP_HASH(tstate, str);
|
|
388
374
|
Py_DECREF(str);
|
|
389
375
|
|
|
390
|
-
|
|
376
|
+
RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
391
377
|
|
|
392
378
|
return result;
|
|
393
379
|
} else if (PyUnicode_Check(value)) {
|
|
394
380
|
Py_hash_t result = DEEP_HASH(tstate, (PyObject *)Py_TYPE(value));
|
|
395
381
|
|
|
396
|
-
|
|
397
|
-
PyTracebackObject *exception_tb;
|
|
382
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
398
383
|
|
|
399
|
-
|
|
384
|
+
FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
400
385
|
|
|
401
386
|
#if PYTHON_VERSION >= 0x300
|
|
402
387
|
char const *s = (char const *)PyUnicode_DATA(value);
|
|
@@ -412,7 +397,7 @@ Py_hash_t DEEP_HASH(PyThreadState *tstate, PyObject *value) {
|
|
|
412
397
|
|
|
413
398
|
Py_DECREF(str);
|
|
414
399
|
#endif
|
|
415
|
-
|
|
400
|
+
RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
416
401
|
|
|
417
402
|
return result;
|
|
418
403
|
}
|
|
@@ -566,15 +551,15 @@ static PyObject *_DEEP_COPY_ELEMENT_GUIDED(PyThreadState *tstate, PyObject *valu
|
|
|
566
551
|
case 'L':
|
|
567
552
|
return _DEEP_COPY_LIST_GUIDED(tstate, value, guide);
|
|
568
553
|
case 'l':
|
|
569
|
-
return LIST_COPY(value);
|
|
554
|
+
return LIST_COPY(tstate, value);
|
|
570
555
|
case 'T':
|
|
571
556
|
return _DEEP_COPY_TUPLE_GUIDED(tstate, value, guide);
|
|
572
557
|
case 't':
|
|
573
|
-
return TUPLE_COPY(value);
|
|
558
|
+
return TUPLE_COPY(tstate, value);
|
|
574
559
|
case 'D':
|
|
575
560
|
return DEEP_COPY_DICT(tstate, value);
|
|
576
561
|
case 'd':
|
|
577
|
-
return DICT_COPY(value);
|
|
562
|
+
return DICT_COPY(tstate, value);
|
|
578
563
|
case 'S':
|
|
579
564
|
return DEEP_COPY_SET(tstate, value);
|
|
580
565
|
case 'B':
|
|
@@ -592,7 +577,7 @@ static PyObject *_DEEP_COPY_LIST_GUIDED(PyThreadState *tstate, PyObject *value,
|
|
|
592
577
|
|
|
593
578
|
Py_ssize_t size = PyList_GET_SIZE(value);
|
|
594
579
|
|
|
595
|
-
PyObject *result = MAKE_LIST_EMPTY(size);
|
|
580
|
+
PyObject *result = MAKE_LIST_EMPTY(tstate, size);
|
|
596
581
|
|
|
597
582
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
598
583
|
PyObject *item = _DEEP_COPY_ELEMENT_GUIDED(tstate, PyList_GET_ITEM(value, i), guide);
|
|
@@ -609,7 +594,7 @@ static PyObject *_DEEP_COPY_TUPLE_GUIDED(PyThreadState *tstate, PyObject *value,
|
|
|
609
594
|
Py_ssize_t size = PyTuple_GET_SIZE(value);
|
|
610
595
|
|
|
611
596
|
// We cannot have size 0, so this is safe.
|
|
612
|
-
PyObject *result = MAKE_TUPLE_EMPTY(size);
|
|
597
|
+
PyObject *result = MAKE_TUPLE_EMPTY(tstate, size);
|
|
613
598
|
|
|
614
599
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
615
600
|
PyObject *item = _DEEP_COPY_ELEMENT_GUIDED(tstate, PyTuple_GET_ITEM(value, i), guide);
|
|
@@ -631,3 +616,18 @@ PyObject *DEEP_COPY_TUPLE_GUIDED(PyThreadState *tstate, PyObject *value, char co
|
|
|
631
616
|
assert(*guide == 0);
|
|
632
617
|
return result;
|
|
633
618
|
}
|
|
619
|
+
|
|
620
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
621
|
+
// integrates with CPython, but also works on its own.
|
|
622
|
+
//
|
|
623
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
624
|
+
// you may not use this file except in compliance with the License.
|
|
625
|
+
// You may obtain a copy of the License at
|
|
626
|
+
//
|
|
627
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
628
|
+
//
|
|
629
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
630
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
631
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
632
|
+
// See the License for the specific language governing permissions and
|
|
633
|
+
// limitations under the License.
|
|
@@ -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
|
/* These helpers are used to work with dictionaries.
|
|
19
4
|
|
|
20
5
|
*/
|
|
@@ -200,6 +185,12 @@ PyObject *DICT_GET_ITEM1(PyThreadState *tstate, PyObject *dict, PyObject *key) {
|
|
|
200
185
|
#endif
|
|
201
186
|
}
|
|
202
187
|
|
|
188
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
189
|
+
static PyObject *Nuitka_CreateKeyError(PyThreadState *tstate, PyObject *key) {
|
|
190
|
+
return (PyObject *)Nuitka_BaseExceptionSingleArg_new(tstate, (PyTypeObject *)PyExc_KeyError, key);
|
|
191
|
+
}
|
|
192
|
+
#endif
|
|
193
|
+
|
|
203
194
|
static void SET_CURRENT_EXCEPTION_KEY_ERROR(PyThreadState *tstate, PyObject *key) {
|
|
204
195
|
#if PYTHON_VERSION < 0x3c0
|
|
205
196
|
/* Wrap all kinds of tuples, because normalization will later unwrap
|
|
@@ -207,14 +198,16 @@ static void SET_CURRENT_EXCEPTION_KEY_ERROR(PyThreadState *tstate, PyObject *key
|
|
|
207
198
|
* welcome. The check is inexact, as the unwrapping one is too.
|
|
208
199
|
*/
|
|
209
200
|
if (PyTuple_Check(key) || key == Py_None) {
|
|
210
|
-
PyObject *tuple =
|
|
201
|
+
PyObject *tuple = MAKE_TUPLE1(tstate, key);
|
|
211
202
|
|
|
212
203
|
SET_CURRENT_EXCEPTION_TYPE0_VALUE1(tstate, PyExc_KeyError, tuple);
|
|
213
204
|
} else {
|
|
214
205
|
SET_CURRENT_EXCEPTION_TYPE0_VALUE0(tstate, PyExc_KeyError, key);
|
|
215
206
|
}
|
|
216
207
|
#else
|
|
217
|
-
|
|
208
|
+
struct Nuitka_ExceptionPreservationItem exception_state = {Nuitka_CreateKeyError(tstate, key)};
|
|
209
|
+
|
|
210
|
+
RESTORE_ERROR_OCCURRED_STATE(tstate, &exception_state);
|
|
218
211
|
#endif
|
|
219
212
|
}
|
|
220
213
|
|
|
@@ -581,6 +574,15 @@ int DICT_HAS_ITEM(PyThreadState *tstate, PyObject *dict, PyObject *key) {
|
|
|
581
574
|
|
|
582
575
|
return 0;
|
|
583
576
|
}
|
|
577
|
+
|
|
578
|
+
#if PYTHON_VERSION < 0x370 || PYTHON_VERSION >= 0x3b0
|
|
579
|
+
assert(value_addr != NULL);
|
|
580
|
+
PyObject *result = *value_addr;
|
|
581
|
+
#endif
|
|
582
|
+
|
|
583
|
+
if (unlikely(result == NULL)) {
|
|
584
|
+
return 0;
|
|
585
|
+
}
|
|
584
586
|
#endif
|
|
585
587
|
return 1;
|
|
586
588
|
#endif
|
|
@@ -602,12 +604,12 @@ PyObject *DICT_ITEMS(PyObject *dict) {
|
|
|
602
604
|
*/
|
|
603
605
|
retry:
|
|
604
606
|
size = mp->ma_used;
|
|
605
|
-
result = MAKE_LIST_EMPTY(size);
|
|
607
|
+
result = MAKE_LIST_EMPTY(tstate, size);
|
|
606
608
|
CHECK_OBJECT(result);
|
|
607
609
|
|
|
608
610
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
609
611
|
// Later populated.
|
|
610
|
-
PyObject *item = MAKE_TUPLE_EMPTY(2);
|
|
612
|
+
PyObject *item = MAKE_TUPLE_EMPTY(tstate, 2);
|
|
611
613
|
CHECK_OBJECT(item);
|
|
612
614
|
|
|
613
615
|
PyList_SET_ITEM(result, i, item);
|
|
@@ -656,7 +658,7 @@ PyObject *DICT_KEYS(PyObject *dict) {
|
|
|
656
658
|
*/
|
|
657
659
|
retry:
|
|
658
660
|
size = mp->ma_used;
|
|
659
|
-
result = MAKE_LIST_EMPTY(size);
|
|
661
|
+
result = MAKE_LIST_EMPTY(tstate, size);
|
|
660
662
|
CHECK_OBJECT(result);
|
|
661
663
|
|
|
662
664
|
if (unlikely(size != mp->ma_used)) {
|
|
@@ -701,7 +703,7 @@ PyObject *DICT_VALUES(PyObject *dict) {
|
|
|
701
703
|
*/
|
|
702
704
|
retry:
|
|
703
705
|
size = mp->ma_used;
|
|
704
|
-
result = MAKE_LIST_EMPTY(size);
|
|
706
|
+
result = MAKE_LIST_EMPTY(tstate, size);
|
|
705
707
|
CHECK_OBJECT(result);
|
|
706
708
|
|
|
707
709
|
if (unlikely(size != mp->ma_used)) {
|
|
@@ -749,7 +751,8 @@ typedef struct {
|
|
|
749
751
|
#endif
|
|
750
752
|
|
|
751
753
|
// Generic helper for various dictionary iterations, to be inlined.
|
|
752
|
-
static inline PyObject *_MAKE_DICT_ITERATOR(PyDictObject *dict, PyTypeObject *type,
|
|
754
|
+
static inline PyObject *_MAKE_DICT_ITERATOR(PyThreadState *tstate, PyDictObject *dict, PyTypeObject *type,
|
|
755
|
+
bool is_iteritems) {
|
|
753
756
|
CHECK_OBJECT((PyObject *)dict);
|
|
754
757
|
assert(PyDict_CheckExact((PyObject *)dict));
|
|
755
758
|
|
|
@@ -763,7 +766,7 @@ static inline PyObject *_MAKE_DICT_ITERATOR(PyDictObject *dict, PyTypeObject *ty
|
|
|
763
766
|
di->len = dict->ma_used;
|
|
764
767
|
if (is_iteritems) {
|
|
765
768
|
// TODO: Have this as faster variants, we do these sometimes.
|
|
766
|
-
di->di_result =
|
|
769
|
+
di->di_result = MAKE_TUPLE2(tstate, Py_None, Py_None);
|
|
767
770
|
CHECK_OBJECT(di->di_result);
|
|
768
771
|
} else {
|
|
769
772
|
di->di_result = NULL;
|
|
@@ -783,58 +786,54 @@ static inline PyObject *_MAKE_DICT_ITERATOR(PyDictObject *dict, PyTypeObject *ty
|
|
|
783
786
|
#endif
|
|
784
787
|
}
|
|
785
788
|
|
|
786
|
-
PyObject *DICT_ITERITEMS(PyObject *dict) {
|
|
789
|
+
PyObject *DICT_ITERITEMS(PyThreadState *tstate, PyObject *dict) {
|
|
787
790
|
#if PYTHON_VERSION < 0x270
|
|
788
791
|
static PyTypeObject *dictiteritems_type = NULL;
|
|
789
792
|
|
|
790
793
|
if (unlikely(dictiteritems_type == NULL)) {
|
|
791
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
792
794
|
dictiteritems_type =
|
|
793
795
|
Py_TYPE(CALL_FUNCTION_NO_ARGS(tstate, PyObject_GetAttrString(const_dict_empty, "iteritems")));
|
|
794
796
|
}
|
|
795
797
|
|
|
796
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, dictiteritems_type, true);
|
|
798
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, dictiteritems_type, true);
|
|
797
799
|
#elif PYTHON_VERSION < 0x300
|
|
798
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictIterItem_Type, true);
|
|
800
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictIterItem_Type, true);
|
|
799
801
|
#else
|
|
800
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictItems_Type, true);
|
|
802
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictItems_Type, true);
|
|
801
803
|
#endif
|
|
802
804
|
}
|
|
803
805
|
|
|
804
|
-
PyObject *DICT_ITERKEYS(PyObject *dict) {
|
|
806
|
+
PyObject *DICT_ITERKEYS(PyThreadState *tstate, PyObject *dict) {
|
|
805
807
|
#if PYTHON_VERSION < 0x270
|
|
806
808
|
static PyTypeObject *dictiterkeys_type = NULL;
|
|
807
809
|
|
|
808
810
|
if (unlikely(dictiterkeys_type == NULL)) {
|
|
809
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
810
811
|
dictiterkeys_type =
|
|
811
812
|
Py_TYPE(CALL_FUNCTION_NO_ARGS(tstate, PyObject_GetAttrString(const_dict_empty, "iterkeys")));
|
|
812
813
|
}
|
|
813
814
|
|
|
814
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, dictiterkeys_type, false);
|
|
815
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, dictiterkeys_type, false);
|
|
815
816
|
#elif PYTHON_VERSION < 0x300
|
|
816
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictIterKey_Type, false);
|
|
817
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictIterKey_Type, false);
|
|
817
818
|
#else
|
|
818
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictKeys_Type, false);
|
|
819
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictKeys_Type, false);
|
|
819
820
|
#endif
|
|
820
821
|
}
|
|
821
822
|
|
|
822
|
-
PyObject *DICT_ITERVALUES(PyObject *dict) {
|
|
823
|
+
PyObject *DICT_ITERVALUES(PyThreadState *tstate, PyObject *dict) {
|
|
823
824
|
#if PYTHON_VERSION < 0x270
|
|
824
825
|
static PyTypeObject *dictitervalues_type = NULL;
|
|
825
826
|
|
|
826
827
|
if (unlikely(dictitervalues_type == NULL)) {
|
|
827
|
-
PyThreadState *tstate = PyThreadState_GET();
|
|
828
|
-
|
|
829
828
|
dictitervalues_type =
|
|
830
829
|
Py_TYPE(CALL_FUNCTION_NO_ARGS(tstate, PyObject_GetAttrString(const_dict_empty, "itervalues")));
|
|
831
830
|
}
|
|
832
831
|
|
|
833
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, dictitervalues_type, false);
|
|
832
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, dictitervalues_type, false);
|
|
834
833
|
#elif PYTHON_VERSION < 0x300
|
|
835
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictIterValue_Type, false);
|
|
834
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictIterValue_Type, false);
|
|
836
835
|
#else
|
|
837
|
-
return _MAKE_DICT_ITERATOR((PyDictObject *)dict, &PyDictValues_Type, false);
|
|
836
|
+
return _MAKE_DICT_ITERATOR(tstate, (PyDictObject *)dict, &PyDictValues_Type, false);
|
|
838
837
|
#endif
|
|
839
838
|
}
|
|
840
839
|
|
|
@@ -897,6 +896,111 @@ PyObject *DICT_VIEWITEMS(PyObject *dict) {
|
|
|
897
896
|
#endif
|
|
898
897
|
}
|
|
899
898
|
|
|
899
|
+
#if PYTHON_VERSION >= 0x300
|
|
900
|
+
static PyDictObject *_Nuitka_AllocatePyDictObject(PyThreadState *tstate) {
|
|
901
|
+
PyDictObject *result_mp;
|
|
902
|
+
|
|
903
|
+
#if NUITKA_DICT_HAS_FREELIST
|
|
904
|
+
// This is the CPython name, spell-checker: ignore numfree
|
|
905
|
+
|
|
906
|
+
#if PYTHON_VERSION < 0x3d0
|
|
907
|
+
PyDictObject **items = tstate->interp->dict_state.free_list;
|
|
908
|
+
int *numfree = &tstate->interp->dict_state.numfree;
|
|
909
|
+
#else
|
|
910
|
+
struct _Py_object_freelists *freelists = _Nuitka_object_freelists_GET(tstate);
|
|
911
|
+
struct _Py_dict_freelist *state = &freelists->dicts;
|
|
912
|
+
PyDictObject **items = state->items;
|
|
913
|
+
int *numfree = &state->numfree;
|
|
914
|
+
#endif
|
|
915
|
+
|
|
916
|
+
if (*numfree) {
|
|
917
|
+
(*numfree) -= 1;
|
|
918
|
+
result_mp = items[*numfree];
|
|
919
|
+
|
|
920
|
+
Nuitka_Py_NewReference((PyObject *)result_mp);
|
|
921
|
+
|
|
922
|
+
assert(PyDict_CheckExact((PyObject *)result_mp));
|
|
923
|
+
assert(result_mp != NULL);
|
|
924
|
+
} else
|
|
925
|
+
#endif
|
|
926
|
+
{
|
|
927
|
+
result_mp = (PyDictObject *)Nuitka_GC_New(&PyDict_Type);
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
return result_mp;
|
|
931
|
+
}
|
|
932
|
+
#endif
|
|
933
|
+
|
|
934
|
+
#if PYTHON_VERSION >= 0x360
|
|
935
|
+
static PyDictKeysObject *_Nuitka_AllocatePyDictKeysObject(PyThreadState *tstate, Py_ssize_t keys_size) {
|
|
936
|
+
// CPython names, spell-checker: ignore numfree,dictkeys
|
|
937
|
+
PyDictKeysObject *dk;
|
|
938
|
+
|
|
939
|
+
// TODO: Cannot always use cached objects. Need to also consider
|
|
940
|
+
// "log2_size == PyDict_LOG_MINSIZE && unicode" as a criterion,
|
|
941
|
+
// seems it can only be used for the smallest keys type.
|
|
942
|
+
#if NUITKA_DICT_HAS_FREELIST && 0
|
|
943
|
+
#if PYTHON_VERSION < 0x3d0
|
|
944
|
+
PyDictKeysObject **items = tstate->interp->dict_state.keys_free_list;
|
|
945
|
+
int *numfree = &tstate->interp->dict_state.keys_numfree;
|
|
946
|
+
#else
|
|
947
|
+
struct _Py_object_freelists *freelists = _Nuitka_object_freelists_GET(tstate);
|
|
948
|
+
struct _Py_dictkeys_freelist *state = &freelists->dictkeys;
|
|
949
|
+
PyDictKeysObject **items = state->items;
|
|
950
|
+
int *numfree = &state->numfree;
|
|
951
|
+
#endif
|
|
952
|
+
|
|
953
|
+
if (*numfree) {
|
|
954
|
+
(*numfree) -= 1;
|
|
955
|
+
dk = items[*numfree];
|
|
956
|
+
} else
|
|
957
|
+
#endif
|
|
958
|
+
{
|
|
959
|
+
#if PYTHON_VERSION < 0x3d0
|
|
960
|
+
dk = (PyDictKeysObject *)NuitkaObject_Malloc(keys_size);
|
|
961
|
+
#else
|
|
962
|
+
dk = (PyDictKeysObject *)NuitkaMem_Malloc(keys_size);
|
|
963
|
+
#endif
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
return dk;
|
|
967
|
+
}
|
|
968
|
+
#endif
|
|
969
|
+
|
|
970
|
+
#if PYTHON_VERSION >= 0x360 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_DICT_OPT)
|
|
971
|
+
|
|
972
|
+
// Usable fraction of keys.
|
|
973
|
+
#define DK_USABLE_FRACTION(n) (((n) << 1) / 3)
|
|
974
|
+
|
|
975
|
+
static Py_ssize_t _Nuitka_Py_PyDict_KeysSize(PyDictKeysObject *keys) {
|
|
976
|
+
#if PYTHON_VERSION < 0x360
|
|
977
|
+
return sizeof(PyDictKeysObject) + (DK_SIZE(keys) - 1) * sizeof(PyDictKeyEntry);
|
|
978
|
+
#elif PYTHON_VERSION < 0x370
|
|
979
|
+
return (sizeof(PyDictKeysObject) - Py_MEMBER_SIZE(PyDictKeysObject, dk_indices) + DK_IXSIZE(keys) * DK_SIZE(keys) +
|
|
980
|
+
DK_USABLE_FRACTION(DK_SIZE(keys)) * sizeof(PyDictKeyEntry));
|
|
981
|
+
#elif PYTHON_VERSION < 0x3b0
|
|
982
|
+
return (sizeof(PyDictKeysObject) + DK_IXSIZE(keys) * DK_SIZE(keys) +
|
|
983
|
+
DK_USABLE_FRACTION(DK_SIZE(keys)) * sizeof(PyDictKeyEntry));
|
|
984
|
+
#else
|
|
985
|
+
size_t entry_size = keys->dk_kind == DICT_KEYS_GENERAL ? sizeof(PyDictKeyEntry) : sizeof(PyDictUnicodeEntry);
|
|
986
|
+
return (sizeof(PyDictKeysObject) + ((size_t)1 << keys->dk_log2_index_bytes) +
|
|
987
|
+
DK_USABLE_FRACTION(DK_SIZE(keys)) * entry_size);
|
|
988
|
+
#endif
|
|
989
|
+
}
|
|
990
|
+
#endif
|
|
991
|
+
|
|
992
|
+
#if PYTHON_VERSION < 0x3b0
|
|
993
|
+
typedef PyObject *PyDictValues;
|
|
994
|
+
#endif
|
|
995
|
+
|
|
996
|
+
#if PYTHON_VERSION < 0x360
|
|
997
|
+
#define DK_ENTRIES_SIZE(keys) (keys->dk_size)
|
|
998
|
+
#elif PYTHON_VERSION < 0x3b0
|
|
999
|
+
#define DK_ENTRIES_SIZE(keys) DK_USABLE_FRACTION(DK_SIZE(keys))
|
|
1000
|
+
#else
|
|
1001
|
+
#define DK_ENTRIES_SIZE(keys) (keys->dk_nentries)
|
|
1002
|
+
#endif
|
|
1003
|
+
|
|
900
1004
|
#include "HelpersDictionariesGenerated.c"
|
|
901
1005
|
|
|
902
1006
|
void DICT_CLEAR(PyObject *dict) {
|
|
@@ -1000,9 +1104,9 @@ static Py_ssize_t Nuitka_Py_unicodekeys_lookup_generic(PyDictObject *mp, PyDictK
|
|
|
1000
1104
|
NUITKA_CANNOT_GET_HERE("Nuitka_Py_unicodekeys_lookup_generic failed");
|
|
1001
1105
|
}
|
|
1002
1106
|
|
|
1003
|
-
|
|
1004
|
-
static Py_ssize_t Nuitka_Py_unicodekeys_lookup_unicode(PyDictKeysObject *dk, PyObject *key, Py_hash_t hash) {
|
|
1107
|
+
Py_ssize_t Nuitka_Py_unicodekeys_lookup_unicode(PyDictKeysObject *dk, PyObject *key, Py_hash_t hash) {
|
|
1005
1108
|
assert(PyUnicode_CheckExact(key));
|
|
1109
|
+
assert(dk->dk_kind != DICT_KEYS_GENERAL);
|
|
1006
1110
|
|
|
1007
1111
|
PyDictUnicodeEntry *ep0 = DK_UNICODE_ENTRIES(dk);
|
|
1008
1112
|
|
|
@@ -1093,7 +1197,6 @@ static Py_ssize_t Nuitka_Py_dictkeys_generic_lookup(PyDictObject *mp, PyDictKeys
|
|
|
1093
1197
|
perturb >>= PERTURB_SHIFT;
|
|
1094
1198
|
i = mask & (i * 5 + perturb + 1);
|
|
1095
1199
|
}
|
|
1096
|
-
Py_UNREACHABLE();
|
|
1097
1200
|
}
|
|
1098
1201
|
|
|
1099
1202
|
Py_ssize_t Nuitka_PyDictLookup(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject ***value_addr) {
|
|
@@ -1144,11 +1247,25 @@ restart:
|
|
|
1144
1247
|
return ix;
|
|
1145
1248
|
}
|
|
1146
1249
|
|
|
1147
|
-
// TODO: Take advantage of string key knowledge directly.
|
|
1148
1250
|
Py_ssize_t Nuitka_PyDictLookupStr(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject ***value_addr) {
|
|
1149
1251
|
assert(PyUnicode_CheckExact(key));
|
|
1150
1252
|
|
|
1151
|
-
|
|
1253
|
+
PyDictKeysObject *dk = mp->ma_keys;
|
|
1254
|
+
assert(dk->dk_kind != DICT_KEYS_GENERAL);
|
|
1255
|
+
|
|
1256
|
+
Py_ssize_t ix = Nuitka_Py_unicodekeys_lookup_unicode(dk, key, hash);
|
|
1257
|
+
|
|
1258
|
+
if (ix >= 0) {
|
|
1259
|
+
if (dk->dk_kind == DICT_KEYS_SPLIT) {
|
|
1260
|
+
*value_addr = &mp->ma_values->values[ix];
|
|
1261
|
+
} else {
|
|
1262
|
+
*value_addr = &DK_UNICODE_ENTRIES(dk)[ix].me_value;
|
|
1263
|
+
}
|
|
1264
|
+
} else {
|
|
1265
|
+
*value_addr = NULL;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
return ix;
|
|
1152
1269
|
}
|
|
1153
1270
|
|
|
1154
1271
|
#endif
|
|
@@ -1156,8 +1273,8 @@ Py_ssize_t Nuitka_PyDictLookupStr(PyDictObject *mp, PyObject *key, Py_hash_t has
|
|
|
1156
1273
|
bool Nuitka_DictNext(PyObject *dict, Py_ssize_t *pos, PyObject **key_ptr, PyObject **value_ptr) {
|
|
1157
1274
|
CHECK_OBJECT(dict);
|
|
1158
1275
|
assert(PyDict_CheckExact(dict));
|
|
1159
|
-
assert(key_ptr);
|
|
1160
|
-
assert(value_ptr);
|
|
1276
|
+
assert(key_ptr != NULL);
|
|
1277
|
+
assert(value_ptr != NULL);
|
|
1161
1278
|
|
|
1162
1279
|
#if PYTHON_VERSION < 0x300
|
|
1163
1280
|
Py_ssize_t i = *pos;
|
|
@@ -1180,6 +1297,39 @@ bool Nuitka_DictNext(PyObject *dict, Py_ssize_t *pos, PyObject **key_ptr, PyObje
|
|
|
1180
1297
|
|
|
1181
1298
|
return true;
|
|
1182
1299
|
|
|
1300
|
+
#elif PYTHON_VERSION < 0x360
|
|
1301
|
+
PyDictObject *mp = (PyDictObject *)dict;
|
|
1302
|
+
PyObject **dict_value_ptr;
|
|
1303
|
+
Py_ssize_t offset;
|
|
1304
|
+
|
|
1305
|
+
Py_ssize_t i = *pos;
|
|
1306
|
+
assert(i >= 0);
|
|
1307
|
+
|
|
1308
|
+
if (mp->ma_values) {
|
|
1309
|
+
dict_value_ptr = &mp->ma_values[i];
|
|
1310
|
+
offset = sizeof(PyObject *);
|
|
1311
|
+
} else {
|
|
1312
|
+
dict_value_ptr = &mp->ma_keys->dk_entries[i].me_value;
|
|
1313
|
+
offset = sizeof(PyDictKeyEntry);
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
Py_ssize_t mask = DK_MASK(mp->ma_keys);
|
|
1317
|
+
|
|
1318
|
+
while ((i <= mask) && (*dict_value_ptr == NULL)) {
|
|
1319
|
+
dict_value_ptr = (PyObject **)(((char *)dict_value_ptr) + offset);
|
|
1320
|
+
i++;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
if (i > mask) {
|
|
1324
|
+
return false;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
*key_ptr = mp->ma_keys->dk_entries[i].me_key;
|
|
1328
|
+
*value_ptr = *dict_value_ptr;
|
|
1329
|
+
*pos = i + 1;
|
|
1330
|
+
|
|
1331
|
+
return true;
|
|
1332
|
+
|
|
1183
1333
|
#elif PYTHON_VERSION < 0x3b0
|
|
1184
1334
|
PyDictObject *mp = (PyDictObject *)dict;
|
|
1185
1335
|
PyDictKeyEntry *entry;
|
|
@@ -1188,7 +1338,6 @@ bool Nuitka_DictNext(PyObject *dict, Py_ssize_t *pos, PyObject **key_ptr, PyObje
|
|
|
1188
1338
|
Py_ssize_t i = *pos;
|
|
1189
1339
|
assert(i >= 0);
|
|
1190
1340
|
|
|
1191
|
-
#ifndef PY_NOGIL
|
|
1192
1341
|
if (mp->ma_values) {
|
|
1193
1342
|
if (i >= mp->ma_used) {
|
|
1194
1343
|
return false;
|
|
@@ -1198,15 +1347,9 @@ bool Nuitka_DictNext(PyObject *dict, Py_ssize_t *pos, PyObject **key_ptr, PyObje
|
|
|
1198
1347
|
value = DK_VALUE(mp, i);
|
|
1199
1348
|
|
|
1200
1349
|
assert(value != NULL);
|
|
1201
|
-
#else
|
|
1202
|
-
if (false) {
|
|
1203
|
-
#endif
|
|
1204
1350
|
} else {
|
|
1205
|
-
#if PYTHON_VERSION < 0x360
|
|
1206
|
-
Py_ssize_t n = mp->ma_keys->dk_size;
|
|
1207
|
-
#else
|
|
1208
1351
|
Py_ssize_t n = mp->ma_keys->dk_nentries;
|
|
1209
|
-
|
|
1352
|
+
|
|
1210
1353
|
if (i >= n) {
|
|
1211
1354
|
return false;
|
|
1212
1355
|
}
|
|
@@ -1307,9 +1450,9 @@ PyObject *TO_DICT(PyThreadState *tstate, PyObject *seq_obj, PyObject *dict_obj)
|
|
|
1307
1450
|
|
|
1308
1451
|
// Fast path for dictionaries.
|
|
1309
1452
|
if (PyDict_CheckExact(seq_obj)) {
|
|
1310
|
-
result = DICT_COPY(seq_obj);
|
|
1453
|
+
result = DICT_COPY(tstate, seq_obj);
|
|
1311
1454
|
} else {
|
|
1312
|
-
result = MAKE_DICT_EMPTY();
|
|
1455
|
+
result = MAKE_DICT_EMPTY(tstate);
|
|
1313
1456
|
|
|
1314
1457
|
Py_INCREF(seq_obj);
|
|
1315
1458
|
|
|
@@ -1337,7 +1480,7 @@ PyObject *TO_DICT(PyThreadState *tstate, PyObject *seq_obj, PyObject *dict_obj)
|
|
|
1337
1480
|
}
|
|
1338
1481
|
}
|
|
1339
1482
|
} else {
|
|
1340
|
-
result = MAKE_DICT_EMPTY();
|
|
1483
|
+
result = MAKE_DICT_EMPTY(tstate);
|
|
1341
1484
|
}
|
|
1342
1485
|
|
|
1343
1486
|
// TODO: Should specialize for dict_obj/seq_obj presence to save a bit of time
|
|
@@ -1355,20 +1498,31 @@ PyObject *TO_DICT(PyThreadState *tstate, PyObject *seq_obj, PyObject *dict_obj)
|
|
|
1355
1498
|
return result;
|
|
1356
1499
|
}
|
|
1357
1500
|
|
|
1501
|
+
#if _NUITKA_MAINTAIN_DICT_VERSION_TAG
|
|
1502
|
+
uint64_t nuitka_dict_version_tag_counter = ((uint64_t)1) << 32;
|
|
1503
|
+
#endif
|
|
1504
|
+
|
|
1358
1505
|
#if NUITKA_DICT_HAS_FREELIST
|
|
1359
|
-
PyObject *MAKE_DICT_EMPTY(
|
|
1506
|
+
PyObject *MAKE_DICT_EMPTY(PyThreadState *tstate) {
|
|
1360
1507
|
PyDictObject *empty_dict_mp = (PyDictObject *)const_dict_empty;
|
|
1361
1508
|
|
|
1509
|
+
#if PYTHON_VERSION < 0x3c0
|
|
1362
1510
|
empty_dict_mp->ma_keys->dk_refcnt++;
|
|
1511
|
+
#endif
|
|
1363
1512
|
|
|
1364
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
1513
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
1365
1514
|
|
|
1366
1515
|
result_mp->ma_keys = empty_dict_mp->ma_keys;
|
|
1367
1516
|
result_mp->ma_values = empty_dict_mp->ma_values;
|
|
1368
1517
|
result_mp->ma_used = 0;
|
|
1518
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
1519
|
+
result_mp->ma_version_tag = DICT_NEXT_VERSION(_PyInterpreterState_GET());
|
|
1520
|
+
#elif PYTHON_VERSION >= 0x360
|
|
1521
|
+
result_mp->ma_version_tag = 1;
|
|
1522
|
+
#endif
|
|
1369
1523
|
|
|
1370
|
-
// Key reference needs to be counted
|
|
1371
|
-
#
|
|
1524
|
+
// Key reference needs to be counted on older Python
|
|
1525
|
+
#if defined(Py_REF_DEBUG) && PYTHON_VERSION < 0x3c0
|
|
1372
1526
|
_Py_RefTotal++;
|
|
1373
1527
|
#endif
|
|
1374
1528
|
|
|
@@ -1444,3 +1598,18 @@ PyObject *MAKE_DICT_X_CSTR(char const **keys, PyObject **values, Py_ssize_t size
|
|
|
1444
1598
|
|
|
1445
1599
|
return result;
|
|
1446
1600
|
}
|
|
1601
|
+
|
|
1602
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1603
|
+
// integrates with CPython, but also works on its own.
|
|
1604
|
+
//
|
|
1605
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1606
|
+
// you may not use this file except in compliance with the License.
|
|
1607
|
+
// You may obtain a copy of the License at
|
|
1608
|
+
//
|
|
1609
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1610
|
+
//
|
|
1611
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1612
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1613
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1614
|
+
// See the License for the specific language governing permissions and
|
|
1615
|
+
// limitations under the License.
|