Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
// Copyright
|
|
2
|
-
|
|
3
|
-
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
4
|
-
// integrates with CPython, but also works on its own.
|
|
5
|
-
//
|
|
6
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
// you may not use this file except in compliance with the License.
|
|
8
|
-
// You may obtain a copy of the License at
|
|
9
|
-
//
|
|
10
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
//
|
|
12
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
// See the License for the specific language governing permissions and
|
|
16
|
-
// limitations under the License.
|
|
17
|
-
//
|
|
1
|
+
// Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
18
3
|
/* Implementations of compiled code helpers.
|
|
19
4
|
|
|
20
5
|
* The definition of a compiled code helper is that it's being used in
|
|
@@ -45,7 +30,7 @@ static void _initBuiltinTypeMethods(void) {
|
|
|
45
30
|
_initListBuiltinMethods();
|
|
46
31
|
}
|
|
47
32
|
|
|
48
|
-
#if PYTHON_VERSION >=
|
|
33
|
+
#if PYTHON_VERSION >= 0x350
|
|
49
34
|
#include "HelpersAllocator.c"
|
|
50
35
|
#endif
|
|
51
36
|
|
|
@@ -67,6 +52,7 @@ static void _initBuiltinTypeMethods(void) {
|
|
|
67
52
|
#include "HelpersStrings.c"
|
|
68
53
|
#include "HelpersTuples.c"
|
|
69
54
|
|
|
55
|
+
#include "HelpersEnvironmentVariables.c"
|
|
70
56
|
#include "HelpersFilesystemPaths.c"
|
|
71
57
|
#include "HelpersSafeStrings.c"
|
|
72
58
|
|
|
@@ -95,12 +81,12 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
|
|
|
95
81
|
size = ESTIMATE_RANGE(high, low, -step);
|
|
96
82
|
}
|
|
97
83
|
|
|
98
|
-
PyObject *result = MAKE_LIST_EMPTY(size);
|
|
84
|
+
PyObject *result = MAKE_LIST_EMPTY(tstate, size);
|
|
99
85
|
|
|
100
86
|
long current = low;
|
|
101
87
|
|
|
102
88
|
for (int i = 0; i < size; i++) {
|
|
103
|
-
PyList_SET_ITEM(result, i,
|
|
89
|
+
PyList_SET_ITEM(result, i, Nuitka_PyInt_FromLong(current));
|
|
104
90
|
current += step;
|
|
105
91
|
}
|
|
106
92
|
|
|
@@ -110,10 +96,10 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
|
|
|
110
96
|
static PyObject *_BUILTIN_RANGE_INT2(long low, long high) { return _BUILTIN_RANGE_INT3(low, high, 1); }
|
|
111
97
|
|
|
112
98
|
static PyObject *_BUILTIN_RANGE_INT(long boundary) {
|
|
113
|
-
PyObject *result = MAKE_LIST_EMPTY(boundary > 0 ? boundary : 0);
|
|
99
|
+
PyObject *result = MAKE_LIST_EMPTY(tstate, boundary > 0 ? boundary : 0);
|
|
114
100
|
|
|
115
101
|
for (int i = 0; i < boundary; i++) {
|
|
116
|
-
PyList_SET_ITEM(result, i,
|
|
102
|
+
PyList_SET_ITEM(result, i, Nuitka_PyInt_FromLong(i));
|
|
117
103
|
}
|
|
118
104
|
|
|
119
105
|
return result;
|
|
@@ -205,10 +191,10 @@ PyObject *BUILTIN_RANGE2(PyThreadState *tstate, PyObject *low, PyObject *high) {
|
|
|
205
191
|
|
|
206
192
|
if (fallback) {
|
|
207
193
|
// Transfers references to tuple.
|
|
208
|
-
PyObject *pos_args = MAKE_TUPLE2_0(low_temp, high_temp);
|
|
194
|
+
PyObject *pos_args = MAKE_TUPLE2_0(tstate, low_temp, high_temp);
|
|
209
195
|
NUITKA_ASSIGN_BUILTIN(range);
|
|
210
196
|
|
|
211
|
-
PyObject *result =
|
|
197
|
+
PyObject *result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
|
|
212
198
|
|
|
213
199
|
Py_DECREF(pos_args);
|
|
214
200
|
|
|
@@ -264,11 +250,11 @@ PyObject *BUILTIN_RANGE3(PyThreadState *tstate, PyObject *low, PyObject *high, P
|
|
|
264
250
|
}
|
|
265
251
|
|
|
266
252
|
if (fallback) {
|
|
267
|
-
PyObject *pos_args = MAKE_TUPLE3_0(low_temp, high_temp, step_temp);
|
|
253
|
+
PyObject *pos_args = MAKE_TUPLE3_0(tstate, low_temp, high_temp, step_temp);
|
|
268
254
|
|
|
269
255
|
NUITKA_ASSIGN_BUILTIN(range);
|
|
270
256
|
|
|
271
|
-
PyObject *result =
|
|
257
|
+
PyObject *result = CALL_FUNCTION_WITH_POS_ARGS3(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
|
|
272
258
|
|
|
273
259
|
Py_DECREF(pos_args);
|
|
274
260
|
|
|
@@ -315,6 +301,8 @@ PyObject *MAKE_XRANGE(PyThreadState *tstate, long start, long stop, long step) {
|
|
|
315
301
|
return NULL;
|
|
316
302
|
}
|
|
317
303
|
|
|
304
|
+
// spell-checker: ignore rangeobject
|
|
305
|
+
|
|
318
306
|
struct _rangeobject2 *result = (struct _rangeobject2 *)PyObject_New(struct _rangeobject2, &PyRange_Type);
|
|
319
307
|
assert(result != NULL);
|
|
320
308
|
|
|
@@ -599,7 +587,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
|
|
|
599
587
|
|
|
600
588
|
if (cmp == 0) {
|
|
601
589
|
Py_DECREF(it);
|
|
602
|
-
|
|
590
|
+
Py_INCREF_IMMORTAL(Py_False);
|
|
603
591
|
return Py_False;
|
|
604
592
|
}
|
|
605
593
|
}
|
|
@@ -610,7 +598,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
|
|
|
610
598
|
return NULL;
|
|
611
599
|
}
|
|
612
600
|
|
|
613
|
-
|
|
601
|
+
Py_INCREF_IMMORTAL(Py_True);
|
|
614
602
|
return Py_True;
|
|
615
603
|
}
|
|
616
604
|
|
|
@@ -649,7 +637,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
|
|
|
649
637
|
}
|
|
650
638
|
if (cmp > 0) {
|
|
651
639
|
Py_DECREF(it);
|
|
652
|
-
|
|
640
|
+
Py_INCREF_IMMORTAL(Py_True);
|
|
653
641
|
return Py_True;
|
|
654
642
|
}
|
|
655
643
|
}
|
|
@@ -659,7 +647,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
|
|
|
659
647
|
return NULL;
|
|
660
648
|
}
|
|
661
649
|
|
|
662
|
-
|
|
650
|
+
Py_INCREF_IMMORTAL(Py_False);
|
|
663
651
|
return Py_False;
|
|
664
652
|
}
|
|
665
653
|
|
|
@@ -688,7 +676,7 @@ PyObject *BUILTIN_FORMAT(PyThreadState *tstate, PyObject *value, PyObject *forma
|
|
|
688
676
|
}
|
|
689
677
|
|
|
690
678
|
// Helper functions for print. Need to play nice with Python softspace
|
|
691
|
-
//
|
|
679
|
+
// behavior. spell-checker: ignore softspace
|
|
692
680
|
|
|
693
681
|
#if PYTHON_VERSION >= 0x300
|
|
694
682
|
NUITKA_DEFINE_BUILTIN(print);
|
|
@@ -724,10 +712,9 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
|
|
|
724
712
|
#else
|
|
725
713
|
NUITKA_ASSIGN_BUILTIN(print);
|
|
726
714
|
|
|
727
|
-
|
|
728
|
-
PyTracebackObject *exception_tb;
|
|
715
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
729
716
|
|
|
730
|
-
|
|
717
|
+
FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
731
718
|
|
|
732
719
|
PyObject *result;
|
|
733
720
|
|
|
@@ -739,14 +726,14 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
|
|
|
739
726
|
|
|
740
727
|
// TODO: This should use something that does not build a dictionary at all, and not
|
|
741
728
|
// uses a tuple.
|
|
742
|
-
result =
|
|
729
|
+
result = CALL_FUNCTION_WITH_KW_ARGS(tstate, NUITKA_ACCESS_BUILTIN(print), kw_args);
|
|
743
730
|
|
|
744
731
|
Py_DECREF(kw_args);
|
|
745
732
|
}
|
|
746
733
|
|
|
747
734
|
Py_XDECREF(result);
|
|
748
735
|
|
|
749
|
-
|
|
736
|
+
RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
750
737
|
|
|
751
738
|
return result != NULL;
|
|
752
739
|
#endif
|
|
@@ -818,13 +805,12 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
|
|
|
818
805
|
#else
|
|
819
806
|
NUITKA_ASSIGN_BUILTIN(print);
|
|
820
807
|
|
|
821
|
-
|
|
822
|
-
PyTracebackObject *exception_tb;
|
|
808
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
823
809
|
|
|
824
|
-
|
|
810
|
+
FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
825
811
|
|
|
826
812
|
// TODO: Have a helper that creates a dictionary for PyObject **
|
|
827
|
-
PyObject *print_kw = MAKE_DICT_EMPTY();
|
|
813
|
+
PyObject *print_kw = MAKE_DICT_EMPTY(tstate);
|
|
828
814
|
DICT_SET_ITEM(print_kw, const_str_plain_end, const_str_empty);
|
|
829
815
|
|
|
830
816
|
if (file == NULL) {
|
|
@@ -833,7 +819,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
|
|
|
833
819
|
DICT_SET_ITEM(print_kw, const_str_plain_file, file);
|
|
834
820
|
}
|
|
835
821
|
|
|
836
|
-
PyObject *print_args = MAKE_TUPLE1(object);
|
|
822
|
+
PyObject *print_args = MAKE_TUPLE1(tstate, object);
|
|
837
823
|
|
|
838
824
|
PyObject *result = CALL_FUNCTION(tstate, NUITKA_ACCESS_BUILTIN(print), print_args, print_kw);
|
|
839
825
|
|
|
@@ -842,7 +828,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
|
|
|
842
828
|
|
|
843
829
|
Py_XDECREF(result);
|
|
844
830
|
|
|
845
|
-
|
|
831
|
+
RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
846
832
|
|
|
847
833
|
return result != NULL;
|
|
848
834
|
#endif
|
|
@@ -850,12 +836,18 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
|
|
|
850
836
|
|
|
851
837
|
void PRINT_REFCOUNT(PyObject *object) {
|
|
852
838
|
if (object) {
|
|
839
|
+
#if PYTHON_VERSION >= 0x3c0
|
|
840
|
+
if (_Py_IsImmortal(object)) {
|
|
841
|
+
PRINT_STRING(" refcnt IMMORTAL");
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
#endif
|
|
853
845
|
char buffer[1024];
|
|
854
846
|
snprintf(buffer, sizeof(buffer) - 1, " refcnt %" PY_FORMAT_SIZE_T "d ", Py_REFCNT(object));
|
|
855
847
|
|
|
856
848
|
PRINT_STRING(buffer);
|
|
857
849
|
} else {
|
|
858
|
-
PRINT_STRING("<null>");
|
|
850
|
+
PRINT_STRING(" <null>");
|
|
859
851
|
}
|
|
860
852
|
}
|
|
861
853
|
|
|
@@ -870,6 +862,17 @@ bool PRINT_STRING(char const *str) {
|
|
|
870
862
|
}
|
|
871
863
|
}
|
|
872
864
|
|
|
865
|
+
bool PRINT_STRING_W(wchar_t const *str) {
|
|
866
|
+
if (str) {
|
|
867
|
+
PyObject *tmp = NuitkaUnicode_FromWideChar(str, -1);
|
|
868
|
+
bool res = PRINT_ITEM(tmp);
|
|
869
|
+
Py_DECREF(tmp);
|
|
870
|
+
return res;
|
|
871
|
+
} else {
|
|
872
|
+
return PRINT_STRING("<nullstr>");
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
|
|
873
876
|
bool PRINT_FORMAT(char const *fmt, ...) {
|
|
874
877
|
va_list args;
|
|
875
878
|
va_start(args, fmt);
|
|
@@ -878,16 +881,17 @@ bool PRINT_FORMAT(char const *fmt, ...) {
|
|
|
878
881
|
char buffer[4096];
|
|
879
882
|
|
|
880
883
|
vsprintf(buffer, fmt, args);
|
|
884
|
+
va_end(args);
|
|
885
|
+
|
|
881
886
|
return PRINT_STRING(buffer);
|
|
882
887
|
}
|
|
883
888
|
|
|
884
889
|
bool PRINT_REPR(PyObject *object) {
|
|
885
|
-
PyObject *exception_type, *exception_value;
|
|
886
|
-
PyTracebackObject *exception_tb;
|
|
887
|
-
|
|
888
890
|
PyThreadState *tstate = PyThreadState_GET();
|
|
889
891
|
|
|
890
|
-
|
|
892
|
+
struct Nuitka_ExceptionPreservationItem saved_exception_state;
|
|
893
|
+
|
|
894
|
+
FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
891
895
|
|
|
892
896
|
bool res;
|
|
893
897
|
|
|
@@ -904,7 +908,7 @@ bool PRINT_REPR(PyObject *object) {
|
|
|
904
908
|
res = PRINT_NULL();
|
|
905
909
|
}
|
|
906
910
|
|
|
907
|
-
|
|
911
|
+
RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
|
|
908
912
|
|
|
909
913
|
return res;
|
|
910
914
|
}
|
|
@@ -913,50 +917,63 @@ bool PRINT_NULL(void) { return PRINT_STRING("<NULL>"); }
|
|
|
913
917
|
|
|
914
918
|
bool PRINT_TYPE(PyObject *object) { return PRINT_ITEM((PyObject *)Py_TYPE(object)); }
|
|
915
919
|
|
|
916
|
-
|
|
917
|
-
void _PRINT_EXCEPTION(PyObject *exception_type, PyObject *exception_value, PyTracebackObject *exception_tb) {
|
|
918
|
-
#else
|
|
919
|
-
void _PRINT_EXCEPTION(PyObject *exception_value) {
|
|
920
|
-
PyObject *exception_type = exception_value ? PyExceptionInstance_Class(exception_value) : NULL;
|
|
921
|
-
PyTracebackObject *exception_tb = (exception_value && PyExceptionInstance_Check(exception_value))
|
|
922
|
-
? GET_EXCEPTION_TRACEBACK(exception_value)
|
|
923
|
-
: NULL;
|
|
924
|
-
#endif
|
|
920
|
+
void _PRINT_EXCEPTION3(PyObject *exception_type, PyObject *exception_value, PyTracebackObject *exception_tb) {
|
|
925
921
|
PRINT_REPR(exception_type);
|
|
926
|
-
if (exception_type) {
|
|
922
|
+
if (exception_type != NULL) {
|
|
927
923
|
PRINT_REFCOUNT(exception_type);
|
|
928
924
|
}
|
|
929
925
|
PRINT_STRING("|");
|
|
930
926
|
PRINT_REPR(exception_value);
|
|
931
|
-
if (exception_value) {
|
|
927
|
+
if (exception_value != NULL) {
|
|
932
928
|
PRINT_REFCOUNT(exception_value);
|
|
933
929
|
}
|
|
934
930
|
#if PYTHON_VERSION >= 0x300
|
|
935
931
|
if (exception_value != NULL && PyExceptionInstance_Check(exception_value)) {
|
|
936
932
|
PRINT_STRING(" <- context ");
|
|
937
|
-
PyObject *context =
|
|
933
|
+
PyObject *context = Nuitka_Exception_GetContext(exception_value);
|
|
938
934
|
PRINT_REPR(context);
|
|
939
|
-
Py_XDECREF(context);
|
|
940
935
|
}
|
|
941
936
|
#endif
|
|
942
937
|
PRINT_STRING("|");
|
|
943
938
|
PRINT_REPR((PyObject *)exception_tb);
|
|
939
|
+
if (exception_tb != NULL) {
|
|
940
|
+
PRINT_REFCOUNT((PyObject *)exception_tb);
|
|
941
|
+
}
|
|
944
942
|
|
|
945
943
|
PRINT_NEW_LINE();
|
|
946
944
|
}
|
|
947
945
|
|
|
946
|
+
#if PYTHON_VERSION >= 0x3b0
|
|
947
|
+
void _PRINT_EXCEPTION1(PyObject *exception_value) {
|
|
948
|
+
PyObject *exception_type = exception_value ? PyExceptionInstance_Class(exception_value) : NULL;
|
|
949
|
+
PyTracebackObject *exception_tb = (exception_value && PyExceptionInstance_Check(exception_value))
|
|
950
|
+
? GET_EXCEPTION_TRACEBACK(exception_value)
|
|
951
|
+
: NULL;
|
|
952
|
+
|
|
953
|
+
_PRINT_EXCEPTION3(exception_type, exception_value, exception_tb);
|
|
954
|
+
}
|
|
955
|
+
#endif
|
|
956
|
+
|
|
948
957
|
void PRINT_CURRENT_EXCEPTION(void) {
|
|
949
958
|
PyThreadState *tstate = PyThreadState_GET();
|
|
950
959
|
|
|
951
960
|
PRINT_STRING("current_exc=");
|
|
961
|
+
#if PYTHON_VERSION < 0x3c0
|
|
952
962
|
PRINT_EXCEPTION(tstate->curexc_type, tstate->curexc_value, (PyTracebackObject *)tstate->curexc_traceback);
|
|
963
|
+
#else
|
|
964
|
+
_PRINT_EXCEPTION1(tstate->exc_info->exc_value);
|
|
965
|
+
#endif
|
|
953
966
|
}
|
|
954
967
|
|
|
955
968
|
void PRINT_PUBLISHED_EXCEPTION(void) {
|
|
956
969
|
PyThreadState *tstate = PyThreadState_GET();
|
|
957
970
|
|
|
958
971
|
PRINT_STRING("thread_exc=");
|
|
972
|
+
#if PYTHON_VERSION < 0x3b0
|
|
959
973
|
PRINT_EXCEPTION(EXC_TYPE(tstate), EXC_VALUE(tstate), EXC_TRACEBACK(tstate));
|
|
974
|
+
#else
|
|
975
|
+
PRINT_EXCEPTION(EXC_TYPE(tstate), EXC_VALUE(tstate), GET_EXCEPTION_TRACEBACK(EXC_VALUE(tstate)));
|
|
976
|
+
#endif
|
|
960
977
|
}
|
|
961
978
|
|
|
962
979
|
// TODO: Could be ported, the "printf" stuff would need to be split. On Python3
|
|
@@ -974,7 +991,7 @@ void PRINT_TRACEBACK(PyTracebackObject *traceback) {
|
|
|
974
991
|
PyFrameObject *frame = traceback->tb_frame;
|
|
975
992
|
|
|
976
993
|
while (frame != NULL) {
|
|
977
|
-
printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)frame
|
|
994
|
+
printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)Nuitka_Frame_GetCodeObject(frame))));
|
|
978
995
|
|
|
979
996
|
frame = frame->f_back;
|
|
980
997
|
}
|
|
@@ -1023,6 +1040,8 @@ bool PRINT_ITEM(PyObject *object) {
|
|
|
1023
1040
|
}
|
|
1024
1041
|
}
|
|
1025
1042
|
|
|
1043
|
+
bool PRINT_ITEM_LINE(PyObject *object) { return PRINT_ITEM(object) && PRINT_NEW_LINE(); }
|
|
1044
|
+
|
|
1026
1045
|
#if PYTHON_VERSION < 0x300
|
|
1027
1046
|
|
|
1028
1047
|
static void set_slot(PyObject **slot, PyObject *value) {
|
|
@@ -1032,26 +1051,26 @@ static void set_slot(PyObject **slot, PyObject *value) {
|
|
|
1032
1051
|
Py_XDECREF(temp);
|
|
1033
1052
|
}
|
|
1034
1053
|
|
|
1035
|
-
static void set_attr_slots(PyClassObject *
|
|
1036
|
-
set_slot(&
|
|
1037
|
-
set_slot(&
|
|
1038
|
-
set_slot(&
|
|
1054
|
+
static void set_attr_slots(PyClassObject *class_object) {
|
|
1055
|
+
set_slot(&class_object->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___getattr__));
|
|
1056
|
+
set_slot(&class_object->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___setattr__));
|
|
1057
|
+
set_slot(&class_object->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___delattr__));
|
|
1039
1058
|
}
|
|
1040
1059
|
|
|
1041
|
-
static bool set_dict(PyClassObject *
|
|
1060
|
+
static bool set_dict(PyClassObject *class_object, PyObject *value) {
|
|
1042
1061
|
if (value == NULL || !PyDict_Check(value)) {
|
|
1043
1062
|
PyThreadState *tstate = PyThreadState_GET();
|
|
1044
1063
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__dict__ must be a dictionary object");
|
|
1045
1064
|
return false;
|
|
1046
1065
|
} else {
|
|
1047
|
-
set_slot(&
|
|
1048
|
-
set_attr_slots(
|
|
1066
|
+
set_slot(&class_object->cl_dict, value);
|
|
1067
|
+
set_attr_slots(class_object);
|
|
1049
1068
|
|
|
1050
1069
|
return true;
|
|
1051
1070
|
}
|
|
1052
1071
|
}
|
|
1053
1072
|
|
|
1054
|
-
static bool set_bases(PyClassObject *
|
|
1073
|
+
static bool set_bases(PyClassObject *class_object, PyObject *value) {
|
|
1055
1074
|
if (value == NULL || !PyTuple_Check(value)) {
|
|
1056
1075
|
|
|
1057
1076
|
PyThreadState *tstate = PyThreadState_GET();
|
|
@@ -1071,7 +1090,7 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
|
|
|
1071
1090
|
return false;
|
|
1072
1091
|
}
|
|
1073
1092
|
|
|
1074
|
-
if (unlikely(PyClass_IsSubclass(base, (PyObject *)
|
|
1093
|
+
if (unlikely(PyClass_IsSubclass(base, (PyObject *)class_object))) {
|
|
1075
1094
|
PyThreadState *tstate = PyThreadState_GET();
|
|
1076
1095
|
|
|
1077
1096
|
SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
|
|
@@ -1080,14 +1099,14 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
|
|
|
1080
1099
|
}
|
|
1081
1100
|
}
|
|
1082
1101
|
|
|
1083
|
-
set_slot(&
|
|
1084
|
-
set_attr_slots(
|
|
1102
|
+
set_slot(&class_object->cl_bases, value);
|
|
1103
|
+
set_attr_slots(class_object);
|
|
1085
1104
|
|
|
1086
1105
|
return true;
|
|
1087
1106
|
}
|
|
1088
1107
|
}
|
|
1089
1108
|
|
|
1090
|
-
static bool set_name(PyClassObject *
|
|
1109
|
+
static bool set_name(PyClassObject *class_object, PyObject *value) {
|
|
1091
1110
|
if (value == NULL || !PyDict_Check(value)) {
|
|
1092
1111
|
PyThreadState *tstate = PyThreadState_GET();
|
|
1093
1112
|
|
|
@@ -1102,11 +1121,11 @@ static bool set_name(PyClassObject *klass, PyObject *value) {
|
|
|
1102
1121
|
return false;
|
|
1103
1122
|
}
|
|
1104
1123
|
|
|
1105
|
-
set_slot(&
|
|
1124
|
+
set_slot(&class_object->cl_name, value);
|
|
1106
1125
|
return true;
|
|
1107
1126
|
}
|
|
1108
1127
|
|
|
1109
|
-
static int nuitka_class_setattr(PyClassObject *
|
|
1128
|
+
static int nuitka_class_setattr(PyClassObject *class_object, PyObject *attr_name, PyObject *value) {
|
|
1110
1129
|
char const *sattr_name = PyString_AsString(attr_name);
|
|
1111
1130
|
|
|
1112
1131
|
if (sattr_name[0] == '_' && sattr_name[1] == '_') {
|
|
@@ -1114,72 +1133,72 @@ static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObj
|
|
|
1114
1133
|
|
|
1115
1134
|
if (sattr_name[n - 2] == '_' && sattr_name[n - 1] == '_') {
|
|
1116
1135
|
if (strcmp(sattr_name, "__dict__") == 0) {
|
|
1117
|
-
if (set_dict(
|
|
1136
|
+
if (set_dict(class_object, value) == false) {
|
|
1118
1137
|
return -1;
|
|
1119
1138
|
} else {
|
|
1120
1139
|
return 0;
|
|
1121
1140
|
}
|
|
1122
1141
|
} else if (strcmp(sattr_name, "__bases__") == 0) {
|
|
1123
|
-
if (set_bases(
|
|
1142
|
+
if (set_bases(class_object, value) == false) {
|
|
1124
1143
|
return -1;
|
|
1125
1144
|
} else {
|
|
1126
1145
|
return 0;
|
|
1127
1146
|
}
|
|
1128
1147
|
} else if (strcmp(sattr_name, "__name__") == 0) {
|
|
1129
|
-
if (set_name(
|
|
1148
|
+
if (set_name(class_object, value) == false) {
|
|
1130
1149
|
return -1;
|
|
1131
1150
|
} else {
|
|
1132
1151
|
return 0;
|
|
1133
1152
|
}
|
|
1134
1153
|
} else if (strcmp(sattr_name, "__getattr__") == 0) {
|
|
1135
|
-
set_slot(&
|
|
1154
|
+
set_slot(&class_object->cl_getattr, value);
|
|
1136
1155
|
} else if (strcmp(sattr_name, "__setattr__") == 0) {
|
|
1137
|
-
set_slot(&
|
|
1156
|
+
set_slot(&class_object->cl_setattr, value);
|
|
1138
1157
|
} else if (strcmp(sattr_name, "__delattr__") == 0) {
|
|
1139
|
-
set_slot(&
|
|
1158
|
+
set_slot(&class_object->cl_delattr, value);
|
|
1140
1159
|
}
|
|
1141
1160
|
}
|
|
1142
1161
|
}
|
|
1143
1162
|
|
|
1144
1163
|
if (value == NULL) {
|
|
1145
|
-
int status = DICT_REMOVE_ITEM(
|
|
1164
|
+
int status = DICT_REMOVE_ITEM(class_object->cl_dict, attr_name);
|
|
1146
1165
|
|
|
1147
1166
|
if (status < 0) {
|
|
1148
|
-
PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'",
|
|
1149
|
-
sattr_name);
|
|
1167
|
+
PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'",
|
|
1168
|
+
PyString_AS_STRING(class_object->cl_name), sattr_name);
|
|
1150
1169
|
}
|
|
1151
1170
|
|
|
1152
1171
|
return status;
|
|
1153
1172
|
} else {
|
|
1154
|
-
return DICT_SET_ITEM(
|
|
1173
|
+
return DICT_SET_ITEM(class_object->cl_dict, attr_name, value) ? 0 : -1;
|
|
1155
1174
|
}
|
|
1156
1175
|
}
|
|
1157
1176
|
|
|
1158
|
-
static PyObject *nuitka_class_getattr(PyClassObject *
|
|
1177
|
+
static PyObject *nuitka_class_getattr(PyClassObject *class_object, PyObject *attr_name) {
|
|
1159
1178
|
char const *sattr_name = PyString_AsString(attr_name);
|
|
1160
1179
|
|
|
1161
1180
|
if (sattr_name[0] == '_' && sattr_name[1] == '_') {
|
|
1162
1181
|
if (strcmp(sattr_name, "__dict__") == 0) {
|
|
1163
|
-
Py_INCREF(
|
|
1164
|
-
return
|
|
1182
|
+
Py_INCREF(class_object->cl_dict);
|
|
1183
|
+
return class_object->cl_dict;
|
|
1165
1184
|
} else if (strcmp(sattr_name, "__bases__") == 0) {
|
|
1166
|
-
Py_INCREF(
|
|
1167
|
-
return
|
|
1185
|
+
Py_INCREF(class_object->cl_bases);
|
|
1186
|
+
return class_object->cl_bases;
|
|
1168
1187
|
} else if (strcmp(sattr_name, "__name__") == 0) {
|
|
1169
|
-
if (
|
|
1170
|
-
|
|
1188
|
+
if (class_object->cl_name == NULL) {
|
|
1189
|
+
Py_INCREF_IMMORTAL(Py_None);
|
|
1171
1190
|
return Py_None;
|
|
1172
1191
|
} else {
|
|
1173
|
-
Py_INCREF(
|
|
1174
|
-
return
|
|
1192
|
+
Py_INCREF(class_object->cl_name);
|
|
1193
|
+
return class_object->cl_name;
|
|
1175
1194
|
}
|
|
1176
1195
|
}
|
|
1177
1196
|
}
|
|
1178
1197
|
|
|
1179
|
-
PyObject *value = FIND_ATTRIBUTE_IN_CLASS(
|
|
1198
|
+
PyObject *value = FIND_ATTRIBUTE_IN_CLASS(class_object, attr_name);
|
|
1180
1199
|
|
|
1181
1200
|
if (unlikely(value == NULL)) {
|
|
1182
|
-
PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(
|
|
1201
|
+
PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(class_object->cl_name),
|
|
1183
1202
|
sattr_name);
|
|
1184
1203
|
return NULL;
|
|
1185
1204
|
}
|
|
@@ -1192,7 +1211,7 @@ static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name)
|
|
|
1192
1211
|
Py_INCREF(value);
|
|
1193
1212
|
return value;
|
|
1194
1213
|
} else {
|
|
1195
|
-
return tp_descr_get(value, (PyObject *)NULL, (PyObject *)
|
|
1214
|
+
return tp_descr_get(value, (PyObject *)NULL, (PyObject *)class_object);
|
|
1196
1215
|
}
|
|
1197
1216
|
}
|
|
1198
1217
|
|
|
@@ -1269,7 +1288,7 @@ static PyObject *QUICK_ITERATOR_NEXT(PyThreadState *tstate, struct Nuitka_QuickI
|
|
|
1269
1288
|
|
|
1270
1289
|
switch (qiter->iterator_mode) {
|
|
1271
1290
|
case ITERATOR_GENERIC:
|
|
1272
|
-
result =
|
|
1291
|
+
result = ITERATOR_NEXT_ITERATOR(qiter->iterator_data.iter);
|
|
1273
1292
|
|
|
1274
1293
|
if (result == NULL) {
|
|
1275
1294
|
Py_DECREF(qiter->iterator_data.iter);
|
|
@@ -1341,11 +1360,7 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
|
|
|
1341
1360
|
item = QUICK_ITERATOR_NEXT(tstate, &qiter, &finished);
|
|
1342
1361
|
|
|
1343
1362
|
if (finished) {
|
|
1344
|
-
|
|
1345
|
-
return PyInt_FromLong(int_result);
|
|
1346
|
-
#else
|
|
1347
|
-
return PyLong_FromLong(int_result);
|
|
1348
|
-
#endif
|
|
1363
|
+
return Nuitka_PyInt_FromLong(int_result);
|
|
1349
1364
|
} else if (item == NULL) {
|
|
1350
1365
|
return NULL;
|
|
1351
1366
|
}
|
|
@@ -1389,7 +1404,7 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
|
|
|
1389
1404
|
#endif
|
|
1390
1405
|
|
|
1391
1406
|
if (item == Py_False) {
|
|
1392
|
-
|
|
1407
|
+
Py_DECREF_IMMORTAL(item);
|
|
1393
1408
|
continue;
|
|
1394
1409
|
}
|
|
1395
1410
|
|
|
@@ -1409,12 +1424,8 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
|
|
|
1409
1424
|
break;
|
|
1410
1425
|
}
|
|
1411
1426
|
|
|
1412
|
-
/* Switch over to objects, and redo last step. */
|
|
1413
|
-
|
|
1414
|
-
result = PyInt_FromLong(int_result);
|
|
1415
|
-
#else
|
|
1416
|
-
result = PyLong_FromLong(int_result);
|
|
1417
|
-
#endif
|
|
1427
|
+
/* Switch over to objects, and redo last step. */
|
|
1428
|
+
result = Nuitka_PyInt_FromLong(int_result);
|
|
1418
1429
|
CHECK_OBJECT(result);
|
|
1419
1430
|
|
|
1420
1431
|
PyObject *temp = PyNumber_Add(result, item);
|
|
@@ -1466,9 +1477,9 @@ PyObject *BUILTIN_SUM2(PyThreadState *tstate, PyObject *sequence, PyObject *star
|
|
|
1466
1477
|
CHECK_OBJECT(sequence);
|
|
1467
1478
|
CHECK_OBJECT(start);
|
|
1468
1479
|
|
|
1469
|
-
PyObject *pos_args = MAKE_TUPLE2(sequence, start);
|
|
1480
|
+
PyObject *pos_args = MAKE_TUPLE2(tstate, sequence, start);
|
|
1470
1481
|
|
|
1471
|
-
PyObject *result =
|
|
1482
|
+
PyObject *result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, NUITKA_ACCESS_BUILTIN(sum), pos_args);
|
|
1472
1483
|
|
|
1473
1484
|
Py_DECREF(pos_args);
|
|
1474
1485
|
|
|
@@ -1709,8 +1720,8 @@ char const *getBinaryDirectoryHostEncoded(bool resolve_symlinks) {
|
|
|
1709
1720
|
|
|
1710
1721
|
#endif
|
|
1711
1722
|
|
|
1712
|
-
#ifdef
|
|
1713
|
-
|
|
1723
|
+
#ifdef _NUITKA_EXE
|
|
1724
|
+
PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
|
|
1714
1725
|
static PyObject *binary_filename = NULL;
|
|
1715
1726
|
static PyObject *binary_filename_resolved = NULL;
|
|
1716
1727
|
|
|
@@ -1753,7 +1764,7 @@ static PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
|
|
|
1753
1764
|
}
|
|
1754
1765
|
#endif
|
|
1755
1766
|
|
|
1756
|
-
|
|
1767
|
+
PyObject *getBinaryDirectoryObject(bool resolve_symlinks) {
|
|
1757
1768
|
static PyObject *binary_directory = NULL;
|
|
1758
1769
|
static PyObject *binary_directory_resolved = NULL;
|
|
1759
1770
|
|
|
@@ -1808,7 +1819,7 @@ PyObject *getStandaloneSysExecutablePath(PyObject *basename) {
|
|
|
1808
1819
|
#else
|
|
1809
1820
|
|
|
1810
1821
|
#if defined(_WIN32)
|
|
1811
|
-
|
|
1822
|
+
// Small helper function to get current DLL handle, spell-checker: ignore lpcstr
|
|
1812
1823
|
static HMODULE getDllModuleHandle(void) {
|
|
1813
1824
|
static HMODULE hm = NULL;
|
|
1814
1825
|
|
|
@@ -1824,58 +1835,127 @@ static HMODULE getDllModuleHandle(void) {
|
|
|
1824
1835
|
}
|
|
1825
1836
|
#endif
|
|
1826
1837
|
|
|
1838
|
+
filename_char_t const *getDllDirectory(void) {
|
|
1827
1839
|
#if defined(_WIN32)
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
char *last_slash = NULL;
|
|
1840
|
+
static WCHAR path[MAXPATHLEN + 1];
|
|
1841
|
+
path[0] = 0;
|
|
1831
1842
|
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
last_slash = path;
|
|
1835
|
-
}
|
|
1843
|
+
int res = GetModuleFileNameW(getDllModuleHandle(), path, MAXPATHLEN);
|
|
1844
|
+
assert(res != 0);
|
|
1836
1845
|
|
|
1837
|
-
|
|
1846
|
+
stripFilenameW(path);
|
|
1847
|
+
|
|
1848
|
+
return path;
|
|
1849
|
+
#else
|
|
1850
|
+
Dl_info where;
|
|
1851
|
+
|
|
1852
|
+
{
|
|
1853
|
+
NUITKA_MAY_BE_UNUSED int res = dladdr((void *)getDllDirectory, &where);
|
|
1854
|
+
assert(res != 0);
|
|
1838
1855
|
}
|
|
1839
1856
|
|
|
1840
|
-
|
|
1841
|
-
|
|
1857
|
+
return dirname((char *)where.dli_fname);
|
|
1858
|
+
#endif
|
|
1859
|
+
}
|
|
1860
|
+
static PyObject *getDllDirectoryObject(void) {
|
|
1861
|
+
static PyObject *dll_directory = NULL;
|
|
1862
|
+
|
|
1863
|
+
if (dll_directory == NULL) {
|
|
1864
|
+
filename_char_t const *dll_directory_filename = getDllDirectory();
|
|
1865
|
+
|
|
1866
|
+
dll_directory = Nuitka_String_FromFilename(dll_directory_filename);
|
|
1867
|
+
|
|
1868
|
+
#if PYTHON_VERSION < 0x300
|
|
1869
|
+
// Avoid unnecessary unicode values.
|
|
1870
|
+
PyObject *decoded_dll_directory = PyObject_Str(dll_directory);
|
|
1871
|
+
|
|
1872
|
+
if (decoded_dll_directory == NULL) {
|
|
1873
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
1874
|
+
DROP_ERROR_OCCURRED(tstate);
|
|
1875
|
+
} else {
|
|
1876
|
+
Py_DECREF(dll_directory);
|
|
1877
|
+
dll_directory = decoded_dll_directory;
|
|
1878
|
+
}
|
|
1879
|
+
#endif
|
|
1842
1880
|
}
|
|
1881
|
+
|
|
1882
|
+
CHECK_OBJECT(dll_directory);
|
|
1883
|
+
|
|
1884
|
+
return dll_directory;
|
|
1843
1885
|
}
|
|
1844
1886
|
#endif
|
|
1845
1887
|
|
|
1846
|
-
|
|
1888
|
+
#if defined(_NUITKA_MODULE)
|
|
1889
|
+
static filename_char_t const *getDllFilename(void) {
|
|
1847
1890
|
#if defined(_WIN32)
|
|
1848
|
-
static
|
|
1849
|
-
path[0] =
|
|
1850
|
-
|
|
1851
|
-
#if PYTHON_VERSION >= 0x300
|
|
1852
|
-
WCHAR path2[MAXPATHLEN + 1];
|
|
1853
|
-
path2[0] = 0;
|
|
1891
|
+
static WCHAR path[MAXPATHLEN + 1];
|
|
1892
|
+
path[0] = 0;
|
|
1854
1893
|
|
|
1855
|
-
int res = GetModuleFileNameW(getDllModuleHandle(),
|
|
1894
|
+
int res = GetModuleFileNameW(getDllModuleHandle(), path, MAXPATHLEN);
|
|
1856
1895
|
assert(res != 0);
|
|
1857
1896
|
|
|
1858
|
-
|
|
1859
|
-
assert(res2 != 0);
|
|
1897
|
+
return path;
|
|
1860
1898
|
#else
|
|
1861
|
-
|
|
1862
|
-
|
|
1899
|
+
Dl_info where;
|
|
1900
|
+
|
|
1901
|
+
{
|
|
1902
|
+
NUITKA_MAY_BE_UNUSED int res = dladdr((void *)getDllDirectory, &where);
|
|
1903
|
+
assert(res != 0);
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
return where.dli_fname;
|
|
1863
1907
|
#endif
|
|
1908
|
+
}
|
|
1864
1909
|
|
|
1865
|
-
|
|
1910
|
+
PyObject *getDllFilenameObject(void) {
|
|
1911
|
+
static PyObject *dll_filename = NULL;
|
|
1866
1912
|
|
|
1867
|
-
|
|
1913
|
+
if (dll_filename == NULL) {
|
|
1914
|
+
filename_char_t const *dll_filename_str = getDllFilename();
|
|
1868
1915
|
|
|
1869
|
-
|
|
1870
|
-
Dl_info where;
|
|
1871
|
-
int res = dladdr((void *)getDllDirectory, &where);
|
|
1872
|
-
assert(res != 0);
|
|
1916
|
+
dll_filename = Nuitka_String_FromFilename(dll_filename_str);
|
|
1873
1917
|
|
|
1874
|
-
|
|
1918
|
+
#if PYTHON_VERSION < 0x300
|
|
1919
|
+
// Avoid unnecessary unicode values.
|
|
1920
|
+
PyObject *decoded_dll_filename = PyObject_Str(dll_filename);
|
|
1921
|
+
|
|
1922
|
+
if (decoded_dll_filename == NULL) {
|
|
1923
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
1924
|
+
DROP_ERROR_OCCURRED(tstate);
|
|
1925
|
+
} else {
|
|
1926
|
+
Py_DECREF(dll_filename);
|
|
1927
|
+
dll_filename = decoded_dll_filename;
|
|
1928
|
+
}
|
|
1875
1929
|
#endif
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
CHECK_OBJECT(dll_filename);
|
|
1933
|
+
|
|
1934
|
+
return dll_filename;
|
|
1876
1935
|
}
|
|
1877
1936
|
#endif
|
|
1878
1937
|
|
|
1938
|
+
PyObject *getContainingDirectoryObject(bool resolve_symlinks) {
|
|
1939
|
+
#if defined(_NUITKA_EXE)
|
|
1940
|
+
#if defined(_NUITKA_ONEFILE_MODE)
|
|
1941
|
+
environment_char_t const *onefile_binary = getEnvironmentVariable("NUITKA_ONEFILE_BINARY");
|
|
1942
|
+
if (onefile_binary != NULL) {
|
|
1943
|
+
PyObject *result = Nuitka_String_FromFilename(onefile_binary);
|
|
1944
|
+
unsetEnvironmentVariable("NUITKA_ONEFILE_BINARY");
|
|
1945
|
+
|
|
1946
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
1947
|
+
return OS_PATH_DIRNAME(tstate, result);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
return getBinaryDirectoryObject(resolve_symlinks);
|
|
1951
|
+
#else
|
|
1952
|
+
return getBinaryDirectoryObject(resolve_symlinks);
|
|
1953
|
+
#endif
|
|
1954
|
+
#else
|
|
1955
|
+
return getDllDirectoryObject();
|
|
1956
|
+
#endif
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1879
1959
|
static void _initDeepCopy(void);
|
|
1880
1960
|
|
|
1881
1961
|
void _initBuiltinModule(void) {
|
|
@@ -1902,10 +1982,13 @@ void _initBuiltinModule(void) {
|
|
|
1902
1982
|
assert(PyDict_Check(dict_builtin));
|
|
1903
1983
|
|
|
1904
1984
|
#ifdef _NUITKA_STANDALONE
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1985
|
+
{
|
|
1986
|
+
NUITKA_MAY_BE_UNUSED int res =
|
|
1987
|
+
PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_dir", getBinaryDirectoryObject(true));
|
|
1988
|
+
assert(res == 0);
|
|
1989
|
+
PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_exe", getBinaryFilenameObject(true));
|
|
1990
|
+
assert(res == 0);
|
|
1991
|
+
}
|
|
1909
1992
|
#endif
|
|
1910
1993
|
|
|
1911
1994
|
// init Nuitka_BuiltinModule_Type, PyType_Ready won't copy all member from
|
|
@@ -1927,7 +2010,7 @@ void _initBuiltinModule(void) {
|
|
|
1927
2010
|
Nuitka_BuiltinModule_Type.tp_alloc = PyModule_Type.tp_alloc;
|
|
1928
2011
|
Nuitka_BuiltinModule_Type.tp_new = PyModule_Type.tp_new;
|
|
1929
2012
|
Nuitka_BuiltinModule_Type.tp_free = PyModule_Type.tp_free;
|
|
1930
|
-
int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
|
|
2013
|
+
NUITKA_MAY_BE_UNUSED int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
|
|
1931
2014
|
assert(res2 >= 0);
|
|
1932
2015
|
|
|
1933
2016
|
// Replace type of builtin module to take over.
|
|
@@ -1943,11 +2026,7 @@ PyObject *MAKE_RELATIVE_PATH(PyObject *relative) {
|
|
|
1943
2026
|
static PyObject *our_path_object = NULL;
|
|
1944
2027
|
|
|
1945
2028
|
if (our_path_object == NULL) {
|
|
1946
|
-
|
|
1947
|
-
our_path_object = getBinaryDirectoryObject(true);
|
|
1948
|
-
#else
|
|
1949
|
-
our_path_object = Nuitka_String_FromString(getDllDirectory());
|
|
1950
|
-
#endif
|
|
2029
|
+
our_path_object = getContainingDirectoryObject(true);
|
|
1951
2030
|
}
|
|
1952
2031
|
|
|
1953
2032
|
return JOIN_PATH2(our_path_object, relative);
|
|
@@ -1991,7 +2070,9 @@ volatile int _Py_Ticker = _Py_CheckInterval;
|
|
|
1991
2070
|
iternextfunc default_iternext;
|
|
1992
2071
|
|
|
1993
2072
|
void _initSlotIterNext(void) {
|
|
1994
|
-
|
|
2073
|
+
PyThreadState *tstate = PyThreadState_GET();
|
|
2074
|
+
|
|
2075
|
+
PyObject *pos_args = MAKE_TUPLE1(tstate, (PyObject *)&PyBaseObject_Type);
|
|
1995
2076
|
|
|
1996
2077
|
// Note: Not using MAKE_DICT_EMPTY on purpose, this is called early on.
|
|
1997
2078
|
PyObject *kw_args = PyDict_New();
|
|
@@ -2061,6 +2142,8 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
|
|
|
2061
2142
|
#include "HelpersOperationBinaryMatmult.c"
|
|
2062
2143
|
#endif
|
|
2063
2144
|
|
|
2145
|
+
#include "HelpersOperationBinaryDualAdd.c"
|
|
2146
|
+
|
|
2064
2147
|
#include "HelpersOperationInplaceAdd.c"
|
|
2065
2148
|
#include "HelpersOperationInplaceBitand.c"
|
|
2066
2149
|
#include "HelpersOperationInplaceBitor.c"
|
|
@@ -2081,12 +2164,21 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
|
|
|
2081
2164
|
#endif
|
|
2082
2165
|
|
|
2083
2166
|
#include "HelpersComparisonEq.c"
|
|
2084
|
-
#include "HelpersComparisonGe.c"
|
|
2085
|
-
#include "HelpersComparisonGt.c"
|
|
2086
2167
|
#include "HelpersComparisonLe.c"
|
|
2087
2168
|
#include "HelpersComparisonLt.c"
|
|
2169
|
+
|
|
2170
|
+
#include "HelpersComparisonGe.c"
|
|
2171
|
+
#include "HelpersComparisonGt.c"
|
|
2088
2172
|
#include "HelpersComparisonNe.c"
|
|
2089
2173
|
|
|
2174
|
+
#include "HelpersComparisonDualEq.c"
|
|
2175
|
+
#include "HelpersComparisonDualLe.c"
|
|
2176
|
+
#include "HelpersComparisonDualLt.c"
|
|
2177
|
+
|
|
2178
|
+
#include "HelpersComparisonDualGe.c"
|
|
2179
|
+
#include "HelpersComparisonDualGt.c"
|
|
2180
|
+
#include "HelpersComparisonDualNe.c"
|
|
2181
|
+
|
|
2090
2182
|
#include "HelpersChecksumTools.c"
|
|
2091
2183
|
#include "HelpersConstantsBlob.c"
|
|
2092
2184
|
|
|
@@ -2099,3 +2191,28 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
|
|
|
2099
2191
|
#endif
|
|
2100
2192
|
|
|
2101
2193
|
#include "MetaPathBasedLoader.c"
|
|
2194
|
+
|
|
2195
|
+
#ifdef _NUITKA_EXPERIMENTAL_DUMP_C_TRACEBACKS
|
|
2196
|
+
#include "HelpersDumpBacktraces.c"
|
|
2197
|
+
#endif
|
|
2198
|
+
|
|
2199
|
+
#ifdef _NUITKA_INLINE_COPY_HACL
|
|
2200
|
+
#include "Hacl_Hash_SHA2.c"
|
|
2201
|
+
#endif
|
|
2202
|
+
|
|
2203
|
+
#include "HelpersJitSources.c"
|
|
2204
|
+
|
|
2205
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
2206
|
+
// integrates with CPython, but also works on its own.
|
|
2207
|
+
//
|
|
2208
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
2209
|
+
// you may not use this file except in compliance with the License.
|
|
2210
|
+
// You may obtain a copy of the License at
|
|
2211
|
+
//
|
|
2212
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
2213
|
+
//
|
|
2214
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
2215
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
2216
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2217
|
+
// See the License for the specific language governing permissions and
|
|
2218
|
+
// limitations under the License.
|