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,6 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
|
|
3
|
+
|
|
18
4
|
""" C type descriptions. For specific or general C types, provide code generation help.
|
|
19
5
|
|
|
20
6
|
"""
|
|
@@ -22,11 +8,15 @@
|
|
|
22
8
|
import math
|
|
23
9
|
from abc import abstractmethod
|
|
24
10
|
|
|
25
|
-
from nuitka.__past__ import
|
|
11
|
+
from nuitka.__past__ import long
|
|
12
|
+
from nuitka.code_generation.BinaryOperationHelperDefinitions import (
|
|
13
|
+
isCommutativeType,
|
|
14
|
+
)
|
|
26
15
|
from nuitka.code_generation.Namify import namifyConstant
|
|
16
|
+
from nuitka.utils.SlotMetaClasses import getMetaClassBase
|
|
27
17
|
|
|
28
18
|
|
|
29
|
-
class TypeDescBase(getMetaClassBase("Type")):
|
|
19
|
+
class TypeDescBase(getMetaClassBase("Type", require_slots=False)):
|
|
30
20
|
# To be overloaded
|
|
31
21
|
type_name = None
|
|
32
22
|
type_desc = None
|
|
@@ -288,9 +278,11 @@ class TypeDescBase(getMetaClassBase("Type")):
|
|
|
288
278
|
if self is object_desc or other is object_desc:
|
|
289
279
|
return "%s == %s" % (
|
|
290
280
|
self.getTypeValueExpression(None) if self is not object_desc else type1,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
281
|
+
(
|
|
282
|
+
other.getTypeValueExpression(None)
|
|
283
|
+
if other is not object_desc
|
|
284
|
+
else type2
|
|
285
|
+
),
|
|
294
286
|
)
|
|
295
287
|
elif self is other:
|
|
296
288
|
return "1"
|
|
@@ -301,9 +293,11 @@ class TypeDescBase(getMetaClassBase("Type")):
|
|
|
301
293
|
if self is object_desc or other is object_desc:
|
|
302
294
|
return "%s != %s" % (
|
|
303
295
|
self.getTypeValueExpression(None) if self is not object_desc else type1,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
296
|
+
(
|
|
297
|
+
other.getTypeValueExpression(None)
|
|
298
|
+
if other is not object_desc
|
|
299
|
+
else type2
|
|
300
|
+
),
|
|
307
301
|
)
|
|
308
302
|
elif self is other:
|
|
309
303
|
return "0"
|
|
@@ -350,10 +344,10 @@ class TypeDescBase(getMetaClassBase("Type")):
|
|
|
350
344
|
)
|
|
351
345
|
elif slot == "tp_richcompare":
|
|
352
346
|
# Try to detect fallbacks, this needs version specific management
|
|
353
|
-
# for at least "LONG", maybe others.
|
|
347
|
+
# for at least "LONG", maybe others. spell-checker: ignore RICHCOMPARE
|
|
354
348
|
|
|
355
349
|
assert self is object_desc, self
|
|
356
|
-
return "
|
|
350
|
+
return "TP_RICHCOMPARE(%s)" % operand
|
|
357
351
|
elif slot == "tp_compare":
|
|
358
352
|
return operand + "->tp_compare"
|
|
359
353
|
else:
|
|
@@ -396,15 +390,21 @@ class TypeDescBase(getMetaClassBase("Type")):
|
|
|
396
390
|
pass
|
|
397
391
|
|
|
398
392
|
@staticmethod
|
|
399
|
-
def getOperationErrorMessageName(operator):
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
393
|
+
def getOperationErrorMessageName(operator, inplace):
|
|
394
|
+
operator = operator.replace("%", "%%")
|
|
395
|
+
|
|
396
|
+
if operator == "**" and not inplace:
|
|
403
397
|
return "** or pow()"
|
|
404
398
|
elif operator == "divmod":
|
|
399
|
+
assert not inplace
|
|
405
400
|
return "divmod()"
|
|
406
|
-
|
|
407
|
-
|
|
401
|
+
|
|
402
|
+
assert "=" not in operator, operator
|
|
403
|
+
|
|
404
|
+
if inplace:
|
|
405
|
+
operator = operator + "="
|
|
406
|
+
|
|
407
|
+
return operator
|
|
408
408
|
|
|
409
409
|
def getReturnUnorderableTypeErrorCode(
|
|
410
410
|
self, operator, left, right, operand1, operand2
|
|
@@ -461,22 +461,26 @@ return %(return_value)s;""" % {
|
|
|
461
461
|
def hasSameTypeOperationSpecializationCode(self, other, nb_slot, sq_slot):
|
|
462
462
|
# Many cases, pylint: disable=too-many-branches,too-many-return-statements
|
|
463
463
|
|
|
464
|
-
|
|
464
|
+
candidate = self if self is not object_desc else other
|
|
465
465
|
|
|
466
466
|
# Both are objects, nothing to be done.
|
|
467
|
-
if
|
|
467
|
+
if candidate is object_desc:
|
|
468
468
|
assert self is object_desc
|
|
469
469
|
assert other is object_desc
|
|
470
470
|
return False
|
|
471
471
|
|
|
472
|
-
# Special case for sequence
|
|
473
|
-
if
|
|
472
|
+
# Special case for sequence concat/repeats.
|
|
473
|
+
if (
|
|
474
|
+
sq_slot is not None
|
|
475
|
+
and not candidate.hasSlot(nb_slot)
|
|
476
|
+
and candidate.hasSlot(sq_slot)
|
|
477
|
+
):
|
|
474
478
|
slot = sq_slot
|
|
475
479
|
else:
|
|
476
480
|
slot = nb_slot
|
|
477
481
|
|
|
478
482
|
if slot == "sq_repeat":
|
|
479
|
-
if
|
|
483
|
+
if candidate in (
|
|
480
484
|
list_desc,
|
|
481
485
|
tuple_desc,
|
|
482
486
|
set_desc,
|
|
@@ -489,12 +493,12 @@ return %(return_value)s;""" % {
|
|
|
489
493
|
return False
|
|
490
494
|
|
|
491
495
|
if slot == "nb_remainder":
|
|
492
|
-
if
|
|
496
|
+
if candidate in (list_desc, tuple_desc, set_desc, dict_desc):
|
|
493
497
|
# No remainder with themselves.
|
|
494
498
|
return False
|
|
495
499
|
|
|
496
500
|
if slot == "nb_multiply":
|
|
497
|
-
if
|
|
501
|
+
if candidate in (
|
|
498
502
|
str_desc,
|
|
499
503
|
bytes_desc,
|
|
500
504
|
list_desc,
|
|
@@ -508,7 +512,7 @@ return %(return_value)s;""" % {
|
|
|
508
512
|
if slot == "nb_add":
|
|
509
513
|
# Tuple and list, etc. use sq_concat.
|
|
510
514
|
# TODO: What about unicode_desc
|
|
511
|
-
if
|
|
515
|
+
if candidate in (
|
|
512
516
|
str_desc,
|
|
513
517
|
bytes_desc,
|
|
514
518
|
tuple_desc,
|
|
@@ -520,7 +524,7 @@ return %(return_value)s;""" % {
|
|
|
520
524
|
return False
|
|
521
525
|
|
|
522
526
|
if slot in ("nb_and", "nb_or", "nb_xor"):
|
|
523
|
-
if
|
|
527
|
+
if candidate in (
|
|
524
528
|
str_desc,
|
|
525
529
|
bytes_desc,
|
|
526
530
|
unicode_desc,
|
|
@@ -532,7 +536,7 @@ return %(return_value)s;""" % {
|
|
|
532
536
|
return False
|
|
533
537
|
|
|
534
538
|
if slot in ("nb_lshift", "nb_rshift"):
|
|
535
|
-
if
|
|
539
|
+
if candidate in (
|
|
536
540
|
str_desc,
|
|
537
541
|
bytes_desc,
|
|
538
542
|
unicode_desc,
|
|
@@ -561,12 +565,11 @@ return %(return_value)s;""" % {
|
|
|
561
565
|
else:
|
|
562
566
|
return object_desc
|
|
563
567
|
|
|
564
|
-
def isSimilarOrSameTypesAsOneOf(self,
|
|
565
|
-
|
|
566
|
-
assert other is not None
|
|
568
|
+
def isSimilarOrSameTypesAsOneOf(self, other):
|
|
569
|
+
assert other is not None
|
|
567
570
|
|
|
568
|
-
|
|
569
|
-
|
|
571
|
+
if self is other or other in related_types.get(self, ()):
|
|
572
|
+
return True
|
|
570
573
|
|
|
571
574
|
return False
|
|
572
575
|
|
|
@@ -588,26 +591,29 @@ return %(return_value)s;""" % {
|
|
|
588
591
|
def getTypeComparisonSpecializationHelper(
|
|
589
592
|
self, other, op_code, target, operand1, operand2
|
|
590
593
|
):
|
|
591
|
-
|
|
592
|
-
|
|
594
|
+
candidate1 = self if self is not object_desc else other
|
|
595
|
+
candidate2 = other if other is not object_desc else self
|
|
593
596
|
|
|
594
|
-
if
|
|
597
|
+
if candidate1 is object_desc:
|
|
595
598
|
return "", None, None, None, None, None
|
|
596
599
|
|
|
597
|
-
if long_desc in (
|
|
598
|
-
|
|
600
|
+
if long_desc in (candidate1, candidate2) and int_desc in (
|
|
601
|
+
candidate1,
|
|
602
|
+
candidate2,
|
|
603
|
+
):
|
|
604
|
+
if candidate1 == int_desc:
|
|
599
605
|
operand1 = int_desc.getAsLongValueExpression(operand1)
|
|
600
|
-
|
|
601
|
-
elif
|
|
606
|
+
candidate1 = c_long_desc
|
|
607
|
+
elif candidate2 == int_desc:
|
|
602
608
|
operand2 = int_desc.getAsLongValueExpression(operand1)
|
|
603
|
-
|
|
609
|
+
candidate2 = c_long_desc
|
|
604
610
|
else:
|
|
605
611
|
assert False
|
|
606
612
|
|
|
607
613
|
if (
|
|
608
614
|
target is n_bool_desc
|
|
609
|
-
and
|
|
610
|
-
and
|
|
615
|
+
and candidate1 is candidate2
|
|
616
|
+
and candidate1 not in (tuple_desc, list_desc)
|
|
611
617
|
):
|
|
612
618
|
target = c_bool_desc
|
|
613
619
|
|
|
@@ -616,12 +622,12 @@ return %(return_value)s;""" % {
|
|
|
616
622
|
% (
|
|
617
623
|
op_code,
|
|
618
624
|
target.getHelperCodeName(),
|
|
619
|
-
|
|
620
|
-
|
|
625
|
+
candidate1.getHelperCodeName(),
|
|
626
|
+
candidate2.getHelperCodeName(),
|
|
621
627
|
),
|
|
622
628
|
target,
|
|
623
|
-
|
|
624
|
-
|
|
629
|
+
candidate1,
|
|
630
|
+
candidate2,
|
|
625
631
|
operand1,
|
|
626
632
|
operand2,
|
|
627
633
|
)
|
|
@@ -672,8 +678,11 @@ return %(return_value)s;""" % {
|
|
|
672
678
|
)
|
|
673
679
|
|
|
674
680
|
@staticmethod
|
|
675
|
-
def getTakeReferenceStatement(operand):
|
|
676
|
-
return "
|
|
681
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
682
|
+
return "%s(%s);" % (
|
|
683
|
+
("Py_INCREF_IMMORTAL" if immortal else "Py_INCREF"),
|
|
684
|
+
operand,
|
|
685
|
+
)
|
|
677
686
|
|
|
678
687
|
@classmethod
|
|
679
688
|
def hasReferenceCounting(cls):
|
|
@@ -702,6 +711,10 @@ return %(return_value)s;""" % {
|
|
|
702
711
|
return "Py_INCREF(%s); %s = %s;" % (operand, result, operand)
|
|
703
712
|
else:
|
|
704
713
|
return "%s = %s;" % (result, operand)
|
|
714
|
+
elif cls.isDualType():
|
|
715
|
+
ref_taking = "Py_INCREF(%s); " if take_ref else ""
|
|
716
|
+
|
|
717
|
+
return "%sSET_NILONG_OBJECT_VALUE(%s, %s);" % (ref_taking, result, operand)
|
|
705
718
|
else:
|
|
706
719
|
if take_ref:
|
|
707
720
|
return """%s = %s; """ % (
|
|
@@ -752,7 +765,7 @@ return %(return_value)s;""" % {
|
|
|
752
765
|
# Need to not use that, but pick one.
|
|
753
766
|
assert False
|
|
754
767
|
elif cls.type_name == "int":
|
|
755
|
-
return "%s =
|
|
768
|
+
return "%s = Nuitka_PyInt_FromLong(%s);" % (result, operand)
|
|
756
769
|
elif cls.type_name == "long":
|
|
757
770
|
return "%s = Nuitka_LongFromCLong(%s);" % (result, operand)
|
|
758
771
|
elif cls.type_name == "nbool":
|
|
@@ -760,16 +773,17 @@ return %(return_value)s;""" % {
|
|
|
760
773
|
result,
|
|
761
774
|
cls.getToValueFromBoolExpression("%s != 0" % operand),
|
|
762
775
|
)
|
|
776
|
+
elif cls.type_name == "nilong":
|
|
777
|
+
return "SET_NILONG_C_VALUE(%s, %s);" % (result, operand)
|
|
763
778
|
else:
|
|
764
779
|
assert False, cls
|
|
765
780
|
|
|
766
781
|
@classmethod
|
|
767
782
|
def getAssignFromBoolExpressionCode(cls, result, operand, give_ref):
|
|
768
783
|
if cls.type_name == "object":
|
|
769
|
-
# TODO: Python3?
|
|
770
784
|
code = "%s = BOOL_FROM(%s);" % (result, operand)
|
|
771
785
|
if give_ref:
|
|
772
|
-
code += "
|
|
786
|
+
code += "Py_INCREF_IMMORTAL(%s);" % result
|
|
773
787
|
|
|
774
788
|
return code
|
|
775
789
|
elif cls.type_name == "nbool":
|
|
@@ -905,7 +919,7 @@ Py_INCREF(%(result)s);""" % {
|
|
|
905
919
|
def getAssignConversionCode(cls, result, left, value):
|
|
906
920
|
def _getObjectObject():
|
|
907
921
|
code = "%s = %s;" % (result, value)
|
|
908
|
-
code += cls.getTakeReferenceStatement(result)
|
|
922
|
+
code += cls.getTakeReferenceStatement(result, immortal=False)
|
|
909
923
|
|
|
910
924
|
return code
|
|
911
925
|
|
|
@@ -939,6 +953,14 @@ Py_INCREF(%(result)s);""" % {
|
|
|
939
953
|
else:
|
|
940
954
|
assert False, cls.type_name
|
|
941
955
|
|
|
956
|
+
@classmethod
|
|
957
|
+
def isDualType(cls):
|
|
958
|
+
return False
|
|
959
|
+
|
|
960
|
+
@classmethod
|
|
961
|
+
def isCommutativeType(cls):
|
|
962
|
+
return isCommutativeType(cls.getHelperCodeName())
|
|
963
|
+
|
|
942
964
|
|
|
943
965
|
class ConcreteTypeBase(TypeDescBase):
|
|
944
966
|
type_decl = "PyObject *"
|
|
@@ -966,7 +988,7 @@ assert(%(type_name)s_CheckExact(%(operand)s));""" % {
|
|
|
966
988
|
pass
|
|
967
989
|
|
|
968
990
|
@staticmethod
|
|
969
|
-
def getTakeReferenceStatement(operand):
|
|
991
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
970
992
|
return ""
|
|
971
993
|
|
|
972
994
|
|
|
@@ -1378,23 +1400,23 @@ class LongDesc(ConcreteNonSequenceTypeBase):
|
|
|
1378
1400
|
|
|
1379
1401
|
@staticmethod
|
|
1380
1402
|
def getLongValueSizeExpression(operand):
|
|
1381
|
-
return "
|
|
1403
|
+
return "Nuitka_LongGetSignedDigitSize(%s_long_object)" % operand
|
|
1382
1404
|
|
|
1383
1405
|
@staticmethod
|
|
1384
1406
|
def getLongValueIsNegativeTestExpression(operand):
|
|
1385
|
-
return "
|
|
1407
|
+
return "Nuitka_LongIsNegative(%s_long_object)" % operand
|
|
1386
1408
|
|
|
1387
1409
|
@staticmethod
|
|
1388
1410
|
def getLongValueDigitCountExpression(operand):
|
|
1389
|
-
return "
|
|
1411
|
+
return "Nuitka_LongGetDigitSize(%s_long_object)" % operand
|
|
1390
1412
|
|
|
1391
1413
|
@staticmethod
|
|
1392
1414
|
def getLongValueDigitExpression(operand, index):
|
|
1393
|
-
return "%s_long_object
|
|
1415
|
+
return "Nuitka_LongGetDigitPointer(%s_long_object)[%s]" % (operand, index)
|
|
1394
1416
|
|
|
1395
1417
|
@staticmethod
|
|
1396
1418
|
def getLongValueDigitsPointerExpression(operand):
|
|
1397
|
-
return "%s_long_object
|
|
1419
|
+
return "Nuitka_LongGetDigitPointer(%s_long_object)" % operand
|
|
1398
1420
|
|
|
1399
1421
|
@staticmethod
|
|
1400
1422
|
def getLongValueMediumValueExpression(operand):
|
|
@@ -1441,6 +1463,12 @@ class ObjectDesc(TypeDescBase):
|
|
|
1441
1463
|
def getNoSequenceSlotAccessTestCode(self, type_name):
|
|
1442
1464
|
return "%s->tp_as_sequence == NULL" % type_name
|
|
1443
1465
|
|
|
1466
|
+
@classmethod
|
|
1467
|
+
def getDualValidityCheckCode(cls, value_choice, operand):
|
|
1468
|
+
# Virtual method, pylint: disable=unused-argument
|
|
1469
|
+
assert value_choice == "C", value_choice
|
|
1470
|
+
return "false"
|
|
1471
|
+
|
|
1444
1472
|
|
|
1445
1473
|
object_desc = ObjectDesc()
|
|
1446
1474
|
|
|
@@ -1466,6 +1494,25 @@ class ConcreteCTypeBase(TypeDescBase):
|
|
|
1466
1494
|
def hasPreferredSlot(right, slot):
|
|
1467
1495
|
return False
|
|
1468
1496
|
|
|
1497
|
+
@classmethod
|
|
1498
|
+
def isDualType(cls):
|
|
1499
|
+
return False
|
|
1500
|
+
|
|
1501
|
+
@classmethod
|
|
1502
|
+
def getDualValidityCheckCode(cls, value_choice, operand):
|
|
1503
|
+
# Virtual method, pylint: disable=unused-argument
|
|
1504
|
+
assert value_choice == "C", value_choice
|
|
1505
|
+
return "true"
|
|
1506
|
+
|
|
1507
|
+
def getDualType(self, value_choice):
|
|
1508
|
+
assert value_choice == "C", value_choice
|
|
1509
|
+
return self
|
|
1510
|
+
|
|
1511
|
+
@classmethod
|
|
1512
|
+
def getDualTypeAccessCode(cls, value_choice, operand):
|
|
1513
|
+
assert value_choice == "C", (value_choice, cls)
|
|
1514
|
+
return operand
|
|
1515
|
+
|
|
1469
1516
|
|
|
1470
1517
|
class CLongDesc(ConcreteCTypeBase):
|
|
1471
1518
|
type_name = "clong"
|
|
@@ -1490,7 +1537,7 @@ class CLongDesc(ConcreteCTypeBase):
|
|
|
1490
1537
|
|
|
1491
1538
|
@staticmethod
|
|
1492
1539
|
def getAsObjectValueExpression(operand):
|
|
1493
|
-
return "
|
|
1540
|
+
return "Nuitka_PyLong_FromLong(%s)" % operand
|
|
1494
1541
|
|
|
1495
1542
|
@staticmethod
|
|
1496
1543
|
def releaseAsObjectValueStatement(operand):
|
|
@@ -1518,6 +1565,7 @@ class CLongDesc(ConcreteCTypeBase):
|
|
|
1518
1565
|
|
|
1519
1566
|
@staticmethod
|
|
1520
1567
|
def getLongValueMediumValueExpression(operand):
|
|
1568
|
+
# spell-checker: disable=sdigit
|
|
1521
1569
|
return "(sdigit)%s" % (operand)
|
|
1522
1570
|
|
|
1523
1571
|
|
|
@@ -1599,7 +1647,7 @@ class CBoolDesc(ConcreteCTypeBase):
|
|
|
1599
1647
|
return "CHECK_IF_TRUE(%s) == 1" % operand
|
|
1600
1648
|
|
|
1601
1649
|
@staticmethod
|
|
1602
|
-
def getTakeReferenceStatement(operand):
|
|
1650
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
1603
1651
|
return ""
|
|
1604
1652
|
|
|
1605
1653
|
@staticmethod
|
|
@@ -1645,7 +1693,7 @@ class NBoolDesc(ConcreteCTypeBase):
|
|
|
1645
1693
|
return cls.getToValueFromBoolExpression("CHECK_IF_TRUE(%s)" % operand)
|
|
1646
1694
|
|
|
1647
1695
|
@staticmethod
|
|
1648
|
-
def getTakeReferenceStatement(operand):
|
|
1696
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
1649
1697
|
return ""
|
|
1650
1698
|
|
|
1651
1699
|
@staticmethod
|
|
@@ -1656,6 +1704,108 @@ class NBoolDesc(ConcreteCTypeBase):
|
|
|
1656
1704
|
n_bool_desc = NBoolDesc()
|
|
1657
1705
|
|
|
1658
1706
|
|
|
1707
|
+
class DualTypeBase(ConcreteCTypeBase):
|
|
1708
|
+
@classmethod
|
|
1709
|
+
def getDualValidityCheckCode(cls, value_choice, operand):
|
|
1710
|
+
if value_choice == "C":
|
|
1711
|
+
helper = "IS_%s_C_VALUE_VALID" % cls.type_name.upper()
|
|
1712
|
+
elif value_choice == "Python":
|
|
1713
|
+
helper = "IS_%s_OBJECT_VALUE_VALID" % cls.type_name.upper()
|
|
1714
|
+
else:
|
|
1715
|
+
assert False
|
|
1716
|
+
|
|
1717
|
+
return "%s(%s)" % (helper, operand)
|
|
1718
|
+
|
|
1719
|
+
@classmethod
|
|
1720
|
+
def getDualType(cls, value_choice):
|
|
1721
|
+
if value_choice == "C":
|
|
1722
|
+
return cls.type_dual_types[1]
|
|
1723
|
+
elif value_choice == "Python":
|
|
1724
|
+
return cls.type_dual_types[0]
|
|
1725
|
+
else:
|
|
1726
|
+
assert False
|
|
1727
|
+
|
|
1728
|
+
@classmethod
|
|
1729
|
+
def getDualTypeAccessCode(cls, value_choice, operand):
|
|
1730
|
+
if value_choice == "C":
|
|
1731
|
+
return "%s->c_value" % operand
|
|
1732
|
+
elif value_choice == "Python":
|
|
1733
|
+
return "%s->python_value" % operand
|
|
1734
|
+
else:
|
|
1735
|
+
assert False
|
|
1736
|
+
|
|
1737
|
+
@classmethod
|
|
1738
|
+
def getSetDualValueCode(cls, value_choice, target, value):
|
|
1739
|
+
if value_choice == "C":
|
|
1740
|
+
helper = "SET_%s_C_VALUE" % cls.type_name.upper()
|
|
1741
|
+
elif value_choice == "Python":
|
|
1742
|
+
helper = "SET_%s_OBJECT_VALUE" % cls.type_name.upper()
|
|
1743
|
+
else:
|
|
1744
|
+
assert False
|
|
1745
|
+
|
|
1746
|
+
return "%s(%s, %s);" % (helper, target, value)
|
|
1747
|
+
|
|
1748
|
+
@classmethod
|
|
1749
|
+
def isDualType(cls):
|
|
1750
|
+
return True
|
|
1751
|
+
|
|
1752
|
+
@classmethod
|
|
1753
|
+
def getDualTypeEnsurePythonObjectCode(cls, operand):
|
|
1754
|
+
return "ENFORCE_%s_OBJECT_VALUE(%s);" % (cls.type_name.upper(), operand)
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
class NILongDesc(DualTypeBase):
|
|
1758
|
+
type_name = "nilong"
|
|
1759
|
+
type_desc = "Nuitka int/long/C long value"
|
|
1760
|
+
type_decl = "nuitka_ilong *"
|
|
1761
|
+
|
|
1762
|
+
type_dual_types = long_desc, c_long_desc
|
|
1763
|
+
|
|
1764
|
+
@classmethod
|
|
1765
|
+
def getCheckValueCode(cls, operand):
|
|
1766
|
+
return "CHECK_NILONG_OBJECT(%s);" % operand
|
|
1767
|
+
|
|
1768
|
+
@classmethod
|
|
1769
|
+
def getTypeValueExpression(cls, operand):
|
|
1770
|
+
assert False
|
|
1771
|
+
return "NULL"
|
|
1772
|
+
|
|
1773
|
+
@classmethod
|
|
1774
|
+
def getNewStyleNumberTypeCheckExpression(cls, operand):
|
|
1775
|
+
return "0"
|
|
1776
|
+
|
|
1777
|
+
@staticmethod
|
|
1778
|
+
def getAsLongValueExpression(operand):
|
|
1779
|
+
return "GET_NILONG_C_VALUE(%s)" % operand
|
|
1780
|
+
|
|
1781
|
+
@staticmethod
|
|
1782
|
+
def getAsObjectValueExpression(operand):
|
|
1783
|
+
return "GET_NILONG_OBJECT_VALUE(%s)" % operand
|
|
1784
|
+
|
|
1785
|
+
@staticmethod
|
|
1786
|
+
def getToValueFromBoolExpression(operand):
|
|
1787
|
+
assert False
|
|
1788
|
+
return "%s ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE" % operand
|
|
1789
|
+
|
|
1790
|
+
@classmethod
|
|
1791
|
+
def getToValueFromObjectExpression(cls, operand):
|
|
1792
|
+
# TODO: Seems wrong, int return values only happen to match nuitka_bool here
|
|
1793
|
+
return cls.getToValueFromBoolExpression("CHECK_IF_TRUE(%s)" % operand)
|
|
1794
|
+
|
|
1795
|
+
@staticmethod
|
|
1796
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
1797
|
+
assert False
|
|
1798
|
+
return ""
|
|
1799
|
+
|
|
1800
|
+
@staticmethod
|
|
1801
|
+
def getExceptionResultIndicatorValue():
|
|
1802
|
+
assert False
|
|
1803
|
+
return "NUITKA_BOOL_EXCEPTION"
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
n_ilong_desc = NILongDesc()
|
|
1807
|
+
|
|
1808
|
+
|
|
1659
1809
|
class NVoidDesc(ConcreteCTypeBase):
|
|
1660
1810
|
type_name = "nvoid"
|
|
1661
1811
|
type_desc = "Nuitka C void value"
|
|
@@ -1696,7 +1846,7 @@ class NVoidDesc(ConcreteCTypeBase):
|
|
|
1696
1846
|
return "NUITKA_VOID_OK"
|
|
1697
1847
|
|
|
1698
1848
|
@staticmethod
|
|
1699
|
-
def getTakeReferenceStatement(operand):
|
|
1849
|
+
def getTakeReferenceStatement(operand, immortal):
|
|
1700
1850
|
return ""
|
|
1701
1851
|
|
|
1702
1852
|
@staticmethod
|
|
@@ -1748,10 +1898,31 @@ related_types = {}
|
|
|
1748
1898
|
|
|
1749
1899
|
|
|
1750
1900
|
def _addRelatedTypes(type_desc_1, type_desc_2):
|
|
1751
|
-
|
|
1752
|
-
|
|
1901
|
+
if type_desc_1 not in related_types:
|
|
1902
|
+
related_types[type_desc_1] = set()
|
|
1903
|
+
if type_desc_2 not in related_types:
|
|
1904
|
+
related_types[type_desc_2] = set()
|
|
1905
|
+
|
|
1906
|
+
related_types[type_desc_1].add(type_desc_2)
|
|
1907
|
+
related_types[type_desc_2].add(type_desc_1)
|
|
1753
1908
|
|
|
1754
1909
|
|
|
1755
1910
|
_addRelatedTypes(int_desc, c_long_desc)
|
|
1756
1911
|
_addRelatedTypes(long_desc, c_digit_desc)
|
|
1912
|
+
_addRelatedTypes(long_desc, c_long_desc)
|
|
1757
1913
|
_addRelatedTypes(float_desc, c_float_desc)
|
|
1914
|
+
|
|
1915
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1916
|
+
# integrates with CPython, but also works on its own.
|
|
1917
|
+
#
|
|
1918
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1919
|
+
# you may not use this file except in compliance with the License.
|
|
1920
|
+
# You may obtain a copy of the License at
|
|
1921
|
+
#
|
|
1922
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1923
|
+
#
|
|
1924
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1925
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1926
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1927
|
+
# See the License for the specific language governing permissions and
|
|
1928
|
+
# limitations under the License.
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
|
|
3
|
+
|
|
18
4
|
""" Common helper functions for specializing code."""
|
|
19
5
|
|
|
20
6
|
from nuitka.Constants import the_empty_unicode
|
|
@@ -377,3 +363,18 @@ def check():
|
|
|
377
363
|
|
|
378
364
|
|
|
379
365
|
check()
|
|
366
|
+
|
|
367
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
368
|
+
# integrates with CPython, but also works on its own.
|
|
369
|
+
#
|
|
370
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
371
|
+
# you may not use this file except in compliance with the License.
|
|
372
|
+
# You may obtain a copy of the License at
|
|
373
|
+
#
|
|
374
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
375
|
+
#
|
|
376
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
377
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
378
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
379
|
+
# See the License for the specific language governing permissions and
|
|
380
|
+
# limitations under the License.
|