Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__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.4.8.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
- Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +18 -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 +400 -0
- nuitka/MainControl.py +200 -112
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +368 -175
- nuitka/Options.py +632 -213
- nuitka/OutputDirectories.py +40 -21
- nuitka/PostProcessing.py +73 -50
- nuitka/Progress.py +58 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +106 -19
- nuitka/Serialization.py +68 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +108 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +21 -7
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +202 -140
- nuitka/build/CCompilerVersion.scons +39 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +50 -54
- nuitka/build/SconsCaching.py +93 -90
- nuitka/build/SconsCompilerSettings.py +157 -69
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +154 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +147 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +105 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +18 -18
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
- 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 +91 -53
- 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 +29 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- 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 +593 -190
- 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 -18
- 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 +17 -17
- 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 +24 -22
- 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 +32 -20
- nuitka/build/include/nuitka/helper/iterators.h +17 -17
- 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 +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -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_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 +17 -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 +17 -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 +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +29 -17
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +14 -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 +38 -20
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +128 -46
- nuitka/build/include/nuitka/printing.h +22 -17
- 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 +32 -33
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +27 -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/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 +176 -182
- nuitka/build/static_src/CompiledCellType.c +63 -40
- nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
- nuitka/build/static_src/CompiledCoroutineType.c +196 -203
- nuitka/build/static_src/CompiledFrameType.c +287 -133
- nuitka/build/static_src/CompiledFunctionType.c +389 -95
- nuitka/build/static_src/CompiledGeneratorType.c +376 -252
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
- nuitka/build/static_src/CompiledMethodType.c +83 -71
- nuitka/build/static_src/HelpersAllocator.c +88 -19
- nuitka/build/static_src/HelpersAttributes.c +33 -54
- nuitka/build/static_src/HelpersBuiltin.c +43 -33
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +33 -30
- nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- nuitka/build/static_src/HelpersComparisonEq.c +518 -492
- nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
- nuitka/build/static_src/HelpersComparisonGe.c +513 -497
- nuitka/build/static_src/HelpersComparisonGt.c +512 -496
- nuitka/build/static_src/HelpersComparisonLe.c +513 -497
- nuitka/build/static_src/HelpersComparisonLt.c +512 -496
- nuitka/build/static_src/HelpersComparisonNe.c +520 -492
- nuitka/build/static_src/HelpersConsole.c +96 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +51 -29
- nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
- 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 +161 -50
- nuitka/build/static_src/HelpersFiles.c +37 -17
- 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 +48 -20
- nuitka/build/static_src/HelpersImportHard.c +53 -17
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +140 -50
- 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 +173 -146
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
- nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
- nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
- nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
- nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
- nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
- nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
- nuitka/build/static_src/HelpersProfiling.c +24 -23
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +88 -20
- 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 +234 -37
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +68 -23
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +359 -263
- nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
- nuitka/build/static_src/OnefileBootstrap.c +276 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +19 -17
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +20 -17
- nuitka/code_generation/CallCodes.py +19 -17
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +48 -27
- nuitka/code_generation/CodeHelperSelection.py +19 -17
- nuitka/code_generation/CodeHelpers.py +24 -20
- nuitka/code_generation/CodeObjectCodes.py +34 -24
- nuitka/code_generation/ComparisonCodes.py +38 -20
- nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +152 -26
- nuitka/code_generation/CoroutineCodes.py +19 -17
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +25 -23
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +27 -33
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +27 -18
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +24 -20
- nuitka/code_generation/FunctionCodes.py +24 -21
- nuitka/code_generation/GeneratorCodes.py +23 -20
- nuitka/code_generation/GlobalConstants.py +43 -23
- nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
- 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 +19 -17
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +19 -17
- 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 +43 -25
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +29 -31
- nuitka/code_generation/PackageResourceCodes.py +59 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +19 -17
- nuitka/code_generation/Reports.py +19 -17
- nuitka/code_generation/ReturnCodes.py +19 -17
- 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 +19 -17
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +71 -0
- nuitka/code_generation/VariableCodes.py +26 -22
- nuitka/code_generation/VariableDeclarations.py +20 -17
- nuitka/code_generation/YieldCodes.py +22 -20
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +19 -17
- 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 +19 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
- nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
- nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
- nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -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 +18 -18
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
- 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 +121 -48
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
- 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/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
- 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 +44 -32
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
- 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 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
- 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 +19 -18
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +19 -18
- nuitka/distutils/DistutilCommands.py +34 -23
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +20 -17
- nuitka/finalizations/FinalizeMarkups.py +21 -41
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +48 -28
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +147 -57
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +29 -21
- nuitka/freezer/ImportDetection.py +20 -17
- nuitka/freezer/IncludedDataFiles.py +118 -47
- nuitka/freezer/IncludedEntryPoints.py +102 -38
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +105 -50
- 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 +286 -92
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +131 -47
- nuitka/importing/StandardLibrary.py +46 -28
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +19 -17
- 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 +24 -20
- 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 +68 -19
- 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 +1250 -302
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +21 -23
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +19 -17
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +29 -17
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +54 -32
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +19 -17
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +81 -35
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +21 -19
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +545 -129
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +436 -446
- 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 +45 -43
- nuitka/nodes/NodeMakingHelpers.py +21 -19
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +20 -17
- nuitka/nodes/OsSysNodes.py +66 -18
- nuitka/nodes/OutlineNodes.py +22 -20
- 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 -77
- nuitka/nodes/StatementNodes.py +19 -17
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +26 -24
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +40 -17
- 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 +145 -39
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +40 -17
- nuitka/nodes/shapes/StandardShapes.py +27 -20
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +19 -17
- 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 +610 -109
- nuitka/plugins/Plugins.py +241 -58
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
- 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 +407 -46
- nuitka/plugins/standard/KivyPlugin.py +30 -17
- nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
- 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/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +74 -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 +103 -53
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +94 -30
- 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 +3449 -1299
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
- nuitka/reports/CompilationReportReader.py +67 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +352 -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 +30 -20
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +67 -22
- nuitka/specs/ParameterSpecs.py +56 -41
- 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 +19 -21
- 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 +93 -71
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +31 -27
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +106 -52
- 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 +36 -29
- 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 +22 -25
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
- nuitka/tools/watch/AutoStage.py +144 -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 +176 -147
- nuitka/tree/ComplexCallHelperFunctions.py +80 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +20 -17
- nuitka/tree/ReformulationAssignmentStatements.py +92 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +146 -98
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +40 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +58 -54
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +244 -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 +21 -19
- 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 +84 -19
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +73 -34
- nuitka/utils/FileOperations.py +318 -74
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +118 -24
- nuitka/utils/InstalledPythons.py +80 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +19 -17
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- 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 +115 -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.4.8.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.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
|
/** Providing access to the constants binary blob.
|
|
19
4
|
*
|
|
20
5
|
* There are multiple ways, the constants binary is accessed, and its
|
|
@@ -128,7 +113,7 @@ static PyObject *our_list_richcompare(PyListObject *list1, PyListObject *list2,
|
|
|
128
113
|
result = Py_False;
|
|
129
114
|
}
|
|
130
115
|
|
|
131
|
-
|
|
116
|
+
Py_INCREF_IMMORTAL(result);
|
|
132
117
|
return result;
|
|
133
118
|
}
|
|
134
119
|
|
|
@@ -151,7 +136,7 @@ static PyObject *our_tuple_richcompare(PyTupleObject *tuple1, PyTupleObject *tup
|
|
|
151
136
|
result = Py_False;
|
|
152
137
|
}
|
|
153
138
|
|
|
154
|
-
|
|
139
|
+
Py_INCREF_IMMORTAL(result);
|
|
155
140
|
return result;
|
|
156
141
|
}
|
|
157
142
|
|
|
@@ -196,8 +181,10 @@ static PyObject *our_set_richcompare(PyObject *set1, PyObject *set2, int op) {
|
|
|
196
181
|
// Same sized set, simply check if values are identical. Other reductions should
|
|
197
182
|
// make it identical, or else this won't have the effect intended.
|
|
198
183
|
while (_PySet_Next(set1, &pos1, &key1)) {
|
|
199
|
-
|
|
200
|
-
|
|
184
|
+
{
|
|
185
|
+
NUITKA_MAY_BE_UNUSED int res = _PySet_Next(set2, &pos2, &key2);
|
|
186
|
+
assert(res != 0);
|
|
187
|
+
}
|
|
201
188
|
|
|
202
189
|
if (key1 != key2) {
|
|
203
190
|
result = Py_False;
|
|
@@ -210,8 +197,10 @@ static PyObject *our_set_richcompare(PyObject *set1, PyObject *set2, int op) {
|
|
|
210
197
|
// Same sized dictionary, simply check if values are identical. Other reductions should
|
|
211
198
|
// make it identical, or else this won't have the effect intended.
|
|
212
199
|
while (_PySet_NextEntry(set1, &pos1, &key1, &unused1)) {
|
|
213
|
-
|
|
214
|
-
|
|
200
|
+
{
|
|
201
|
+
NUITKA_MAY_BE_UNUSED int res = _PySet_NextEntry(set2, &pos2, &key2, &unused2);
|
|
202
|
+
assert(res != 0);
|
|
203
|
+
}
|
|
215
204
|
|
|
216
205
|
if (key1 != key2) {
|
|
217
206
|
result = Py_False;
|
|
@@ -221,7 +210,7 @@ static PyObject *our_set_richcompare(PyObject *set1, PyObject *set2, int op) {
|
|
|
221
210
|
#endif
|
|
222
211
|
}
|
|
223
212
|
|
|
224
|
-
|
|
213
|
+
Py_INCREF_IMMORTAL(result);
|
|
225
214
|
return result;
|
|
226
215
|
}
|
|
227
216
|
|
|
@@ -237,7 +226,7 @@ static PyObject *our_float_richcompare(PyFloatObject *a, PyFloatObject *b, int o
|
|
|
237
226
|
result = Py_False;
|
|
238
227
|
}
|
|
239
228
|
|
|
240
|
-
|
|
229
|
+
Py_INCREF_IMMORTAL(result);
|
|
241
230
|
return result;
|
|
242
231
|
}
|
|
243
232
|
|
|
@@ -273,8 +262,10 @@ static PyObject *our_dict_richcompare(PyObject *a, PyObject *b, int op) {
|
|
|
273
262
|
// Other reductions should make it identical, or else this won't have the
|
|
274
263
|
// effect intended.
|
|
275
264
|
while (Nuitka_DictNext(a, &pos1, &key1, &value1)) {
|
|
276
|
-
|
|
277
|
-
|
|
265
|
+
{
|
|
266
|
+
NUITKA_MAY_BE_UNUSED int res = Nuitka_DictNext(b, &pos2, &key2, &value2);
|
|
267
|
+
assert(res != 0);
|
|
268
|
+
}
|
|
278
269
|
|
|
279
270
|
if (key1 != key2 || value1 != value2) {
|
|
280
271
|
result = Py_False;
|
|
@@ -283,7 +274,7 @@ static PyObject *our_dict_richcompare(PyObject *a, PyObject *b, int op) {
|
|
|
283
274
|
}
|
|
284
275
|
}
|
|
285
276
|
|
|
286
|
-
|
|
277
|
+
Py_INCREF_IMMORTAL(result);
|
|
287
278
|
return result;
|
|
288
279
|
}
|
|
289
280
|
|
|
@@ -404,8 +395,8 @@ static int unpackValueInt(unsigned char const **data) {
|
|
|
404
395
|
return size;
|
|
405
396
|
}
|
|
406
397
|
|
|
407
|
-
static
|
|
408
|
-
|
|
398
|
+
static double unpackValueFloat(unsigned char const **data) {
|
|
399
|
+
double size;
|
|
409
400
|
|
|
410
401
|
memcpy(&size, *data, sizeof(size));
|
|
411
402
|
*data += sizeof(size);
|
|
@@ -413,38 +404,32 @@ static long unpackValueLong(unsigned char const **data) {
|
|
|
413
404
|
return size;
|
|
414
405
|
}
|
|
415
406
|
|
|
416
|
-
static
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
memcpy(&size, *data, sizeof(size));
|
|
420
|
-
*data += sizeof(size);
|
|
407
|
+
static unsigned char const *_unpackValueCString(unsigned char const *data) {
|
|
408
|
+
while (*(data++) != 0) {
|
|
409
|
+
}
|
|
421
410
|
|
|
422
|
-
return
|
|
411
|
+
return data;
|
|
423
412
|
}
|
|
424
413
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
*data += sizeof(size);
|
|
414
|
+
// Decoding Variable-length quantity values
|
|
415
|
+
static uint64_t _unpackVariableLength(unsigned char const **data) {
|
|
416
|
+
uint64_t result = 0;
|
|
417
|
+
uint64_t factor = 1;
|
|
430
418
|
|
|
431
|
-
|
|
432
|
-
|
|
419
|
+
while (1) {
|
|
420
|
+
unsigned char value = **data;
|
|
421
|
+
*data += 1;
|
|
433
422
|
|
|
434
|
-
|
|
435
|
-
double size;
|
|
436
|
-
|
|
437
|
-
memcpy(&size, *data, sizeof(size));
|
|
438
|
-
*data += sizeof(size);
|
|
423
|
+
result += (value & 127) * factor;
|
|
439
424
|
|
|
440
|
-
|
|
441
|
-
|
|
425
|
+
if (value < 128) {
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
442
428
|
|
|
443
|
-
|
|
444
|
-
while (*(data++) != 0) {
|
|
429
|
+
factor <<= 7;
|
|
445
430
|
}
|
|
446
431
|
|
|
447
|
-
return
|
|
432
|
+
return result;
|
|
448
433
|
}
|
|
449
434
|
|
|
450
435
|
static PyObject *_unpackAnonValue(unsigned char anon_index) {
|
|
@@ -498,658 +483,678 @@ PyObject *_unpackSpecialValue(unsigned char special_index) {
|
|
|
498
483
|
}
|
|
499
484
|
|
|
500
485
|
static unsigned char const *_unpackBlobConstants(PyThreadState *tstate, PyObject **output, unsigned char const *data,
|
|
501
|
-
int count)
|
|
486
|
+
int count);
|
|
502
487
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
488
|
+
static unsigned char const *_unpackBlobConstant(PyThreadState *tstate, PyObject **output, unsigned char const *data) {
|
|
489
|
+
|
|
490
|
+
// Make sure we discover failures to assign.
|
|
491
|
+
*output = NULL;
|
|
492
|
+
bool is_object;
|
|
507
493
|
|
|
508
|
-
|
|
494
|
+
char c = *((char const *)data++);
|
|
509
495
|
#ifdef _NUITKA_EXPERIMENTAL_DEBUG_CONSTANTS
|
|
510
|
-
|
|
511
|
-
|
|
496
|
+
unsigned char const *data_old = data;
|
|
497
|
+
printf("Type %c for %d of %d:\n", c, _i, count);
|
|
512
498
|
#endif
|
|
513
|
-
|
|
499
|
+
switch (c) {
|
|
514
500
|
|
|
515
|
-
|
|
516
|
-
|
|
501
|
+
case 'p': {
|
|
502
|
+
*output = *(output - 1);
|
|
503
|
+
is_object = true;
|
|
517
504
|
|
|
518
|
-
|
|
519
|
-
|
|
505
|
+
break;
|
|
506
|
+
}
|
|
507
|
+
case 'T': {
|
|
508
|
+
int size = (int)_unpackVariableLength(&data);
|
|
520
509
|
|
|
521
|
-
|
|
510
|
+
PyObject *t = PyTuple_New(size);
|
|
511
|
+
|
|
512
|
+
if (size > 0) {
|
|
513
|
+
data = _unpackBlobConstants(tstate, &PyTuple_GET_ITEM(t, 0), data, size);
|
|
522
514
|
}
|
|
523
|
-
case 'T': {
|
|
524
|
-
// TODO: Use fixed sizes
|
|
525
|
-
// uint32_t size = unpackSizeUint32(&data);
|
|
526
|
-
int size = unpackValueInt(&data);
|
|
527
515
|
|
|
528
|
-
|
|
516
|
+
insertToDictCacheForcedHash(tuple_cache, &t, (hashfunc)our_tuple_hash, (richcmpfunc)our_tuple_richcompare);
|
|
529
517
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
}
|
|
518
|
+
*output = t;
|
|
519
|
+
is_object = true;
|
|
533
520
|
|
|
534
|
-
|
|
521
|
+
break;
|
|
522
|
+
}
|
|
523
|
+
case 'L': {
|
|
524
|
+
int size = (int)_unpackVariableLength(&data);
|
|
535
525
|
|
|
536
|
-
|
|
537
|
-
is_object = true;
|
|
526
|
+
PyObject *l = PyList_New(size);
|
|
538
527
|
|
|
539
|
-
|
|
528
|
+
if (size > 0) {
|
|
529
|
+
data = _unpackBlobConstants(tstate, &PyList_GET_ITEM(l, 0), data, size);
|
|
540
530
|
}
|
|
541
|
-
case 'L': {
|
|
542
|
-
// TODO: Use fixed sizes
|
|
543
|
-
// uint32_t size = unpackSizeUint32(&data);
|
|
544
|
-
int size = unpackValueInt(&data);
|
|
545
531
|
|
|
546
|
-
|
|
532
|
+
insertToDictCacheForcedHash(list_cache, &l, (hashfunc)our_list_hash, (richcmpfunc)our_list_richcompare);
|
|
547
533
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
insertToDictCacheForcedHash(list_cache, &l, (hashfunc)our_list_hash, (richcmpfunc)our_list_richcompare);
|
|
534
|
+
*output = l;
|
|
535
|
+
is_object = true;
|
|
553
536
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
}
|
|
559
|
-
case 'D': {
|
|
560
|
-
// TODO: Use flexible sizes with bias towards small values.
|
|
561
|
-
// uint32_t size = unpackSizeUint32(&data);
|
|
562
|
-
int size = unpackValueInt(&data);
|
|
537
|
+
break;
|
|
538
|
+
}
|
|
539
|
+
case 'D': {
|
|
540
|
+
int size = (int)_unpackVariableLength(&data);
|
|
563
541
|
|
|
564
|
-
|
|
542
|
+
PyObject *d = _PyDict_NewPresized(size);
|
|
565
543
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
544
|
+
if (size > 0) {
|
|
545
|
+
NUITKA_DYNAMIC_ARRAY_DECL(keys, PyObject *, size);
|
|
546
|
+
NUITKA_DYNAMIC_ARRAY_DECL(values, PyObject *, size);
|
|
569
547
|
|
|
570
|
-
|
|
571
|
-
|
|
548
|
+
data = _unpackBlobConstants(tstate, &keys[0], data, size);
|
|
549
|
+
data = _unpackBlobConstants(tstate, &values[0], data, size);
|
|
572
550
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
}
|
|
551
|
+
for (int i = 0; i < size; i++) {
|
|
552
|
+
PyDict_SetItem(d, keys[i], values[i]);
|
|
576
553
|
}
|
|
554
|
+
}
|
|
577
555
|
|
|
578
|
-
|
|
556
|
+
insertToDictCacheForcedHash(dict_cache, &d, (hashfunc)our_dict_hash, (richcmpfunc)our_dict_richcompare);
|
|
579
557
|
|
|
580
|
-
|
|
581
|
-
|
|
558
|
+
*output = d;
|
|
559
|
+
is_object = true;
|
|
582
560
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
561
|
+
break;
|
|
562
|
+
}
|
|
563
|
+
case 'P':
|
|
564
|
+
case 'S': {
|
|
565
|
+
int size = (int)_unpackVariableLength(&data);
|
|
566
|
+
|
|
567
|
+
PyObject *s;
|
|
568
|
+
|
|
569
|
+
if (c == 'S') {
|
|
570
|
+
s = PySet_New(NULL);
|
|
571
|
+
} else {
|
|
572
|
+
if (size == 0) {
|
|
573
|
+
// Get at the frozenset singleton of CPython and use it too. Some things
|
|
574
|
+
// rely on it being a singleton across the board.
|
|
575
|
+
static PyObject *empty_frozenset = NULL;
|
|
576
|
+
|
|
577
|
+
if (empty_frozenset == NULL) {
|
|
578
|
+
empty_frozenset = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, (PyObject *)&PyFrozenSet_Type,
|
|
579
|
+
Nuitka_Bytes_FromStringAndSize("", 0));
|
|
580
|
+
}
|
|
592
581
|
|
|
593
|
-
|
|
594
|
-
s = PySet_New(NULL);
|
|
582
|
+
s = empty_frozenset;
|
|
595
583
|
} else {
|
|
596
|
-
|
|
597
|
-
// Get at the frozenset singleton of CPython and use it too. Some things
|
|
598
|
-
// rely on it being a singleton across the board.
|
|
599
|
-
static PyObject *empty_frozenset = NULL;
|
|
600
|
-
|
|
601
|
-
if (empty_frozenset == NULL) {
|
|
602
|
-
empty_frozenset = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, (PyObject *)&PyFrozenSet_Type,
|
|
603
|
-
Nuitka_Bytes_FromStringAndSize("", 0));
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
s = empty_frozenset;
|
|
607
|
-
} else {
|
|
608
|
-
s = PyFrozenSet_New(NULL);
|
|
609
|
-
}
|
|
584
|
+
s = PyFrozenSet_New(NULL);
|
|
610
585
|
}
|
|
586
|
+
}
|
|
611
587
|
|
|
612
|
-
|
|
613
|
-
|
|
588
|
+
if (size > 0) {
|
|
589
|
+
NUITKA_DYNAMIC_ARRAY_DECL(values, PyObject *, size);
|
|
614
590
|
|
|
615
|
-
|
|
591
|
+
data = _unpackBlobConstants(tstate, &values[0], data, size);
|
|
616
592
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}
|
|
593
|
+
for (int i = 0; i < size; i++) {
|
|
594
|
+
PySet_Add(s, values[i]);
|
|
620
595
|
}
|
|
596
|
+
}
|
|
621
597
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
}
|
|
598
|
+
// sets are cached globally too.
|
|
599
|
+
if (c == 'S') {
|
|
600
|
+
insertToDictCacheForcedHash(set_cache, &s, (hashfunc)our_set_hash, (richcmpfunc)our_set_richcompare);
|
|
601
|
+
} else {
|
|
602
|
+
insertToDictCacheForcedHash(frozenset_cache, &s, (hashfunc)our_set_hash, (richcmpfunc)our_set_richcompare);
|
|
603
|
+
}
|
|
629
604
|
|
|
630
|
-
|
|
631
|
-
|
|
605
|
+
*output = s;
|
|
606
|
+
is_object = true;
|
|
632
607
|
|
|
633
|
-
|
|
634
|
-
|
|
608
|
+
break;
|
|
609
|
+
}
|
|
635
610
|
#if PYTHON_VERSION < 0x300
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
611
|
+
case 'I':
|
|
612
|
+
case 'i': {
|
|
613
|
+
long value = (long)_unpackVariableLength(&data);
|
|
614
|
+
if (c == 'I') {
|
|
615
|
+
value = -value;
|
|
616
|
+
}
|
|
639
617
|
|
|
640
|
-
|
|
618
|
+
PyObject *i = PyInt_FromLong(value);
|
|
641
619
|
|
|
642
|
-
|
|
620
|
+
insertToDictCache(int_cache, &i);
|
|
643
621
|
|
|
644
|
-
|
|
645
|
-
|
|
622
|
+
*output = i;
|
|
623
|
+
is_object = true;
|
|
646
624
|
|
|
647
|
-
|
|
648
|
-
|
|
625
|
+
break;
|
|
626
|
+
}
|
|
649
627
|
#endif
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
628
|
+
case 'l':
|
|
629
|
+
case 'q': {
|
|
630
|
+
// Positive/negative integer value with abs value < 2**31
|
|
631
|
+
uint64_t value = _unpackVariableLength(&data);
|
|
653
632
|
|
|
654
|
-
|
|
633
|
+
PyObject *l = Nuitka_LongFromCLong((c == 'l') ? ((long)value) : (-(long)value));
|
|
634
|
+
assert(l != NULL);
|
|
655
635
|
|
|
656
|
-
|
|
636
|
+
// Avoid the long cache, won't do anything useful for small ints
|
|
657
637
|
#if PYTHON_VERSION >= 0x300
|
|
658
|
-
|
|
638
|
+
if (value < NUITKA_STATIC_SMALLINT_VALUE_MIN || value >= NUITKA_STATIC_SMALLINT_VALUE_MAX)
|
|
659
639
|
#endif
|
|
660
|
-
|
|
661
|
-
insertToDictCache(long_cache, &l);
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
*output = l;
|
|
665
|
-
is_object = true;
|
|
666
|
-
|
|
667
|
-
break;
|
|
668
|
-
}
|
|
669
|
-
case 'q': {
|
|
670
|
-
long long value = unpackValueLongLong(&data);
|
|
671
|
-
|
|
672
|
-
PyObject *l = PyLong_FromLongLong(value);
|
|
673
|
-
|
|
640
|
+
{
|
|
674
641
|
insertToDictCache(long_cache, &l);
|
|
642
|
+
}
|
|
675
643
|
|
|
676
|
-
|
|
677
|
-
|
|
644
|
+
*output = l;
|
|
645
|
+
is_object = true;
|
|
678
646
|
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
647
|
+
break;
|
|
648
|
+
}
|
|
649
|
+
case 'G':
|
|
650
|
+
case 'g': {
|
|
651
|
+
PyObject *result = PyLong_FromLong(0);
|
|
683
652
|
|
|
684
|
-
|
|
685
|
-
int size = unpackValueInt(&data);
|
|
653
|
+
int size = (int)_unpackVariableLength(&data);
|
|
686
654
|
|
|
687
|
-
|
|
655
|
+
PyObject *shift = PyLong_FromLong(31);
|
|
688
656
|
|
|
689
|
-
|
|
690
|
-
|
|
657
|
+
for (int i = 0; i < size; i++) {
|
|
658
|
+
result = PyNumber_InPlaceLshift(result, shift);
|
|
691
659
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
660
|
+
uint64_t value = _unpackVariableLength(&data);
|
|
661
|
+
PyObject *part = Nuitka_LongFromCLong((long)value);
|
|
662
|
+
assert(part != NULL);
|
|
663
|
+
result = PyNumber_InPlaceAdd(result, part);
|
|
664
|
+
Py_DECREF(part);
|
|
665
|
+
}
|
|
697
666
|
|
|
698
|
-
|
|
667
|
+
Py_DECREF(shift);
|
|
699
668
|
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
result = PyNumber_InPlaceMultiply(result, neg);
|
|
704
|
-
Py_DECREF(neg);
|
|
705
|
-
}
|
|
669
|
+
if (c == 'G') {
|
|
670
|
+
Nuitka_LongSetSignNegative(result);
|
|
671
|
+
}
|
|
706
672
|
|
|
707
|
-
|
|
673
|
+
insertToDictCache(long_cache, &result);
|
|
708
674
|
|
|
709
|
-
|
|
710
|
-
|
|
675
|
+
*output = result;
|
|
676
|
+
is_object = true;
|
|
711
677
|
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
678
|
+
break;
|
|
679
|
+
}
|
|
680
|
+
case 'f': {
|
|
681
|
+
double value = unpackValueFloat(&data);
|
|
716
682
|
|
|
717
|
-
|
|
683
|
+
PyObject *f = PyFloat_FromDouble(value);
|
|
718
684
|
|
|
719
|
-
|
|
720
|
-
|
|
685
|
+
// Floats are cached globally too.
|
|
686
|
+
insertToDictCacheForcedHash(float_cache, &f, NULL, (richcmpfunc)our_float_richcompare);
|
|
721
687
|
|
|
722
|
-
|
|
723
|
-
|
|
688
|
+
*output = f;
|
|
689
|
+
is_object = true;
|
|
724
690
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
691
|
+
break;
|
|
692
|
+
}
|
|
693
|
+
case 'j': {
|
|
694
|
+
double real = unpackValueFloat(&data);
|
|
695
|
+
double imag = unpackValueFloat(&data);
|
|
730
696
|
|
|
731
|
-
|
|
732
|
-
|
|
697
|
+
*output = PyComplex_FromDoubles(real, imag);
|
|
698
|
+
is_object = true;
|
|
733
699
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
700
|
+
break;
|
|
701
|
+
}
|
|
702
|
+
case 'J': {
|
|
703
|
+
PyObject *parts[2];
|
|
738
704
|
|
|
739
|
-
|
|
740
|
-
|
|
705
|
+
// Complex via float is done for ones that are 0, nan, float.
|
|
706
|
+
data = _unpackBlobConstants(tstate, &parts[0], data, 2);
|
|
741
707
|
|
|
742
|
-
|
|
743
|
-
|
|
708
|
+
*output = BUILTIN_COMPLEX2(tstate, parts[0], parts[1]);
|
|
709
|
+
is_object = true;
|
|
744
710
|
|
|
745
|
-
|
|
746
|
-
|
|
711
|
+
break;
|
|
712
|
+
}
|
|
747
713
|
#if PYTHON_VERSION < 0x300
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
714
|
+
case 'a':
|
|
715
|
+
case 'c': {
|
|
716
|
+
// Python2 str, potentially attribute, zero terminated.
|
|
717
|
+
size_t size = strlen((const char *)data);
|
|
752
718
|
|
|
753
|
-
|
|
754
|
-
|
|
719
|
+
PyObject *s = PyString_FromStringAndSize((const char *)data, size);
|
|
720
|
+
CHECK_OBJECT(s);
|
|
755
721
|
|
|
756
|
-
|
|
722
|
+
data += size + 1;
|
|
757
723
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
724
|
+
if (c == 'a') {
|
|
725
|
+
PyString_InternInPlace(&s);
|
|
726
|
+
}
|
|
761
727
|
|
|
762
|
-
|
|
763
|
-
|
|
728
|
+
*output = s;
|
|
729
|
+
is_object = true;
|
|
764
730
|
|
|
765
|
-
|
|
766
|
-
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
767
733
|
#else
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
734
|
+
case 'c': {
|
|
735
|
+
// Python3 bytes, zero terminated.
|
|
736
|
+
size_t size = strlen((const char *)data);
|
|
771
737
|
|
|
772
|
-
|
|
773
|
-
|
|
738
|
+
PyObject *b = Nuitka_Bytes_FromStringAndSize((const char *)data, size);
|
|
739
|
+
CHECK_OBJECT(b);
|
|
774
740
|
|
|
775
|
-
|
|
741
|
+
data += size + 1;
|
|
776
742
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
743
|
+
// Empty bytes value is here as well.
|
|
744
|
+
if (size > 1) {
|
|
745
|
+
insertToDictCache(bytes_cache, &b);
|
|
746
|
+
}
|
|
781
747
|
|
|
782
|
-
|
|
783
|
-
|
|
748
|
+
*output = b;
|
|
749
|
+
is_object = true;
|
|
784
750
|
|
|
785
|
-
|
|
786
|
-
|
|
751
|
+
break;
|
|
752
|
+
}
|
|
787
753
|
#endif
|
|
788
|
-
|
|
789
|
-
|
|
754
|
+
case 'd': {
|
|
755
|
+
// Python2 str length 1 str, potentially attribute, or Python3 single byte
|
|
790
756
|
|
|
791
757
|
#if PYTHON_VERSION < 0x300
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
758
|
+
PyObject *s = PyString_FromStringAndSize((const char *)data, 1);
|
|
759
|
+
data += 1;
|
|
760
|
+
*output = s;
|
|
795
761
|
#else
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
762
|
+
PyObject *b = Nuitka_Bytes_FromStringAndSize((const char *)data, 1);
|
|
763
|
+
data += 1;
|
|
764
|
+
*output = b;
|
|
799
765
|
#endif
|
|
800
766
|
|
|
801
|
-
|
|
767
|
+
is_object = true;
|
|
802
768
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
769
|
+
break;
|
|
770
|
+
}
|
|
771
|
+
case 'w': {
|
|
772
|
+
// Python2 unicode, Python3 str length 1, potentially attribute in Python3
|
|
807
773
|
|
|
808
|
-
|
|
809
|
-
|
|
774
|
+
PyObject *u = PyUnicode_FromStringAndSize((const char *)data, 1);
|
|
775
|
+
data += 1;
|
|
810
776
|
|
|
811
777
|
#if PYTHON_VERSION >= 0x300
|
|
812
|
-
|
|
778
|
+
PyUnicode_InternInPlace(&u);
|
|
813
779
|
#else
|
|
814
|
-
|
|
780
|
+
insertToDictCache(unicode_cache, &u);
|
|
815
781
|
#endif
|
|
816
782
|
|
|
817
|
-
|
|
818
|
-
|
|
783
|
+
*output = u;
|
|
784
|
+
is_object = true;
|
|
819
785
|
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
786
|
+
break;
|
|
787
|
+
}
|
|
788
|
+
case 'b': {
|
|
789
|
+
// Python2 str or Python3 bytes, length indicated.
|
|
790
|
+
int size = (int)_unpackVariableLength(&data);
|
|
791
|
+
assert(size > 1);
|
|
826
792
|
|
|
827
|
-
|
|
828
|
-
|
|
793
|
+
PyObject *b = Nuitka_Bytes_FromStringAndSize((const char *)data, size);
|
|
794
|
+
CHECK_OBJECT(b);
|
|
829
795
|
|
|
830
|
-
|
|
796
|
+
data += size;
|
|
831
797
|
|
|
832
798
|
#if PYTHON_VERSION >= 0x300
|
|
833
|
-
|
|
799
|
+
insertToDictCache(bytes_cache, &b);
|
|
834
800
|
#endif
|
|
835
801
|
|
|
836
|
-
|
|
837
|
-
|
|
802
|
+
*output = b;
|
|
803
|
+
is_object = true;
|
|
838
804
|
|
|
839
|
-
|
|
840
|
-
|
|
805
|
+
break;
|
|
806
|
+
}
|
|
841
807
|
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
// termination.
|
|
845
|
-
int size = unpackValueInt(&data);
|
|
808
|
+
case 'B': {
|
|
809
|
+
int size = (int)_unpackVariableLength(&data);
|
|
846
810
|
|
|
847
|
-
|
|
848
|
-
|
|
811
|
+
PyObject *b = PyByteArray_FromStringAndSize((const char *)data, size);
|
|
812
|
+
data += size;
|
|
849
813
|
|
|
850
|
-
|
|
851
|
-
|
|
814
|
+
*output = b;
|
|
815
|
+
is_object = true;
|
|
852
816
|
|
|
853
|
-
|
|
854
|
-
|
|
817
|
+
break;
|
|
818
|
+
}
|
|
855
819
|
#if PYTHON_VERSION >= 0x300
|
|
856
|
-
|
|
820
|
+
case 'a': // Python3 attributes
|
|
857
821
|
#endif
|
|
858
|
-
|
|
859
|
-
|
|
822
|
+
case 'u': { // Python2 unicode, Python3 str, zero terminated.
|
|
823
|
+
size_t size = strlen((const char *)data);
|
|
860
824
|
#if PYTHON_VERSION < 0x300
|
|
861
|
-
|
|
825
|
+
PyObject *u = PyUnicode_FromStringAndSize((const char *)data, size);
|
|
862
826
|
#else
|
|
863
|
-
|
|
827
|
+
PyObject *u = PyUnicode_DecodeUTF8((const char *)data, size, "surrogatepass");
|
|
864
828
|
#endif
|
|
865
|
-
|
|
829
|
+
data += size + 1;
|
|
866
830
|
|
|
867
831
|
#if PYTHON_VERSION >= 0x300
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
832
|
+
if (c == 'a') {
|
|
833
|
+
PyUnicode_InternInPlace(&u);
|
|
834
|
+
}
|
|
871
835
|
#else
|
|
872
|
-
|
|
836
|
+
insertToDictCache(unicode_cache, &u);
|
|
873
837
|
#endif
|
|
874
838
|
|
|
875
|
-
|
|
876
|
-
|
|
839
|
+
*output = u;
|
|
840
|
+
is_object = true;
|
|
877
841
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
842
|
+
break;
|
|
843
|
+
}
|
|
844
|
+
case 'v': {
|
|
845
|
+
int size = (int)_unpackVariableLength(&data);
|
|
882
846
|
|
|
883
847
|
#if PYTHON_VERSION < 0x300
|
|
884
|
-
|
|
848
|
+
PyObject *u = PyUnicode_FromStringAndSize((const char *)data, size);
|
|
885
849
|
#else
|
|
886
|
-
|
|
850
|
+
PyObject *u = PyUnicode_DecodeUTF8((const char *)data, size, "surrogatepass");
|
|
887
851
|
#endif
|
|
888
|
-
|
|
852
|
+
data += size;
|
|
889
853
|
|
|
890
854
|
#if PYTHON_VERSION < 0x300
|
|
891
|
-
|
|
855
|
+
insertToDictCache(unicode_cache, &u);
|
|
892
856
|
#endif
|
|
893
857
|
|
|
894
|
-
|
|
895
|
-
|
|
858
|
+
*output = u;
|
|
859
|
+
is_object = true;
|
|
896
860
|
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
861
|
+
break;
|
|
862
|
+
}
|
|
863
|
+
case 'n': {
|
|
864
|
+
*output = Py_None;
|
|
865
|
+
is_object = true;
|
|
902
866
|
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
867
|
+
break;
|
|
868
|
+
}
|
|
869
|
+
case 't': {
|
|
870
|
+
*output = Py_True;
|
|
871
|
+
is_object = true;
|
|
908
872
|
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
case 'F': {
|
|
876
|
+
*output = Py_False;
|
|
877
|
+
is_object = true;
|
|
914
878
|
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
879
|
+
break;
|
|
880
|
+
}
|
|
881
|
+
case ':': {
|
|
882
|
+
// Slice object
|
|
883
|
+
PyObject *items[3];
|
|
884
|
+
data = _unpackBlobConstants(tstate, &items[0], data, 3);
|
|
921
885
|
|
|
922
|
-
|
|
886
|
+
PyObject *s = MAKE_SLICE_OBJECT3(tstate, items[0], items[1], items[2]);
|
|
923
887
|
|
|
924
|
-
|
|
925
|
-
|
|
888
|
+
*output = s;
|
|
889
|
+
is_object = true;
|
|
926
890
|
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
891
|
+
break;
|
|
892
|
+
}
|
|
893
|
+
case ';': {
|
|
894
|
+
// (x)range objects
|
|
895
|
+
PyObject *items[3];
|
|
896
|
+
data = _unpackBlobConstants(tstate, &items[0], data, 3);
|
|
931
897
|
#if PYTHON_VERSION < 0x300
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
898
|
+
assert(PyInt_CheckExact(items[0]));
|
|
899
|
+
assert(PyInt_CheckExact(items[1]));
|
|
900
|
+
assert(PyInt_CheckExact(items[2]));
|
|
935
901
|
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
data = _unpackBlobConstants(tstate, &items[0], data, 3);
|
|
902
|
+
long start = PyInt_AS_LONG(items[0]);
|
|
903
|
+
long stop = PyInt_AS_LONG(items[1]);
|
|
904
|
+
long step = PyInt_AS_LONG(items[2]);
|
|
940
905
|
|
|
941
|
-
|
|
906
|
+
PyObject *s = MAKE_XRANGE(tstate, start, stop, step);
|
|
907
|
+
#else
|
|
908
|
+
PyObject *s = BUILTIN_XRANGE3(tstate, items[0], items[1], items[2]);
|
|
942
909
|
#endif
|
|
943
|
-
|
|
944
|
-
|
|
910
|
+
*output = s;
|
|
911
|
+
is_object = true;
|
|
945
912
|
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
*output = _unpackAnonValue(anon_index);
|
|
953
|
-
is_object = true;
|
|
913
|
+
break;
|
|
914
|
+
}
|
|
915
|
+
case 'M': {
|
|
916
|
+
// Anonymous builtin by table index value.
|
|
917
|
+
unsigned char anon_index = *data++;
|
|
954
918
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
case 'Q': {
|
|
958
|
-
// Anonymous builtin by table index value.
|
|
959
|
-
unsigned char special_index = *data++;
|
|
919
|
+
*output = _unpackAnonValue(anon_index);
|
|
920
|
+
is_object = true;
|
|
960
921
|
|
|
961
|
-
|
|
962
|
-
|
|
922
|
+
break;
|
|
923
|
+
}
|
|
924
|
+
case 'Q': {
|
|
925
|
+
// Anonymous builtin by table index value.
|
|
926
|
+
unsigned char special_index = *data++;
|
|
963
927
|
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
case 'O': {
|
|
967
|
-
// Builtin by name. TODO: Define number table shared by C and Python
|
|
968
|
-
// serialization to avoid using strings here.
|
|
969
|
-
char const *builtin_name = (char const *)data;
|
|
970
|
-
data = _unpackValueCString(data);
|
|
928
|
+
*output = _unpackSpecialValue(special_index);
|
|
929
|
+
is_object = true;
|
|
971
930
|
|
|
972
|
-
|
|
973
|
-
|
|
931
|
+
break;
|
|
932
|
+
}
|
|
933
|
+
case 'O': {
|
|
934
|
+
// Builtin by name. TODO: Define number table shared by C and Python
|
|
935
|
+
// serialization to avoid using strings here.
|
|
936
|
+
char const *builtin_name = (char const *)data;
|
|
937
|
+
data = _unpackValueCString(data);
|
|
974
938
|
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
case 'E': {
|
|
978
|
-
// Builtin exception by name. TODO: Define number table shared by C and Python
|
|
979
|
-
// serialization to avoid using strings here.
|
|
980
|
-
char const *builtin_exception_name = (char const *)data;
|
|
981
|
-
data = _unpackValueCString(data);
|
|
939
|
+
*output = PyObject_GetAttrString((PyObject *)builtin_module, builtin_name);
|
|
940
|
+
is_object = true;
|
|
982
941
|
|
|
983
|
-
|
|
984
|
-
|
|
942
|
+
break;
|
|
943
|
+
}
|
|
944
|
+
case 'E': {
|
|
945
|
+
// Builtin exception by name. TODO: Define number table shared by C and Python
|
|
946
|
+
// serialization to avoid using strings here.
|
|
947
|
+
char const *builtin_exception_name = (char const *)data;
|
|
948
|
+
data = _unpackValueCString(data);
|
|
985
949
|
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
case 'Z': {
|
|
989
|
-
unsigned char v = *data++;
|
|
950
|
+
*output = PyObject_GetAttrString((PyObject *)builtin_module, builtin_exception_name);
|
|
951
|
+
is_object = true;
|
|
990
952
|
|
|
991
|
-
|
|
953
|
+
break;
|
|
954
|
+
}
|
|
955
|
+
case 'Z': {
|
|
956
|
+
unsigned char v = *data++;
|
|
992
957
|
|
|
993
|
-
|
|
994
|
-
case 0: {
|
|
995
|
-
static PyObject *_const_float_0_0 = NULL;
|
|
958
|
+
PyObject *z = NULL;
|
|
996
959
|
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
z = _const_float_0_0;
|
|
960
|
+
switch (v) {
|
|
961
|
+
case 0: {
|
|
962
|
+
static PyObject *_const_float_0_0 = NULL;
|
|
1001
963
|
|
|
1002
|
-
|
|
964
|
+
if (_const_float_0_0 == NULL) {
|
|
965
|
+
_const_float_0_0 = PyFloat_FromDouble(0.0);
|
|
1003
966
|
}
|
|
1004
|
-
|
|
1005
|
-
static PyObject *_const_float_minus_0_0 = NULL;
|
|
967
|
+
z = _const_float_0_0;
|
|
1006
968
|
|
|
1007
|
-
|
|
1008
|
-
|
|
969
|
+
break;
|
|
970
|
+
}
|
|
971
|
+
case 1: {
|
|
972
|
+
static PyObject *_const_float_minus_0_0 = NULL;
|
|
1009
973
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
copysign(PyFloat_AS_DOUBLE(_const_float_minus_0_0), -1.0));
|
|
1013
|
-
}
|
|
1014
|
-
z = _const_float_minus_0_0;
|
|
974
|
+
if (_const_float_minus_0_0 == NULL) {
|
|
975
|
+
_const_float_minus_0_0 = PyFloat_FromDouble(0.0);
|
|
1015
976
|
|
|
1016
|
-
|
|
977
|
+
// Older Python3 has variable signs from C, so be explicit about it.
|
|
978
|
+
PyFloat_SET_DOUBLE(_const_float_minus_0_0, copysign(PyFloat_AS_DOUBLE(_const_float_minus_0_0), -1.0));
|
|
1017
979
|
}
|
|
980
|
+
z = _const_float_minus_0_0;
|
|
1018
981
|
|
|
1019
|
-
|
|
1020
|
-
|
|
982
|
+
break;
|
|
983
|
+
}
|
|
1021
984
|
|
|
1022
|
-
|
|
1023
|
-
|
|
985
|
+
case 2: {
|
|
986
|
+
static PyObject *_const_float_plus_nan = NULL;
|
|
1024
987
|
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
}
|
|
1028
|
-
z = _const_float_plus_nan;
|
|
988
|
+
if (_const_float_plus_nan == NULL) {
|
|
989
|
+
_const_float_plus_nan = PyFloat_FromDouble(Py_NAN);
|
|
1029
990
|
|
|
1030
|
-
|
|
991
|
+
// Older Python3 has variable signs for NaN from C, so be explicit about it.
|
|
992
|
+
PyFloat_SET_DOUBLE(_const_float_plus_nan, copysign(PyFloat_AS_DOUBLE(_const_float_plus_nan), 1.0));
|
|
1031
993
|
}
|
|
1032
|
-
|
|
1033
|
-
static PyObject *_const_float_minus_nan = NULL;
|
|
994
|
+
z = _const_float_plus_nan;
|
|
1034
995
|
|
|
1035
|
-
|
|
1036
|
-
|
|
996
|
+
break;
|
|
997
|
+
}
|
|
998
|
+
case 3: {
|
|
999
|
+
static PyObject *_const_float_minus_nan = NULL;
|
|
1037
1000
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
copysign(PyFloat_AS_DOUBLE(_const_float_minus_nan), -1.0));
|
|
1041
|
-
}
|
|
1042
|
-
z = _const_float_minus_nan;
|
|
1001
|
+
if (_const_float_minus_nan == NULL) {
|
|
1002
|
+
_const_float_minus_nan = PyFloat_FromDouble(Py_NAN);
|
|
1043
1003
|
|
|
1044
|
-
|
|
1004
|
+
// Older Python3 has variable signs for NaN from C, so be explicit about it.
|
|
1005
|
+
PyFloat_SET_DOUBLE(_const_float_minus_nan, copysign(PyFloat_AS_DOUBLE(_const_float_minus_nan), -1.0));
|
|
1045
1006
|
}
|
|
1046
|
-
|
|
1047
|
-
static PyObject *_const_float_plus_inf = NULL;
|
|
1007
|
+
z = _const_float_minus_nan;
|
|
1048
1008
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1009
|
+
break;
|
|
1010
|
+
}
|
|
1011
|
+
case 4: {
|
|
1012
|
+
static PyObject *_const_float_plus_inf = NULL;
|
|
1051
1013
|
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
}
|
|
1055
|
-
z = _const_float_plus_inf;
|
|
1014
|
+
if (_const_float_plus_inf == NULL) {
|
|
1015
|
+
_const_float_plus_inf = PyFloat_FromDouble(Py_HUGE_VAL);
|
|
1056
1016
|
|
|
1057
|
-
|
|
1017
|
+
// Older Python3 has variable signs from C, so be explicit about it.
|
|
1018
|
+
PyFloat_SET_DOUBLE(_const_float_plus_inf, copysign(PyFloat_AS_DOUBLE(_const_float_plus_inf), 1.0));
|
|
1058
1019
|
}
|
|
1059
|
-
|
|
1060
|
-
static PyObject *_const_float_minus_inf = NULL;
|
|
1020
|
+
z = _const_float_plus_inf;
|
|
1061
1021
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1022
|
+
break;
|
|
1023
|
+
}
|
|
1024
|
+
case 5: {
|
|
1025
|
+
static PyObject *_const_float_minus_inf = NULL;
|
|
1064
1026
|
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
copysign(PyFloat_AS_DOUBLE(_const_float_minus_inf), -1.0));
|
|
1068
|
-
}
|
|
1069
|
-
z = _const_float_minus_inf;
|
|
1027
|
+
if (_const_float_minus_inf == NULL) {
|
|
1028
|
+
_const_float_minus_inf = PyFloat_FromDouble(Py_HUGE_VAL);
|
|
1070
1029
|
|
|
1071
|
-
|
|
1030
|
+
// Older Python3 has variable signs from C, so be explicit about it.
|
|
1031
|
+
PyFloat_SET_DOUBLE(_const_float_minus_inf, copysign(PyFloat_AS_DOUBLE(_const_float_minus_inf), -1.0));
|
|
1072
1032
|
}
|
|
1073
|
-
|
|
1074
|
-
PRINT_FORMAT("Missing decoding for %d\n", (int)c);
|
|
1075
|
-
NUITKA_CANNOT_GET_HERE("Corrupt constants blob");
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
// Floats are cached globally too.
|
|
1080
|
-
insertToDictCacheForcedHash(float_cache, &z, NULL, (richcmpfunc)our_float_richcompare);
|
|
1081
|
-
|
|
1082
|
-
*output = z;
|
|
1083
|
-
is_object = true;
|
|
1033
|
+
z = _const_float_minus_inf;
|
|
1084
1034
|
|
|
1085
1035
|
break;
|
|
1086
1036
|
}
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1037
|
+
default: {
|
|
1038
|
+
PRINT_FORMAT("Missing decoding for %d\n", (int)c);
|
|
1039
|
+
NUITKA_CANNOT_GET_HERE("Corrupt constants blob");
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1090
1042
|
|
|
1091
|
-
|
|
1092
|
-
|
|
1043
|
+
// Floats are cached globally too.
|
|
1044
|
+
insertToDictCacheForcedHash(float_cache, &z, NULL, (richcmpfunc)our_float_richcompare);
|
|
1093
1045
|
|
|
1094
|
-
|
|
1046
|
+
*output = z;
|
|
1047
|
+
is_object = true;
|
|
1095
1048
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1049
|
+
break;
|
|
1050
|
+
}
|
|
1051
|
+
case 'X': {
|
|
1052
|
+
// Blob data pointer, user knowns size.
|
|
1053
|
+
uint64_t size = _unpackVariableLength(&data);
|
|
1054
|
+
|
|
1055
|
+
*output = (PyObject *)data;
|
|
1056
|
+
is_object = false;
|
|
1057
|
+
|
|
1058
|
+
data += size;
|
|
1059
|
+
|
|
1060
|
+
break;
|
|
1061
|
+
}
|
|
1098
1062
|
#if PYTHON_VERSION >= 0x390
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1063
|
+
case 'A': {
|
|
1064
|
+
// GenericAlias object
|
|
1065
|
+
PyObject *items[2];
|
|
1066
|
+
data = _unpackBlobConstants(tstate, &items[0], data, 2);
|
|
1103
1067
|
|
|
1104
|
-
|
|
1068
|
+
PyObject *g = Py_GenericAlias(items[0], items[1]);
|
|
1105
1069
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1070
|
+
// TODO: Maybe deduplicate.
|
|
1071
|
+
*output = g;
|
|
1108
1072
|
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1073
|
+
is_object = true;
|
|
1074
|
+
break;
|
|
1075
|
+
}
|
|
1112
1076
|
#endif
|
|
1113
1077
|
#if PYTHON_VERSION >= 0x3a0
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1078
|
+
case 'H': {
|
|
1079
|
+
// UnionType object
|
|
1080
|
+
PyObject *args;
|
|
1081
|
+
data = _unpackBlobConstants(tstate, &args, data, 1);
|
|
1118
1082
|
|
|
1119
|
-
|
|
1083
|
+
PyObject *union_type = MAKE_UNION_TYPE(args);
|
|
1120
1084
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1085
|
+
// TODO: Maybe deduplicate.
|
|
1086
|
+
*output = union_type;
|
|
1123
1087
|
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1088
|
+
is_object = true;
|
|
1089
|
+
break;
|
|
1090
|
+
}
|
|
1127
1091
|
#endif
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1092
|
+
case 'C': {
|
|
1093
|
+
// Code object, without the filename, we let the module do that, depending on
|
|
1094
|
+
// the source mode.
|
|
1095
|
+
int line = unpackValueInt(&data);
|
|
1096
|
+
int flags = unpackValueInt(&data);
|
|
1097
|
+
|
|
1098
|
+
PyObject *function_name;
|
|
1099
|
+
data = _unpackBlobConstant(tstate, &function_name, data);
|
|
1100
|
+
// TODO: Version specific if we have this
|
|
1101
|
+
#if PYTHON_VERSION >= 0x3b0
|
|
1102
|
+
PyObject *function_qualname;
|
|
1103
|
+
data = _unpackBlobConstant(tstate, &function_qualname, data);
|
|
1104
|
+
#endif
|
|
1105
|
+
PyObject *arg_names;
|
|
1106
|
+
data = _unpackBlobConstant(tstate, &arg_names, data);
|
|
1107
|
+
PyObject *free_vars;
|
|
1108
|
+
data = _unpackBlobConstant(tstate, &free_vars, data);
|
|
1109
|
+
int arg_count = unpackValueInt(&data);
|
|
1110
|
+
|
|
1111
|
+
#if PYTHON_VERSION >= 0x300
|
|
1112
|
+
int kw_only_count = unpackValueInt(&data);
|
|
1113
|
+
#if PYTHON_VERSION >= 0x380
|
|
1114
|
+
int pos_only_count = unpackValueInt(&data);
|
|
1115
|
+
#endif
|
|
1116
|
+
#endif
|
|
1117
|
+
// Filename will be supplied later during usage.
|
|
1118
|
+
*output = (PyObject *)MAKE_CODE_OBJECT(Py_None, line, flags, function_name, function_qualname, arg_names,
|
|
1119
|
+
free_vars, arg_count, kw_only_count, pos_only_count);
|
|
1120
|
+
|
|
1121
|
+
is_object = true;
|
|
1122
|
+
break;
|
|
1123
|
+
}
|
|
1124
|
+
case '.': {
|
|
1125
|
+
PRINT_STRING("Missing blob values\n");
|
|
1126
|
+
NUITKA_CANNOT_GET_HERE("Corrupt constants blob");
|
|
1127
|
+
}
|
|
1128
|
+
default:
|
|
1129
|
+
PRINT_FORMAT("Missing decoding for %d\n", (int)c);
|
|
1130
|
+
NUITKA_CANNOT_GET_HERE("Corrupt constants blob");
|
|
1131
|
+
}
|
|
1136
1132
|
|
|
1137
1133
|
#ifdef _NUITKA_EXPERIMENTAL_DEBUG_CONSTANTS
|
|
1138
|
-
|
|
1134
|
+
printf("Size for %c was %d\n", c, data - data_old);
|
|
1139
1135
|
#endif
|
|
1140
1136
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1137
|
+
// Discourage in-place operations from modifying these. These
|
|
1138
|
+
// might be put into containers, therefore take 2 refs to be
|
|
1139
|
+
// accounting for the container too.
|
|
1140
|
+
if (is_object == true) {
|
|
1141
|
+
CHECK_OBJECT(*output);
|
|
1146
1142
|
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1143
|
+
#if PYTHON_VERSION < 0x3c0
|
|
1144
|
+
Py_INCREF(*output);
|
|
1145
|
+
Py_INCREF(*output);
|
|
1146
|
+
#else
|
|
1147
|
+
Py_SET_REFCNT_IMMORTAL(*output);
|
|
1148
|
+
#endif
|
|
1149
|
+
}
|
|
1150
1150
|
|
|
1151
|
-
|
|
1152
|
-
|
|
1151
|
+
return data;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
static unsigned char const *_unpackBlobConstants(PyThreadState *tstate, PyObject **output, unsigned char const *data,
|
|
1155
|
+
int count) {
|
|
1156
|
+
for (int _i = 0; _i < count; _i++) {
|
|
1157
|
+
data = _unpackBlobConstant(tstate, output, data);
|
|
1153
1158
|
|
|
1154
1159
|
output += 1;
|
|
1155
1160
|
}
|
|
@@ -1214,11 +1219,11 @@ unsigned char *findMacOSBinarySection(void) {
|
|
|
1214
1219
|
#endif
|
|
1215
1220
|
|
|
1216
1221
|
void loadConstantsBlob(PyThreadState *tstate, PyObject **output, char const *name) {
|
|
1217
|
-
assert(PyThreadState_GET() == tstate);
|
|
1218
|
-
|
|
1219
1222
|
static bool init_done = false;
|
|
1220
1223
|
|
|
1221
1224
|
if (init_done == false) {
|
|
1225
|
+
NUITKA_PRINT_TIMING("loadConstantsBlob(): One time init.");
|
|
1226
|
+
|
|
1222
1227
|
#ifdef _NUITKA_EXPERIMENTAL_DEBUG_CONSTANTS
|
|
1223
1228
|
printf("loadConstantsBlob '%s' one time init\n", name);
|
|
1224
1229
|
#endif
|
|
@@ -1242,9 +1247,10 @@ void loadConstantsBlob(PyThreadState *tstate, PyObject **output, char const *nam
|
|
|
1242
1247
|
|
|
1243
1248
|
assert(constant_bin);
|
|
1244
1249
|
#endif
|
|
1245
|
-
|
|
1250
|
+
NUITKA_PRINT_TIMING("loadConstantsBlob(): Found blob, decoding now.");
|
|
1246
1251
|
DECODE(constant_bin);
|
|
1247
1252
|
|
|
1253
|
+
NUITKA_PRINT_TIMING("loadConstantsBlob(): CRC32 that blob for correctness.");
|
|
1248
1254
|
uint32_t hash = unpackValueUint32(&constant_bin);
|
|
1249
1255
|
uint32_t size = unpackValueUint32(&constant_bin);
|
|
1250
1256
|
|
|
@@ -1261,6 +1267,8 @@ void loadConstantsBlob(PyThreadState *tstate, PyObject **output, char const *nam
|
|
|
1261
1267
|
printf("Checked CRC32 to match hash %u size %u\n", hash, size);
|
|
1262
1268
|
#endif
|
|
1263
1269
|
|
|
1270
|
+
NUITKA_PRINT_TIMING("loadConstantsBlob(): One time init complete.");
|
|
1271
|
+
|
|
1264
1272
|
init_done = true;
|
|
1265
1273
|
}
|
|
1266
1274
|
|
|
@@ -1297,3 +1305,18 @@ void loadConstantsBlob(PyThreadState *tstate, PyObject **output, char const *nam
|
|
|
1297
1305
|
|
|
1298
1306
|
unpackBlobConstants(tstate, output, w);
|
|
1299
1307
|
}
|
|
1308
|
+
|
|
1309
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1310
|
+
// integrates with CPython, but also works on its own.
|
|
1311
|
+
//
|
|
1312
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1313
|
+
// you may not use this file except in compliance with the License.
|
|
1314
|
+
// You may obtain a copy of the License at
|
|
1315
|
+
//
|
|
1316
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1317
|
+
//
|
|
1318
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1319
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1320
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1321
|
+
// See the License for the specific language governing permissions and
|
|
1322
|
+
// limitations under the License.
|