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,5 +1,9 @@
|
|
|
1
|
-
{# Copyright
|
|
2
|
-
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
3
|
+
{% macro CHECK_OBJECTS(args, args_count) %}
|
|
4
|
+
{% if args_count != 0 %} CHECK_OBJECTS(args, {{args_count}}); {% endif %}
|
|
5
|
+
{% endmacro %}
|
|
6
|
+
|
|
3
7
|
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
4
8
|
{# integrates with CPython, but also works on its own. #}
|
|
5
9
|
{# #}
|
|
@@ -14,7 +18,3 @@
|
|
|
14
18
|
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
15
19
|
{# See the License for the specific language governing permissions and #}
|
|
16
20
|
{# limitations under the License. #}
|
|
17
|
-
{# #}
|
|
18
|
-
{% macro CHECK_OBJECTS(args, args_count) %}
|
|
19
|
-
{% if args_count != 0 %} CHECK_OBJECTS(args, {{args_count}}); {% endif %}
|
|
20
|
-
{% endmacro %}
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
{# Copyright
|
|
2
|
-
|
|
3
|
-
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
4
|
-
{# integrates with CPython, but also works on its own. #}
|
|
5
|
-
{# #}
|
|
6
|
-
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
7
|
-
{# you may not use this file except in compliance with the License. #}
|
|
8
|
-
{# You may obtain a copy of the License at #}
|
|
9
|
-
{# #}
|
|
10
|
-
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
11
|
-
{# #}
|
|
12
|
-
{# Unless required by applicable law or agreed to in writing, software #}
|
|
13
|
-
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
14
|
-
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
15
|
-
{# See the License for the specific language governing permissions and #}
|
|
16
|
-
{# limitations under the License. #}
|
|
17
|
-
{# #}
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
18
3
|
{% from 'HelperSlotsCommon.c.j2' import goto_exit %}
|
|
19
4
|
{% from 'HelperSlotsInt.c.j2' import int_slot with context %}
|
|
20
5
|
{% from 'HelperSlotsBinary.c.j2' import binary_operation, call_binary_slot with context %}
|
|
@@ -30,7 +15,7 @@
|
|
|
30
15
|
#endif
|
|
31
16
|
|
|
32
17
|
{% set props = {"exits": {}} %}
|
|
33
|
-
{{ binary_operation(props, operator, nb_slot, left, right, "type1", "type2", "operand1", "operand2", "exit_binary_result_object", "exit_binary_result_cbool_ok", "exit_binary_result_nbool", "exit_binary_exception") }}
|
|
18
|
+
{{ binary_operation(props, operator, False, nb_slot, left, right, "type1", "type2", "operand1", "operand2", "exit_binary_result_object", "exit_binary_result_cbool_ok", "exit_binary_result_nbool", "exit_binary_exception") }}
|
|
34
19
|
|
|
35
20
|
{% if "exit_binary_result_object" in props["exits"] %}
|
|
36
21
|
exit_binary_result_object:
|
|
@@ -54,7 +39,7 @@ exit_binary_exception:
|
|
|
54
39
|
{% endif %}
|
|
55
40
|
{% endmacro %}
|
|
56
41
|
{% if not left.hasTypeSpecializationCode(right, nb_slot, sq_slot) and left.getSameTypeType(right).hasSameTypeOperationSpecializationCode(right.getSameTypeType(left), nb_slot, sq_slot) %}
|
|
57
|
-
static HEDLEY_NEVER_INLINE {{target.getTypeDecl()}} __BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
42
|
+
static HEDLEY_NEVER_INLINE {{ target.getTypeDecl() }} __BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
58
43
|
{% set props = {"exits": {}} %}
|
|
59
44
|
{% if left == object_desc %}
|
|
60
45
|
PyTypeObject *type1 = {{ left.getTypeValueExpression("operand1") }};
|
|
@@ -66,7 +51,7 @@ static HEDLEY_NEVER_INLINE {{target.getTypeDecl()}} __BINARY_OPERATION_{{op_code
|
|
|
66
51
|
{{ binary_fallback_operation(props, target, left, right, "type1", "type2") }}
|
|
67
52
|
}
|
|
68
53
|
{% endif %}
|
|
69
|
-
static {{target.getTypeDecl()}} _BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
54
|
+
static {{ target.getTypeDecl() }} _BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
70
55
|
{{ left.getCheckValueCode("operand1") }}
|
|
71
56
|
{{ right.getCheckValueCode("operand2") }}
|
|
72
57
|
|
|
@@ -74,7 +59,7 @@ static {{target.getTypeDecl()}} _BINARY_OPERATION_{{op_code}}_{{target.getHelper
|
|
|
74
59
|
{# CPython2 treats integer values with fast path. #}
|
|
75
60
|
#if PYTHON_VERSION < 0x300
|
|
76
61
|
if ({{ left.getIntCheckExpression("operand1") }} && {{ right.getIntCheckExpression("operand2") }}) {
|
|
77
|
-
{{target.getTypeDecl()}} result;
|
|
62
|
+
{{ target.getTypeDecl() }} result;
|
|
78
63
|
|
|
79
64
|
{% set props = {"exits": {}} %}
|
|
80
65
|
{{ int_slot(props, operator, nb_slot, target, int_desc, int_desc, "result", "operand1", "operand2", "exit_result_ok", "exit_result_exception") }}
|
|
@@ -113,7 +98,7 @@ static {{target.getTypeDecl()}} _BINARY_OPERATION_{{op_code}}_{{target.getHelper
|
|
|
113
98
|
{% endif %}
|
|
114
99
|
|
|
115
100
|
if ({{ left.getTypeIdenticalCheckExpression(right, "type1", "type2") }}) {
|
|
116
|
-
{{target.getTypeDecl()}} result;
|
|
101
|
+
{{ target.getTypeDecl() }} result;
|
|
117
102
|
|
|
118
103
|
{# There is special code for same types. #}
|
|
119
104
|
// return _BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getSameTypeType(right).getHelperCodeName()}}_{{right.getSameTypeType(left).getHelperCodeName()}}(operand1, operand2);
|
|
@@ -143,6 +128,21 @@ static {{target.getTypeDecl()}} _BINARY_OPERATION_{{op_code}}_{{target.getHelper
|
|
|
143
128
|
{% endif %}
|
|
144
129
|
}
|
|
145
130
|
|
|
146
|
-
{{target.getTypeDecl()}} BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
131
|
+
{{ target.getTypeDecl() }} BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
147
132
|
return _BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}(operand1, operand2);
|
|
148
133
|
}
|
|
134
|
+
|
|
135
|
+
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
136
|
+
{# integrates with CPython, but also works on its own. #}
|
|
137
|
+
{# #}
|
|
138
|
+
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
139
|
+
{# you may not use this file except in compliance with the License. #}
|
|
140
|
+
{# You may obtain a copy of the License at #}
|
|
141
|
+
{# #}
|
|
142
|
+
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
143
|
+
{# #}
|
|
144
|
+
{# Unless required by applicable law or agreed to in writing, software #}
|
|
145
|
+
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
146
|
+
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
147
|
+
{# See the License for the specific language governing permissions and #}
|
|
148
|
+
{# limitations under the License. #}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
3
|
+
{% set props = {"exits": {}} %}
|
|
4
|
+
{% from 'HelperSlotsInt.c.j2' import int_core with context %}
|
|
5
|
+
{% set bool_mode = target and target.type_name in ("nuitka_bool", "nbool") %}
|
|
6
|
+
bool BINARY_OPERATION_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{ target.getVariableDecl("result") }}, {{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
7
|
+
{{ left.getCheckValueCode("operand1") }}
|
|
8
|
+
{{ right.getCheckValueCode("operand2") }}
|
|
9
|
+
|
|
10
|
+
bool left_c_usable = {{left.getDualValidityCheckCode("C", "operand1")}};
|
|
11
|
+
bool right_c_usable = {{right.getDualValidityCheckCode("C", "operand2")}};
|
|
12
|
+
|
|
13
|
+
if (left_c_usable && right_c_usable) {
|
|
14
|
+
{% if target.isSimilarOrSameTypesAsOneOf(n_ilong_desc) %}
|
|
15
|
+
// Not every code path will make use of all possible results.
|
|
16
|
+
#ifdef _MSC_VER
|
|
17
|
+
#pragma warning(push)
|
|
18
|
+
#pragma warning(disable : 4101)
|
|
19
|
+
#endif
|
|
20
|
+
NUITKA_MAY_BE_UNUSED bool cbool_result;
|
|
21
|
+
NUITKA_MAY_BE_UNUSED PyObject *obj_result;
|
|
22
|
+
NUITKA_MAY_BE_UNUSED long clong_result;
|
|
23
|
+
NUITKA_MAY_BE_UNUSED double cfloat_result;
|
|
24
|
+
#ifdef _MSC_VER
|
|
25
|
+
#pragma warning(pop)
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
{{int_core(props, operator, nb_slot, bool_mode, left, right, result, "operand1", "operand2", "exit_result_ok", "exit_result_exception", "exit_result_ok_cbool", "exit_result_ok_clong", "exit_result_ok_cfloat", "exit_result_object", "exit_result_ok_left", "exit_result_ok_const_int_0", "exit_result_ok_const_int_neg_1", "exit_result_ok_const_float_0_0", "exit_result_ok_const_float_minus_0_0")}}
|
|
29
|
+
|
|
30
|
+
{% if props["fall_through_needed"] %}
|
|
31
|
+
{% if left.isDualType() %}
|
|
32
|
+
{{left.getDualTypeEnsurePythonObjectCode("operand1")}}
|
|
33
|
+
obj_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{left.getDualType("Python").getHelperCodeName()}}_{{right.getDualType("C").getHelperCodeName()}}({{left.getDualTypeAccessCode("Python", "operand1")}}, {{right.getDualTypeAccessCode("C", "operand2")}});
|
|
34
|
+
{% else %}
|
|
35
|
+
{{right.getDualTypeEnsurePythonObjectCode("operand2")}}
|
|
36
|
+
obj_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{left.getDualType("C").getHelperCodeName()}}_{{right.getDualType("Python").getHelperCodeName()}}({{left.getDualTypeAccessCode("C", "operand1")}}, {{right.getDualTypeAccessCode("Python", "operand2")}});
|
|
37
|
+
{% endif %}
|
|
38
|
+
|
|
39
|
+
if (unlikely(result == NULL)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
{{ target.getAssignFromObjectExpressionCode("result", "obj_result") }}
|
|
44
|
+
return true;
|
|
45
|
+
|
|
46
|
+
{% else %}
|
|
47
|
+
{{ 0/0 }}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% endif %}
|
|
50
|
+
|
|
51
|
+
{% if "exit_result_ok_clong" in props["exits"] %}
|
|
52
|
+
exit_result_ok_clong:
|
|
53
|
+
{{target.getAssignFromLongExpressionCode("result", "clong_result")}}
|
|
54
|
+
return true;
|
|
55
|
+
{% endif %}
|
|
56
|
+
|
|
57
|
+
{% if left.isDualType() %}
|
|
58
|
+
} else if (left_c_usable == false && right_c_usable) {
|
|
59
|
+
PyObject *python_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{left.getDualType("Python").getHelperCodeName()}}_{{right.getDualType("C").getHelperCodeName()}}({{left.getDualTypeAccessCode("Python", "operand1")}}, {{right.getDualTypeAccessCode("C", "operand2")}});
|
|
60
|
+
|
|
61
|
+
if (unlikely(python_result == NULL)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
{{ target.getSetDualValueCode("Python", "result", "python_result") }}
|
|
66
|
+
return true;
|
|
67
|
+
{% endif %}
|
|
68
|
+
{% if right.isDualType() %}
|
|
69
|
+
} else if (left_c_usable && right_c_usable == false) {
|
|
70
|
+
{% if left.isCommutativeType() and right.isCommutativeType() and isCommutativeOperation(op_code) %}
|
|
71
|
+
PyObject *python_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{right.getDualType("Python").getHelperCodeName()}}_{{left.getDualType("C").getHelperCodeName()}}({{right.getDualTypeAccessCode("Python", "operand2")}}, {{left.getDualTypeAccessCode("C", "operand1")}});
|
|
72
|
+
{% else %}
|
|
73
|
+
PyObject *python_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{left.getDualType("C").getHelperCodeName()}}_{{right.getDualType("Python").getHelperCodeName()}}({{left.getDualTypeAccessCode("C", "operand1")}}, {{right.getDualTypeAccessCode("Python", "operand2")}});
|
|
74
|
+
{% endif %}
|
|
75
|
+
|
|
76
|
+
if (unlikely(python_result == NULL)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
{{ target.getSetDualValueCode("Python", "result", "python_result") }}
|
|
81
|
+
|
|
82
|
+
return true;
|
|
83
|
+
{% endif %}
|
|
84
|
+
} else {
|
|
85
|
+
{% if left.isDualType() and right.isDualType() %}
|
|
86
|
+
PyObject *python_result = BINARY_OPERATION_{{op_code}}_OBJECT_{{left.getDualType("Python").getHelperCodeName()}}_{{right.getDualType("Python").getHelperCodeName()}}({{left.getDualTypeAccessCode("Python", "operand1")}}, {{right.getDualTypeAccessCode("Python", "operand1")}});
|
|
87
|
+
|
|
88
|
+
if (unlikely(python_result == NULL)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
{{ target.getSetDualValueCode("Python", "result", "python_result") }}
|
|
93
|
+
|
|
94
|
+
return true;
|
|
95
|
+
{% else %}
|
|
96
|
+
NUITKA_CANNOT_GET_HERE("cannot happen with types {{left.getHelperCodeName()}} {{right.getHelperCodeName()}}");
|
|
97
|
+
return false;
|
|
98
|
+
{% endif %}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
103
|
+
{# integrates with CPython, but also works on its own. #}
|
|
104
|
+
{# #}
|
|
105
|
+
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
106
|
+
{# you may not use this file except in compliance with the License. #}
|
|
107
|
+
{# You may obtain a copy of the License at #}
|
|
108
|
+
{# #}
|
|
109
|
+
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
110
|
+
{# #}
|
|
111
|
+
{# Unless required by applicable law or agreed to in writing, software #}
|
|
112
|
+
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
113
|
+
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
114
|
+
{# See the License for the specific language governing permissions and #}
|
|
115
|
+
{# limitations under the License. #}
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
{# Copyright
|
|
2
|
-
|
|
3
|
-
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
4
|
-
{# integrates with CPython, but also works on its own. #}
|
|
5
|
-
{# #}
|
|
6
|
-
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
7
|
-
{# you may not use this file except in compliance with the License. #}
|
|
8
|
-
{# You may obtain a copy of the License at #}
|
|
9
|
-
{# #}
|
|
10
|
-
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
11
|
-
{# #}
|
|
12
|
-
{# Unless required by applicable law or agreed to in writing, software #}
|
|
13
|
-
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
14
|
-
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
15
|
-
{# See the License for the specific language governing permissions and #}
|
|
16
|
-
{# limitations under the License. #}
|
|
17
|
-
{# #}
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
18
3
|
{% macro comparison_fallback(op_code, target, left, right, type1, type2, operand1, operand2) %}
|
|
19
4
|
{# For non-identical types, or for "OBJECT_OBJECT", do the full work. #}
|
|
20
5
|
{% if left != right or left.type_name == "object" %}
|
|
@@ -31,8 +16,8 @@
|
|
|
31
16
|
// Quick path for avoidable checks, compatible with CPython.
|
|
32
17
|
if (operand1 == operand2 && {{left.getMostSpecificType(right).getSaneTypeCheckCode("operand1")}}) {
|
|
33
18
|
bool r = {% if op_code == "NE" %} false {% else %} true {%endif %};
|
|
34
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
35
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
19
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
20
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
36
21
|
return result;
|
|
37
22
|
}
|
|
38
23
|
{% endif %}
|
|
@@ -76,7 +61,7 @@
|
|
|
76
61
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
77
62
|
}
|
|
78
63
|
|
|
79
|
-
|
|
64
|
+
Py_DECREF_IMMORTAL(result);
|
|
80
65
|
}
|
|
81
66
|
|
|
82
67
|
// No rich comparison worked, but maybe compare works.
|
|
@@ -120,8 +105,8 @@
|
|
|
120
105
|
}
|
|
121
106
|
|
|
122
107
|
bool r = c != 0;
|
|
123
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
124
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
108
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
109
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
125
110
|
return result;
|
|
126
111
|
}
|
|
127
112
|
}
|
|
@@ -141,7 +126,7 @@
|
|
|
141
126
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
142
127
|
}
|
|
143
128
|
|
|
144
|
-
|
|
129
|
+
Py_DECREF_IMMORTAL(result);
|
|
145
130
|
}
|
|
146
131
|
}
|
|
147
132
|
|
|
@@ -155,7 +140,7 @@
|
|
|
155
140
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
156
141
|
}
|
|
157
142
|
|
|
158
|
-
|
|
143
|
+
Py_DECREF_IMMORTAL(result);
|
|
159
144
|
}
|
|
160
145
|
|
|
161
146
|
f = {{right.getSlotValueExpression("type2", "tp_richcompare")}};
|
|
@@ -168,7 +153,7 @@
|
|
|
168
153
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
169
154
|
}
|
|
170
155
|
|
|
171
|
-
|
|
156
|
+
Py_DECREF_IMMORTAL(result);
|
|
172
157
|
}
|
|
173
158
|
|
|
174
159
|
int c;
|
|
@@ -255,8 +240,8 @@
|
|
|
255
240
|
}
|
|
256
241
|
|
|
257
242
|
bool r = c != 0;
|
|
258
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
259
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
243
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
244
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
260
245
|
return result;
|
|
261
246
|
#else
|
|
262
247
|
bool checked_reverse_op = false;
|
|
@@ -276,7 +261,7 @@
|
|
|
276
261
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
277
262
|
}
|
|
278
263
|
|
|
279
|
-
|
|
264
|
+
Py_DECREF_IMMORTAL(result);
|
|
280
265
|
}
|
|
281
266
|
}
|
|
282
267
|
|
|
@@ -291,7 +276,7 @@
|
|
|
291
276
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
292
277
|
}
|
|
293
278
|
|
|
294
|
-
|
|
279
|
+
Py_DECREF_IMMORTAL(result);
|
|
295
280
|
}
|
|
296
281
|
|
|
297
282
|
if (checked_reverse_op == false) {
|
|
@@ -306,7 +291,7 @@
|
|
|
306
291
|
{{ target.getReturnFromObjectExpressionCode("result") }}
|
|
307
292
|
}
|
|
308
293
|
|
|
309
|
-
|
|
294
|
+
Py_DECREF_IMMORTAL(result);
|
|
310
295
|
}
|
|
311
296
|
}
|
|
312
297
|
|
|
@@ -317,14 +302,14 @@
|
|
|
317
302
|
switch(Py_{{op_code}}) {
|
|
318
303
|
case Py_EQ: {
|
|
319
304
|
bool r = operand1 == operand2;
|
|
320
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
321
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
305
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
306
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
322
307
|
return result;
|
|
323
308
|
}
|
|
324
309
|
case Py_NE: {
|
|
325
310
|
bool r = operand1 != operand2;
|
|
326
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
327
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
311
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
312
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
328
313
|
return result;
|
|
329
314
|
}
|
|
330
315
|
default:
|
|
@@ -333,7 +318,7 @@
|
|
|
333
318
|
#endif
|
|
334
319
|
{% endif %}
|
|
335
320
|
{% endmacro %}
|
|
336
|
-
{{target.getTypeDecl()}} RICH_COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
321
|
+
{{ target.getTypeDecl() }} RICH_COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
337
322
|
|
|
338
323
|
{# Divert to more special implementation immediately if possible. #}
|
|
339
324
|
{% if left.getTypeComparisonSpecializationCode(right, op_code, target, "operand1", "operand2") %}
|
|
@@ -350,3 +335,18 @@
|
|
|
350
335
|
{{ comparison_fallback(op_code, target, left, right, type1, type2, operand1, operand2) }}
|
|
351
336
|
{% endif %}
|
|
352
337
|
}
|
|
338
|
+
|
|
339
|
+
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
340
|
+
{# integrates with CPython, but also works on its own. #}
|
|
341
|
+
{# #}
|
|
342
|
+
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
343
|
+
{# you may not use this file except in compliance with the License. #}
|
|
344
|
+
{# You may obtain a copy of the License at #}
|
|
345
|
+
{# #}
|
|
346
|
+
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
347
|
+
{# #}
|
|
348
|
+
{# Unless required by applicable law or agreed to in writing, software #}
|
|
349
|
+
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
350
|
+
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
351
|
+
{# See the License for the specific language governing permissions and #}
|
|
352
|
+
{# limitations under the License. #}
|
|
@@ -1,21 +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
|
-
{# #}
|
|
18
|
-
static {{target.getTypeDecl()}} COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
3
|
+
static {{ target.getTypeDecl() }} COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
19
4
|
{{left.getCheckValueCode("operand1")}}
|
|
20
5
|
{{right.getCheckValueCode("operand2")}}
|
|
21
6
|
|
|
@@ -24,56 +9,56 @@ static {{target.getTypeDecl()}} COMPARE_{{op_code}}_{{target.getHelperCodeName()
|
|
|
24
9
|
|
|
25
10
|
// Same object has fast path for all operations.
|
|
26
11
|
if (operand1 == operand2) {
|
|
27
|
-
{% if
|
|
12
|
+
{% if operator in ("==", ">=", "<=") %}
|
|
28
13
|
bool r = true;
|
|
29
14
|
{% else %}
|
|
30
15
|
bool r = false;
|
|
31
16
|
{% endif %}
|
|
32
17
|
|
|
33
18
|
// Convert to target type.
|
|
34
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
35
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
19
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
20
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
36
21
|
return result;
|
|
37
22
|
}
|
|
38
23
|
|
|
39
24
|
Py_ssize_t len_a = Py_SIZE(operand1);
|
|
40
25
|
Py_ssize_t len_b = Py_SIZE(operand2);
|
|
41
26
|
|
|
42
|
-
{% if
|
|
27
|
+
{% if operator in ("==", "!=") %}
|
|
43
28
|
if (len_a != len_b) {
|
|
44
29
|
{# Shortcut for equality/inequality, driven by length divergence. #}
|
|
45
|
-
{% if
|
|
30
|
+
{% if operator == "==" %}
|
|
46
31
|
bool r = false;
|
|
47
32
|
{% else %}
|
|
48
33
|
bool r = true;
|
|
49
34
|
{% endif %}
|
|
50
35
|
|
|
51
36
|
// Convert to target type.
|
|
52
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
53
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
37
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
38
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
54
39
|
return result;
|
|
55
40
|
} else {
|
|
56
41
|
if ((a->ob_sval[0] == b->ob_sval[0]) && (memcmp(a->ob_sval, b->ob_sval, len_a) == 0)) {
|
|
57
|
-
{% if
|
|
42
|
+
{% if operator == "==" %}
|
|
58
43
|
bool r = true;
|
|
59
44
|
{% else %}
|
|
60
45
|
bool r = false;
|
|
61
46
|
{% endif %}
|
|
62
47
|
|
|
63
48
|
// Convert to target type.
|
|
64
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
65
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
49
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
50
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
66
51
|
return result;
|
|
67
52
|
} else {
|
|
68
|
-
{% if
|
|
53
|
+
{% if operator == "==" %}
|
|
69
54
|
bool r = false;
|
|
70
55
|
{% else %}
|
|
71
56
|
bool r = true;
|
|
72
57
|
{% endif %}
|
|
73
58
|
|
|
74
59
|
// Convert to target type.
|
|
75
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("r")}};
|
|
76
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
60
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
61
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
77
62
|
return result;
|
|
78
63
|
}
|
|
79
64
|
}
|
|
@@ -96,20 +81,35 @@ static {{target.getTypeDecl()}} COMPARE_{{op_code}}_{{target.getHelperCodeName()
|
|
|
96
81
|
c = (len_a < len_b) ? -1 : (len_a > len_b) ? 1 : 0;
|
|
97
82
|
}
|
|
98
83
|
|
|
99
|
-
{% if
|
|
84
|
+
{% if operator == "<" %}
|
|
100
85
|
c = c < 0;
|
|
101
|
-
{% elif
|
|
86
|
+
{% elif operator == "<=" %}
|
|
102
87
|
c = c <= 0;
|
|
103
|
-
{% elif
|
|
88
|
+
{% elif operator == ">" %}
|
|
104
89
|
c = c > 0;
|
|
105
|
-
{% elif
|
|
90
|
+
{% elif operator == ">=" %}
|
|
106
91
|
c = c >= 0;
|
|
107
92
|
{% endif %}
|
|
108
93
|
|
|
109
94
|
// Convert to target type.
|
|
110
|
-
{{target.getTypeDecl()}} result = {{target.getToValueFromBoolExpression("c != 0")}};
|
|
111
|
-
{{target.getTakeReferenceStatement("result")}}
|
|
95
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("c != 0")}};
|
|
96
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
112
97
|
return result;
|
|
113
98
|
|
|
114
99
|
{% endif %}
|
|
115
100
|
}
|
|
101
|
+
|
|
102
|
+
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
103
|
+
{# integrates with CPython, but also works on its own. #}
|
|
104
|
+
{# #}
|
|
105
|
+
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
106
|
+
{# you may not use this file except in compliance with the License. #}
|
|
107
|
+
{# You may obtain a copy of the License at #}
|
|
108
|
+
{# #}
|
|
109
|
+
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
110
|
+
{# #}
|
|
111
|
+
{# Unless required by applicable law or agreed to in writing, software #}
|
|
112
|
+
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
113
|
+
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
114
|
+
{# See the License for the specific language governing permissions and #}
|
|
115
|
+
{# limitations under the License. #}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file #}
|
|
2
|
+
|
|
3
|
+
{% macro compare_call(op_code, target, left, right, left_choice, right_choice, operand1, operand2) %}
|
|
4
|
+
{% if left.getDualType(left_choice) == c_long_desc and right.getDualType(right_choice) == c_digit_desc %}
|
|
5
|
+
{% set right = c_long_desc %}
|
|
6
|
+
{% endif %}
|
|
7
|
+
{% if left.getDualType(left_choice) == c_digit_desc and right.getDualType(right_choice) == c_long_desc %}
|
|
8
|
+
{% set left = c_long_desc %}
|
|
9
|
+
{% endif %}
|
|
10
|
+
COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getDualType(left_choice).getHelperCodeName()}}_{{right.getDualType(right_choice).getHelperCodeName()}}({{left.getDualTypeAccessCode(left_choice, "operand1")}}, {{right.getDualTypeAccessCode(right_choice, "operand2")}})
|
|
11
|
+
{% endmacro %}
|
|
12
|
+
{{ target.getTypeDecl() }} RICH_COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getVariableDecl("operand1")}}, {{right.getVariableDecl("operand2")}}) {
|
|
13
|
+
{{ left.getCheckValueCode("operand1") }}
|
|
14
|
+
{{ right.getCheckValueCode("operand2") }}
|
|
15
|
+
|
|
16
|
+
bool left_c_usable = {{left.getDualValidityCheckCode("C", "operand1")}};
|
|
17
|
+
bool right_c_usable = {{right.getDualValidityCheckCode("C", "operand2")}};
|
|
18
|
+
|
|
19
|
+
if (left_c_usable && right_c_usable) {
|
|
20
|
+
{% if left.isSimilarOrSameTypesAsOneOf(n_ilong_desc) or right.isSimilarOrSameTypesAsOneOf(n_ilong_desc) %}
|
|
21
|
+
{% if op_code in ("LT", "LE", "EQ") %}
|
|
22
|
+
return {{ compare_call(op_code, target, left, right, "C", "C", "operand1", "operand2") }};
|
|
23
|
+
{% else %}
|
|
24
|
+
bool r = {{ compare_call(inverse_compare_op_code, c_bool_desc, left, right, "C", "C", "operand1", "operand2") }};
|
|
25
|
+
|
|
26
|
+
// Convert to target type.
|
|
27
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("!r")}};
|
|
28
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
29
|
+
return result;
|
|
30
|
+
{% endif %}
|
|
31
|
+
{% else %}
|
|
32
|
+
{{ 0/0 }}
|
|
33
|
+
{% endif %}
|
|
34
|
+
} else if (!left_c_usable && !right_c_usable) {
|
|
35
|
+
{% if left.isDualType() and right.isDualType() %}
|
|
36
|
+
return RICH_{{ compare_call(op_code, target, left, right, "Python", "Python", "operand1", "operand2") }};
|
|
37
|
+
{% elif left.isDualType() %}
|
|
38
|
+
{{left.getDualTypeEnsurePythonObjectCode("operand1")}}
|
|
39
|
+
|
|
40
|
+
return COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getDualType("Python").getHelperCodeName()}}_{{right.getHelperCodeName()}}({{left.getDualTypeAccessCode("Python", "operand1")}}, {{right.getDualTypeAccessCode("C", "operand2")}});
|
|
41
|
+
{% elif right.isDualType() %}
|
|
42
|
+
{{right.getDualTypeEnsurePythonObjectCode("operand1")}}
|
|
43
|
+
|
|
44
|
+
return RICH_COMPARE_{{op_code}}_{{target.getHelperCodeName()}}_{{left.getHelperCodeName()}}_{{right.getDualType("Python").getHelperCodeName()}}({{right.getDualTypeAccessCode("C", "operand1")}}, {{right.getDualTypeAccessCode("Python", "operand2")}});
|
|
45
|
+
{% else %}
|
|
46
|
+
{{ 0/0 }}
|
|
47
|
+
{% endif %}
|
|
48
|
+
} else {
|
|
49
|
+
{% if left.isDualType() and right.isDualType() %}
|
|
50
|
+
bool r;
|
|
51
|
+
if (left_c_usable) {
|
|
52
|
+
r = COMPARE_{{reversed_args_op_code}}_CBOOL_{{right.getDualType("Python").getHelperCodeName()}}_{{left.getDualType("C").getHelperCodeName()}}({{right.getDualTypeAccessCode("Python", "operand2")}}, {{left.getDualTypeAccessCode("C", "operand1")}});
|
|
53
|
+
r = !r;
|
|
54
|
+
} else {
|
|
55
|
+
r = COMPARE_{{op_code}}_CBOOL_{{left.getDualType("Python").getHelperCodeName()}}_{{right.getDualType("C").getHelperCodeName()}}({{left.getDualTypeAccessCode("Python", "operand1")}}, {{left.getDualTypeAccessCode("C", "operand2")}});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Convert to target type.
|
|
59
|
+
{{ target.getTypeDecl() }} result = {{target.getToValueFromBoolExpression("r")}};
|
|
60
|
+
{{ target.getTakeReferenceStatement("result", immortal=True) }}
|
|
61
|
+
return result;
|
|
62
|
+
{% elif left.isDualType() %}
|
|
63
|
+
return {{ compare_call(op_code, target, left, right, "Python", "C", "operand1", "operand2") }};
|
|
64
|
+
{% elif right.isDualType() %}
|
|
65
|
+
return {{ compare_call(reversed_args_op_code, target, right, left, "Python", "C", "operand2", "operand1") }};
|
|
66
|
+
{% else %}
|
|
67
|
+
{{ 0/0 }}
|
|
68
|
+
{% endif %}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
{# Part of "Nuitka", an optimizing Python compiler that is compatible and #}
|
|
74
|
+
{# integrates with CPython, but also works on its own. #}
|
|
75
|
+
{# #}
|
|
76
|
+
{# Licensed under the Apache License, Version 2.0 (the "License"); #}
|
|
77
|
+
{# you may not use this file except in compliance with the License. #}
|
|
78
|
+
{# You may obtain a copy of the License at #}
|
|
79
|
+
{# #}
|
|
80
|
+
{# http://www.apache.org/licenses/LICENSE-2.0 #}
|
|
81
|
+
{# #}
|
|
82
|
+
{# Unless required by applicable law or agreed to in writing, software #}
|
|
83
|
+
{# distributed under the License is distributed on an "AS IS" BASIS, #}
|
|
84
|
+
{# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #}
|
|
85
|
+
{# See the License for the specific language governing permissions and #}
|
|
86
|
+
{# limitations under the License. #}
|