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,4 @@
|
|
|
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
|
|
18
2
|
|
|
19
3
|
/* This file is included from another C file, help IDEs to still parse it on its own. */
|
|
20
4
|
#ifdef __IDE_ONLY__
|
|
@@ -23,21 +7,6 @@
|
|
|
23
7
|
|
|
24
8
|
/* WARNING, this code is GENERATED. Modify the template HelperDictionaryCopy.c.j2 instead! */
|
|
25
9
|
|
|
26
|
-
// Usable fraction of keys.
|
|
27
|
-
#define DK_USABLE_FRACTION(n) (((n) << 1) / 3)
|
|
28
|
-
|
|
29
|
-
#if PYTHON_VERSION < 0x3b0
|
|
30
|
-
typedef PyObject *PyDictValues;
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
#if PYTHON_VERSION < 0x360
|
|
34
|
-
#define DK_ENTRIES_SIZE(keys) (keys->dk_size)
|
|
35
|
-
#elif PYTHON_VERSION < 0x3b0
|
|
36
|
-
#define DK_ENTRIES_SIZE(keys) DK_USABLE_FRACTION(DK_SIZE(keys))
|
|
37
|
-
#else
|
|
38
|
-
#define DK_ENTRIES_SIZE(keys) (keys->dk_nentries)
|
|
39
|
-
#endif
|
|
40
|
-
|
|
41
10
|
// More than 2/3 of the keys are used, i.e. no space is wasted.
|
|
42
11
|
#if PYTHON_VERSION < 0x360
|
|
43
12
|
#define IS_COMPACT(dict_mp) (dict_mp->ma_used >= (dict_mp->ma_keys->dk_size * 2) / 3)
|
|
@@ -49,12 +18,12 @@ static inline PyDictValues *_Nuitka_PyDict_new_values(Py_ssize_t size) {
|
|
|
49
18
|
Py_ssize_t values_size = sizeof(PyObject *) * size;
|
|
50
19
|
|
|
51
20
|
#if PYTHON_VERSION < 0x3b0
|
|
52
|
-
return (PyDictValues *)
|
|
21
|
+
return (PyDictValues *)NuitkaMem_Malloc(values_size);
|
|
53
22
|
#else
|
|
54
23
|
// With Python3.11 or higher a prefix is allocated too.
|
|
55
24
|
size_t prefix_size = _Py_SIZE_ROUND_UP(size + 2, sizeof(PyObject *));
|
|
56
25
|
size_t n = prefix_size + values_size;
|
|
57
|
-
uint8_t *mem = (uint8_t *)
|
|
26
|
+
uint8_t *mem = (uint8_t *)NuitkaMem_Malloc(n);
|
|
58
27
|
|
|
59
28
|
assert(mem != NULL);
|
|
60
29
|
|
|
@@ -65,56 +34,7 @@ static inline PyDictValues *_Nuitka_PyDict_new_values(Py_ssize_t size) {
|
|
|
65
34
|
#endif
|
|
66
35
|
}
|
|
67
36
|
|
|
68
|
-
|
|
69
|
-
static struct _Py_dict_state *_Nuitka_Py_get_dict_state(void) {
|
|
70
|
-
PyInterpreterState *interp = _PyInterpreterState_GET();
|
|
71
|
-
return &interp->dict_state;
|
|
72
|
-
}
|
|
73
|
-
#endif
|
|
74
|
-
|
|
75
|
-
#if PYTHON_VERSION >= 0x300
|
|
76
|
-
static PyDictObject *_Nuitka_AllocatePyDictObject(void) {
|
|
77
|
-
PyDictObject *result_mp;
|
|
78
|
-
|
|
79
|
-
#if NUITKA_DICT_HAS_FREELIST
|
|
80
|
-
struct _Py_dict_state *state = _Nuitka_Py_get_dict_state();
|
|
81
|
-
|
|
82
|
-
if (state->numfree) {
|
|
83
|
-
result_mp = state->free_list[--state->numfree];
|
|
84
|
-
|
|
85
|
-
Nuitka_Py_NewReference((PyObject *)result_mp);
|
|
86
|
-
|
|
87
|
-
assert(PyDict_CheckExact((PyObject *)result_mp));
|
|
88
|
-
assert(result_mp != NULL);
|
|
89
|
-
} else
|
|
90
|
-
#endif
|
|
91
|
-
{
|
|
92
|
-
result_mp = (PyDictObject *)Nuitka_GC_New(&PyDict_Type);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return result_mp;
|
|
96
|
-
}
|
|
97
|
-
#endif
|
|
98
|
-
|
|
99
|
-
#if PYTHON_VERSION >= 0x360 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_DICT_OPT)
|
|
100
|
-
static Py_ssize_t _Nuitka_Py_PyDict_KeysSize(PyDictKeysObject *keys) {
|
|
101
|
-
#if PYTHON_VERSION < 0x360
|
|
102
|
-
return sizeof(PyDictKeysObject) + (DK_SIZE(keys) - 1) * sizeof(PyDictKeyEntry);
|
|
103
|
-
#elif PYTHON_VERSION < 0x370
|
|
104
|
-
return (sizeof(PyDictKeysObject) - Py_MEMBER_SIZE(PyDictKeysObject, dk_indices) + DK_IXSIZE(keys) * DK_SIZE(keys) +
|
|
105
|
-
DK_USABLE_FRACTION(DK_SIZE(keys)) * sizeof(PyDictKeyEntry));
|
|
106
|
-
#elif PYTHON_VERSION < 0x3b0
|
|
107
|
-
return (sizeof(PyDictKeysObject) + DK_IXSIZE(keys) * DK_SIZE(keys) +
|
|
108
|
-
DK_USABLE_FRACTION(DK_SIZE(keys)) * sizeof(PyDictKeyEntry));
|
|
109
|
-
#else
|
|
110
|
-
size_t entry_size = keys->dk_kind == DICT_KEYS_GENERAL ? sizeof(PyDictKeyEntry) : sizeof(PyDictUnicodeEntry);
|
|
111
|
-
return (sizeof(PyDictKeysObject) + ((size_t)1 << keys->dk_log2_index_bytes) +
|
|
112
|
-
DK_USABLE_FRACTION(DK_SIZE(keys)) * entry_size);
|
|
113
|
-
#endif
|
|
114
|
-
}
|
|
115
|
-
#endif
|
|
116
|
-
|
|
117
|
-
PyObject *DICT_COPY(PyObject *dict_value) {
|
|
37
|
+
PyObject *DICT_COPY(PyThreadState *tstate, PyObject *dict_value) {
|
|
118
38
|
#if _NUITKA_EXPERIMENTAL_DISABLE_DICT_OPT
|
|
119
39
|
CHECK_OBJECT(dict_value);
|
|
120
40
|
assert(PyDict_CheckExact(dict_value));
|
|
@@ -127,7 +47,7 @@ PyObject *DICT_COPY(PyObject *dict_value) {
|
|
|
127
47
|
assert(PyDict_CheckExact(dict_value));
|
|
128
48
|
|
|
129
49
|
if (((PyDictObject *)dict_value)->ma_used == 0) {
|
|
130
|
-
result = MAKE_DICT_EMPTY();
|
|
50
|
+
result = MAKE_DICT_EMPTY(tstate);
|
|
131
51
|
} else {
|
|
132
52
|
PyDictObject *dict_mp = (PyDictObject *)dict_value;
|
|
133
53
|
|
|
@@ -144,27 +64,26 @@ PyObject *DICT_COPY(PyObject *dict_value) {
|
|
|
144
64
|
|
|
145
65
|
PyObject *value = entry->me_value;
|
|
146
66
|
|
|
147
|
-
int res = PyDict_SetItem(result, key, value);
|
|
67
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
148
68
|
assert(res == 0);
|
|
149
69
|
}
|
|
150
70
|
}
|
|
151
71
|
#else
|
|
152
72
|
/* Python 3 */
|
|
153
|
-
#ifndef PY_NOGIL
|
|
154
73
|
if (_PyDict_HasSplitTable(dict_mp)) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
74
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
158
75
|
assert(result_mp != NULL);
|
|
159
76
|
result = (PyObject *)result_mp;
|
|
160
77
|
|
|
78
|
+
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
79
|
+
|
|
161
80
|
PyDictValues *new_values = _Nuitka_PyDict_new_values(size);
|
|
162
81
|
assert(new_values != NULL);
|
|
163
82
|
|
|
164
83
|
#if PYTHON_VERSION >= 0x3b0
|
|
165
84
|
// Need to preserve values prefix.
|
|
166
85
|
size_t prefix_size = ((uint8_t *)new_values)[-1];
|
|
167
|
-
memcpy((
|
|
86
|
+
memcpy((char *)new_values - prefix_size, (char *)dict_mp->ma_values - prefix_size, prefix_size - 1);
|
|
168
87
|
#endif
|
|
169
88
|
|
|
170
89
|
result_mp->ma_values = new_values;
|
|
@@ -191,7 +110,6 @@ PyObject *DICT_COPY(PyObject *dict_value) {
|
|
|
191
110
|
|
|
192
111
|
Nuitka_GC_Track(result_mp);
|
|
193
112
|
} else
|
|
194
|
-
#endif
|
|
195
113
|
#if PYTHON_VERSION >= 0x360
|
|
196
114
|
// Fast dictionary copy if it has at least 2/3 space usage. This is most relevant
|
|
197
115
|
// for the DICT_COPY, where it might even be the intention to trigger a shrink with
|
|
@@ -200,14 +118,14 @@ PyObject *DICT_COPY(PyObject *dict_value) {
|
|
|
200
118
|
assert(dict_mp->ma_values == NULL);
|
|
201
119
|
assert(dict_mp->ma_keys->dk_refcnt == 1);
|
|
202
120
|
|
|
203
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
121
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
204
122
|
result = (PyObject *)result_mp;
|
|
205
123
|
|
|
206
124
|
result_mp->ma_values = NULL;
|
|
207
125
|
result_mp->ma_used = dict_mp->ma_used;
|
|
208
126
|
|
|
209
127
|
Py_ssize_t keys_size = _Nuitka_Py_PyDict_KeysSize(dict_mp->ma_keys);
|
|
210
|
-
result_mp->ma_keys = (
|
|
128
|
+
result_mp->ma_keys = _Nuitka_AllocatePyDictKeysObject(tstate, keys_size);
|
|
211
129
|
assert(result_mp->ma_keys);
|
|
212
130
|
|
|
213
131
|
memcpy(result_mp->ma_keys, dict_mp->ma_keys, keys_size);
|
|
@@ -277,20 +195,37 @@ PyObject *DICT_COPY(PyObject *dict_value) {
|
|
|
277
195
|
{
|
|
278
196
|
result = _PyDict_NewPresized(dict_mp->ma_used);
|
|
279
197
|
|
|
198
|
+
#if PYTHON_VERSION < 0x3b0
|
|
280
199
|
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
281
200
|
|
|
282
201
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
283
202
|
PyDictKeyEntry *entry = &DK_ENTRIES(dict_mp->ma_keys)[i];
|
|
203
|
+
PyObject *value = entry->me_value;
|
|
284
204
|
|
|
285
|
-
if (
|
|
205
|
+
if (value != NULL) {
|
|
286
206
|
PyObject *key = entry->me_key;
|
|
207
|
+
CHECK_OBJECT(key);
|
|
287
208
|
|
|
288
|
-
|
|
209
|
+
CHECK_OBJECT(value);
|
|
289
210
|
|
|
290
|
-
int res = PyDict_SetItem(result, key, value);
|
|
211
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
291
212
|
assert(res == 0);
|
|
292
213
|
}
|
|
293
214
|
}
|
|
215
|
+
#else
|
|
216
|
+
Py_ssize_t pos = 0;
|
|
217
|
+
PyObject *key, *value;
|
|
218
|
+
|
|
219
|
+
while (Nuitka_DictNext((PyObject *)dict_mp, &pos, &key, &value)) {
|
|
220
|
+
CHECK_OBJECT(key);
|
|
221
|
+
CHECK_OBJECT(value);
|
|
222
|
+
|
|
223
|
+
CHECK_OBJECT(value);
|
|
224
|
+
|
|
225
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
226
|
+
assert(res == 0);
|
|
227
|
+
}
|
|
228
|
+
#endif
|
|
294
229
|
}
|
|
295
230
|
#endif
|
|
296
231
|
}
|
|
@@ -306,7 +241,7 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
306
241
|
CHECK_OBJECT(dict_value);
|
|
307
242
|
assert(PyDict_CheckExact(dict_value));
|
|
308
243
|
|
|
309
|
-
result = DICT_COPY(dict_value);
|
|
244
|
+
result = DICT_COPY(tstate, dict_value);
|
|
310
245
|
|
|
311
246
|
Py_ssize_t pos = 0;
|
|
312
247
|
PyObject *key, *value;
|
|
@@ -323,7 +258,7 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
323
258
|
assert(PyDict_CheckExact(dict_value));
|
|
324
259
|
|
|
325
260
|
if (((PyDictObject *)dict_value)->ma_used == 0) {
|
|
326
|
-
result = MAKE_DICT_EMPTY();
|
|
261
|
+
result = MAKE_DICT_EMPTY(tstate);
|
|
327
262
|
} else {
|
|
328
263
|
PyDictObject *dict_mp = (PyDictObject *)dict_value;
|
|
329
264
|
|
|
@@ -341,7 +276,7 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
341
276
|
PyObject *value = entry->me_value;
|
|
342
277
|
value = DEEP_COPY(tstate, value);
|
|
343
278
|
|
|
344
|
-
int res = PyDict_SetItem(result, key, value);
|
|
279
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
345
280
|
assert(res == 0);
|
|
346
281
|
|
|
347
282
|
Py_DECREF(value);
|
|
@@ -349,21 +284,20 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
349
284
|
}
|
|
350
285
|
#else
|
|
351
286
|
/* Python 3 */
|
|
352
|
-
#ifndef PY_NOGIL
|
|
353
287
|
if (_PyDict_HasSplitTable(dict_mp)) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
288
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
357
289
|
assert(result_mp != NULL);
|
|
358
290
|
result = (PyObject *)result_mp;
|
|
359
291
|
|
|
292
|
+
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
293
|
+
|
|
360
294
|
PyDictValues *new_values = _Nuitka_PyDict_new_values(size);
|
|
361
295
|
assert(new_values != NULL);
|
|
362
296
|
|
|
363
297
|
#if PYTHON_VERSION >= 0x3b0
|
|
364
298
|
// Need to preserve values prefix.
|
|
365
299
|
size_t prefix_size = ((uint8_t *)new_values)[-1];
|
|
366
|
-
memcpy((
|
|
300
|
+
memcpy((char *)new_values - prefix_size, (char *)dict_mp->ma_values - prefix_size, prefix_size - 1);
|
|
367
301
|
#endif
|
|
368
302
|
|
|
369
303
|
result_mp->ma_values = new_values;
|
|
@@ -390,7 +324,6 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
390
324
|
|
|
391
325
|
Nuitka_GC_Track(result_mp);
|
|
392
326
|
} else
|
|
393
|
-
#endif
|
|
394
327
|
#if PYTHON_VERSION >= 0x360
|
|
395
328
|
// Fast dictionary copy if it has at least 2/3 space usage. This is most relevant
|
|
396
329
|
// for the DICT_COPY, where it might even be the intention to trigger a shrink with
|
|
@@ -399,14 +332,14 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
399
332
|
assert(dict_mp->ma_values == NULL);
|
|
400
333
|
assert(dict_mp->ma_keys->dk_refcnt == 1);
|
|
401
334
|
|
|
402
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
335
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
403
336
|
result = (PyObject *)result_mp;
|
|
404
337
|
|
|
405
338
|
result_mp->ma_values = NULL;
|
|
406
339
|
result_mp->ma_used = dict_mp->ma_used;
|
|
407
340
|
|
|
408
341
|
Py_ssize_t keys_size = _Nuitka_Py_PyDict_KeysSize(dict_mp->ma_keys);
|
|
409
|
-
result_mp->ma_keys = (
|
|
342
|
+
result_mp->ma_keys = _Nuitka_AllocatePyDictKeysObject(tstate, keys_size);
|
|
410
343
|
assert(result_mp->ma_keys);
|
|
411
344
|
|
|
412
345
|
memcpy(result_mp->ma_keys, dict_mp->ma_keys, keys_size);
|
|
@@ -478,23 +411,45 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
478
411
|
{
|
|
479
412
|
result = _PyDict_NewPresized(dict_mp->ma_used);
|
|
480
413
|
|
|
414
|
+
#if PYTHON_VERSION < 0x3b0
|
|
481
415
|
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
482
416
|
|
|
483
417
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
484
418
|
PyDictKeyEntry *entry = &DK_ENTRIES(dict_mp->ma_keys)[i];
|
|
419
|
+
PyObject *value = entry->me_value;
|
|
485
420
|
|
|
486
|
-
if (
|
|
421
|
+
if (value != NULL) {
|
|
487
422
|
PyObject *key = entry->me_key;
|
|
423
|
+
CHECK_OBJECT(key);
|
|
424
|
+
|
|
425
|
+
CHECK_OBJECT(value);
|
|
488
426
|
|
|
489
|
-
PyObject *value = entry->me_value;
|
|
490
427
|
value = DEEP_COPY(tstate, value);
|
|
491
428
|
|
|
492
|
-
int res = PyDict_SetItem(result, key, value);
|
|
429
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
493
430
|
assert(res == 0);
|
|
494
431
|
|
|
495
432
|
Py_DECREF(value);
|
|
496
433
|
}
|
|
497
434
|
}
|
|
435
|
+
#else
|
|
436
|
+
Py_ssize_t pos = 0;
|
|
437
|
+
PyObject *key, *value;
|
|
438
|
+
|
|
439
|
+
while (Nuitka_DictNext((PyObject *)dict_mp, &pos, &key, &value)) {
|
|
440
|
+
CHECK_OBJECT(key);
|
|
441
|
+
CHECK_OBJECT(value);
|
|
442
|
+
|
|
443
|
+
CHECK_OBJECT(value);
|
|
444
|
+
|
|
445
|
+
value = DEEP_COPY(tstate, value);
|
|
446
|
+
|
|
447
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
448
|
+
assert(res == 0);
|
|
449
|
+
|
|
450
|
+
Py_DECREF(value);
|
|
451
|
+
}
|
|
452
|
+
#endif
|
|
498
453
|
}
|
|
499
454
|
#endif
|
|
500
455
|
}
|
|
@@ -505,7 +460,7 @@ PyObject *DEEP_COPY_DICT(PyThreadState *tstate, PyObject *dict_value) {
|
|
|
505
460
|
}
|
|
506
461
|
|
|
507
462
|
// Helper for function calls with star dict arguments. */
|
|
508
|
-
static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
463
|
+
static PyObject *COPY_DICT_KW(PyThreadState *tstate, PyObject *dict_value) {
|
|
509
464
|
PyObject *result;
|
|
510
465
|
bool had_kw_error = false;
|
|
511
466
|
|
|
@@ -513,7 +468,7 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
513
468
|
CHECK_OBJECT(dict_value);
|
|
514
469
|
assert(PyDict_CheckExact(dict_value));
|
|
515
470
|
|
|
516
|
-
result = DICT_COPY(dict_value);
|
|
471
|
+
result = DICT_COPY(tstate, dict_value);
|
|
517
472
|
|
|
518
473
|
Py_ssize_t pos = 0;
|
|
519
474
|
PyObject *key, *value;
|
|
@@ -528,7 +483,7 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
528
483
|
assert(PyDict_CheckExact(dict_value));
|
|
529
484
|
|
|
530
485
|
if (((PyDictObject *)dict_value)->ma_used == 0) {
|
|
531
|
-
result = MAKE_DICT_EMPTY();
|
|
486
|
+
result = MAKE_DICT_EMPTY(tstate);
|
|
532
487
|
} else {
|
|
533
488
|
PyDictObject *dict_mp = (PyDictObject *)dict_value;
|
|
534
489
|
|
|
@@ -548,20 +503,20 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
548
503
|
|
|
549
504
|
PyObject *value = entry->me_value;
|
|
550
505
|
|
|
551
|
-
int res = PyDict_SetItem(result, key, value);
|
|
506
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
552
507
|
assert(res == 0);
|
|
553
508
|
}
|
|
554
509
|
}
|
|
555
510
|
#else
|
|
556
511
|
/* Python 3 */
|
|
557
|
-
#ifndef PY_NOGIL
|
|
558
512
|
if (_PyDict_HasSplitTable(dict_mp)) {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
513
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
562
514
|
assert(result_mp != NULL);
|
|
563
515
|
result = (PyObject *)result_mp;
|
|
564
516
|
|
|
517
|
+
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
518
|
+
|
|
519
|
+
#if PYTHON_VERSION < 0x3b0
|
|
565
520
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
566
521
|
PyDictKeyEntry *entry = &DK_ENTRIES(dict_mp->ma_keys)[i];
|
|
567
522
|
|
|
@@ -571,6 +526,18 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
571
526
|
had_kw_error = true;
|
|
572
527
|
}
|
|
573
528
|
}
|
|
529
|
+
#else
|
|
530
|
+
Py_ssize_t pos = 0;
|
|
531
|
+
PyObject *key, *_value;
|
|
532
|
+
|
|
533
|
+
while (Nuitka_DictNext((PyObject *)dict_mp, &pos, &key, &_value)) {
|
|
534
|
+
CHECK_OBJECT(key);
|
|
535
|
+
CHECK_OBJECT(_value);
|
|
536
|
+
|
|
537
|
+
if (unlikely(!checkKeywordType(key))) {
|
|
538
|
+
had_kw_error = true;
|
|
539
|
+
}
|
|
540
|
+
#endif
|
|
574
541
|
}
|
|
575
542
|
|
|
576
543
|
PyDictValues *new_values = _Nuitka_PyDict_new_values(size);
|
|
@@ -579,7 +546,7 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
579
546
|
#if PYTHON_VERSION >= 0x3b0
|
|
580
547
|
// Need to preserve values prefix.
|
|
581
548
|
size_t prefix_size = ((uint8_t *)new_values)[-1];
|
|
582
|
-
memcpy((
|
|
549
|
+
memcpy((char *)new_values - prefix_size, (char *)dict_mp->ma_values - prefix_size, prefix_size - 1);
|
|
583
550
|
#endif
|
|
584
551
|
|
|
585
552
|
result_mp->ma_values = new_values;
|
|
@@ -606,7 +573,6 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
606
573
|
|
|
607
574
|
Nuitka_GC_Track(result_mp);
|
|
608
575
|
} else
|
|
609
|
-
#endif
|
|
610
576
|
#if PYTHON_VERSION >= 0x360
|
|
611
577
|
// Fast dictionary copy if it has at least 2/3 space usage. This is most relevant
|
|
612
578
|
// for the DICT_COPY, where it might even be the intention to trigger a shrink with
|
|
@@ -615,14 +581,14 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
615
581
|
assert(dict_mp->ma_values == NULL);
|
|
616
582
|
assert(dict_mp->ma_keys->dk_refcnt == 1);
|
|
617
583
|
|
|
618
|
-
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject();
|
|
584
|
+
PyDictObject *result_mp = _Nuitka_AllocatePyDictObject(tstate);
|
|
619
585
|
result = (PyObject *)result_mp;
|
|
620
586
|
|
|
621
587
|
result_mp->ma_values = NULL;
|
|
622
588
|
result_mp->ma_used = dict_mp->ma_used;
|
|
623
589
|
|
|
624
590
|
Py_ssize_t keys_size = _Nuitka_Py_PyDict_KeysSize(dict_mp->ma_keys);
|
|
625
|
-
result_mp->ma_keys = (
|
|
591
|
+
result_mp->ma_keys = _Nuitka_AllocatePyDictKeysObject(tstate, keys_size);
|
|
626
592
|
assert(result_mp->ma_keys);
|
|
627
593
|
|
|
628
594
|
memcpy(result_mp->ma_keys, dict_mp->ma_keys, keys_size);
|
|
@@ -675,7 +641,7 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
675
641
|
|
|
676
642
|
Py_INCREF(value);
|
|
677
643
|
PyObject *key = *key_ptr;
|
|
678
|
-
if (is_unicode) {
|
|
644
|
+
if (is_unicode == false) {
|
|
679
645
|
if (unlikely(!checkKeywordType(key))) {
|
|
680
646
|
had_kw_error = true;
|
|
681
647
|
}
|
|
@@ -699,23 +665,45 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
699
665
|
{
|
|
700
666
|
result = _PyDict_NewPresized(dict_mp->ma_used);
|
|
701
667
|
|
|
668
|
+
#if PYTHON_VERSION < 0x3b0
|
|
702
669
|
Py_ssize_t size = DK_ENTRIES_SIZE(dict_mp->ma_keys);
|
|
703
670
|
|
|
704
671
|
for (Py_ssize_t i = 0; i < size; i++) {
|
|
705
672
|
PyDictKeyEntry *entry = &DK_ENTRIES(dict_mp->ma_keys)[i];
|
|
673
|
+
PyObject *value = entry->me_value;
|
|
706
674
|
|
|
707
|
-
if (
|
|
675
|
+
if (value != NULL) {
|
|
708
676
|
PyObject *key = entry->me_key;
|
|
677
|
+
CHECK_OBJECT(key);
|
|
678
|
+
|
|
709
679
|
if (unlikely(!checkKeywordType(key))) {
|
|
710
680
|
had_kw_error = true;
|
|
711
681
|
}
|
|
712
682
|
|
|
713
|
-
|
|
683
|
+
CHECK_OBJECT(value);
|
|
714
684
|
|
|
715
|
-
int res = PyDict_SetItem(result, key, value);
|
|
685
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
716
686
|
assert(res == 0);
|
|
717
687
|
}
|
|
718
688
|
}
|
|
689
|
+
#else
|
|
690
|
+
Py_ssize_t pos = 0;
|
|
691
|
+
PyObject *key, *value;
|
|
692
|
+
|
|
693
|
+
while (Nuitka_DictNext((PyObject *)dict_mp, &pos, &key, &value)) {
|
|
694
|
+
CHECK_OBJECT(key);
|
|
695
|
+
CHECK_OBJECT(value);
|
|
696
|
+
|
|
697
|
+
if (unlikely(!checkKeywordType(key))) {
|
|
698
|
+
had_kw_error = true;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
CHECK_OBJECT(value);
|
|
702
|
+
|
|
703
|
+
NUITKA_MAY_BE_UNUSED int res = PyDict_SetItem(result, key, value);
|
|
704
|
+
assert(res == 0);
|
|
705
|
+
}
|
|
706
|
+
#endif
|
|
719
707
|
}
|
|
720
708
|
#endif
|
|
721
709
|
}
|
|
@@ -729,3 +717,18 @@ static PyObject *COPY_DICT_KW(PyObject *dict_value) {
|
|
|
729
717
|
|
|
730
718
|
return result;
|
|
731
719
|
}
|
|
720
|
+
|
|
721
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
722
|
+
// integrates with CPython, but also works on its own.
|
|
723
|
+
//
|
|
724
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
725
|
+
// you may not use this file except in compliance with the License.
|
|
726
|
+
// You may obtain a copy of the License at
|
|
727
|
+
//
|
|
728
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
729
|
+
//
|
|
730
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
731
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
732
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
733
|
+
// See the License for the specific language governing permissions and
|
|
734
|
+
// limitations under the License.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
/* These helpers are used to report C backtraces */
|
|
4
|
+
|
|
5
|
+
#include "backtrace/backtrace.h"
|
|
6
|
+
|
|
7
|
+
static struct backtrace_state *our_backtrace_state = NULL;
|
|
8
|
+
|
|
9
|
+
void INIT_C_BACKTRACES(void) {
|
|
10
|
+
our_backtrace_state = backtrace_create_state(NULL, 1, NULL, NULL);
|
|
11
|
+
assert(our_backtrace_state != NULL);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static int bt_frame_count = 0;
|
|
15
|
+
|
|
16
|
+
static int ourBacktraceFullCallback(void *data, uintptr_t pc, const char *filename, int lineno, const char *function) {
|
|
17
|
+
if (strcmp(function, "DUMP_C_BACKTRACE") != 0) {
|
|
18
|
+
fprintf(stderr, "#%d %s:%d %s\n", bt_frame_count, filename, lineno, function);
|
|
19
|
+
bt_frame_count += 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (strcmp(function, "main") == 0) {
|
|
23
|
+
return 1;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
void DUMP_C_BACKTRACE(void) {
|
|
30
|
+
assert(our_backtrace_state != NULL);
|
|
31
|
+
|
|
32
|
+
bt_frame_count = 0;
|
|
33
|
+
backtrace_full(our_backtrace_state, 0, ourBacktraceFullCallback, NULL, NULL);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#include "backtrace/backtrace.c"
|
|
37
|
+
#include "backtrace/dwarf.c"
|
|
38
|
+
#if !defined(_WIN32)
|
|
39
|
+
#include "backtrace/elf.c"
|
|
40
|
+
#include "backtrace/mmap.c"
|
|
41
|
+
#else
|
|
42
|
+
#include "backtrace/alloc.c"
|
|
43
|
+
#include "backtrace/pecoff.c"
|
|
44
|
+
#endif
|
|
45
|
+
#include "backtrace/fileline.c"
|
|
46
|
+
#include "backtrace/posix.c"
|
|
47
|
+
#include "backtrace/read.c"
|
|
48
|
+
#include "backtrace/sort.c"
|
|
49
|
+
#include "backtrace/state.c"
|
|
50
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
51
|
+
// integrates with CPython, but also works on its own.
|
|
52
|
+
//
|
|
53
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
54
|
+
// you may not use this file except in compliance with the License.
|
|
55
|
+
// You may obtain a copy of the License at
|
|
56
|
+
//
|
|
57
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
58
|
+
//
|
|
59
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
60
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
61
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
62
|
+
// See the License for the specific language governing permissions and
|
|
63
|
+
// limitations under the License.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
// Helpers for working with environment variables from Python binary in a
|
|
4
|
+
// portable way.
|
|
5
|
+
|
|
6
|
+
#include "nuitka/environment_variables.h"
|
|
7
|
+
|
|
8
|
+
#include "HelpersEnvironmentVariablesSystem.c"
|
|
9
|
+
|
|
10
|
+
void undoEnvironmentVariable(PyThreadState *tstate, char const *variable_name, environment_char_t const *old_value) {
|
|
11
|
+
PyObject *os_module = IMPORT_HARD_OS();
|
|
12
|
+
CHECK_OBJECT(os_module);
|
|
13
|
+
|
|
14
|
+
PyObject *os_environ = PyObject_GetAttrString(os_module, "environ");
|
|
15
|
+
CHECK_OBJECT(os_environ);
|
|
16
|
+
|
|
17
|
+
PyObject *variable_name_str = Nuitka_String_FromString(variable_name);
|
|
18
|
+
CHECK_OBJECT(variable_name_str);
|
|
19
|
+
|
|
20
|
+
if (old_value) {
|
|
21
|
+
setEnvironmentVariable(variable_name, old_value);
|
|
22
|
+
|
|
23
|
+
#ifdef _WIN32
|
|
24
|
+
PyObject *env_value = NuitkaUnicode_FromWideChar(old_value, -1);
|
|
25
|
+
#else
|
|
26
|
+
PyObject *env_value = Nuitka_String_FromString(old_value);
|
|
27
|
+
#endif
|
|
28
|
+
CHECK_OBJECT(env_value);
|
|
29
|
+
|
|
30
|
+
int res = PyObject_SetItem(os_environ, variable_name_str, env_value);
|
|
31
|
+
|
|
32
|
+
if (unlikely(res != 0)) {
|
|
33
|
+
PyErr_PrintEx(1);
|
|
34
|
+
Py_Exit(1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
Py_DECREF(env_value);
|
|
38
|
+
} else {
|
|
39
|
+
unsetEnvironmentVariable(variable_name);
|
|
40
|
+
|
|
41
|
+
int res = PyObject_DelItem(os_environ, variable_name_str);
|
|
42
|
+
|
|
43
|
+
if (unlikely(res != 0)) {
|
|
44
|
+
CLEAR_ERROR_OCCURRED(tstate);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
Py_DECREF(variable_name_str);
|
|
49
|
+
Py_DECREF(os_environ);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
53
|
+
// integrates with CPython, but also works on its own.
|
|
54
|
+
//
|
|
55
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
56
|
+
// you may not use this file except in compliance with the License.
|
|
57
|
+
// You may obtain a copy of the License at
|
|
58
|
+
//
|
|
59
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
60
|
+
//
|
|
61
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
62
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
63
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
64
|
+
// See the License for the specific language governing permissions and
|
|
65
|
+
// limitations under the License.
|