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
nuitka/tools/testing/Common.py
CHANGED
|
@@ -1,28 +1,12 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# integrates with CPython, but also works on its own.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
#
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
18
4
|
""" Common test infrastructure functions. To be used by test runners. """
|
|
19
5
|
|
|
20
6
|
import ast
|
|
21
7
|
import atexit
|
|
22
8
|
import gc
|
|
23
|
-
import hashlib
|
|
24
9
|
import os
|
|
25
|
-
import re
|
|
26
10
|
import shutil
|
|
27
11
|
import signal
|
|
28
12
|
import sys
|
|
@@ -32,7 +16,8 @@ import time
|
|
|
32
16
|
from contextlib import contextmanager
|
|
33
17
|
from optparse import OptionParser
|
|
34
18
|
|
|
35
|
-
from nuitka.__past__ import subprocess
|
|
19
|
+
from nuitka.__past__ import md5, subprocess
|
|
20
|
+
from nuitka.Options import getCommercialVersion
|
|
36
21
|
from nuitka.PythonVersions import getTestExecutionPythonVersions, isDebugPython
|
|
37
22
|
from nuitka.Tracing import OurLogger, my_print
|
|
38
23
|
from nuitka.tree.SourceHandling import readSourceCodeFromFilename
|
|
@@ -40,6 +25,7 @@ from nuitka.utils.AppDirs import getCacheDir
|
|
|
40
25
|
from nuitka.utils.Execution import (
|
|
41
26
|
check_output,
|
|
42
27
|
createProcess,
|
|
28
|
+
executeProcess,
|
|
43
29
|
getNullInput,
|
|
44
30
|
getNullOutput,
|
|
45
31
|
)
|
|
@@ -49,6 +35,7 @@ from nuitka.utils.FileOperations import (
|
|
|
49
35
|
getFileContentByLine,
|
|
50
36
|
getFileContents,
|
|
51
37
|
getFileList,
|
|
38
|
+
getParentDirectories,
|
|
52
39
|
isFilenameSameAsOrBelowPath,
|
|
53
40
|
makePath,
|
|
54
41
|
openTextFile,
|
|
@@ -56,7 +43,7 @@ from nuitka.utils.FileOperations import (
|
|
|
56
43
|
)
|
|
57
44
|
from nuitka.utils.InstalledPythons import findInstalledPython
|
|
58
45
|
from nuitka.utils.Jinja2 import getTemplate
|
|
59
|
-
from nuitka.utils.Utils import
|
|
46
|
+
from nuitka.utils.Utils import isFreeBSD, isLinux, isMacOS, isWin32Windows
|
|
60
47
|
|
|
61
48
|
from .SearchModes import (
|
|
62
49
|
SearchModeByPattern,
|
|
@@ -220,11 +207,16 @@ def getTempDir():
|
|
|
220
207
|
os.path.dirname(os.path.abspath(sys.modules["__main__"].__file__))
|
|
221
208
|
)
|
|
222
209
|
+ "-",
|
|
223
|
-
dir=
|
|
210
|
+
dir=None if not (isLinux() and os.path.exists("/var/tmp")) else "/var/tmp",
|
|
224
211
|
)
|
|
225
212
|
|
|
226
213
|
def removeTempDir():
|
|
227
|
-
removeDirectory(
|
|
214
|
+
removeDirectory(
|
|
215
|
+
path=tmp_dir,
|
|
216
|
+
logger=test_logger,
|
|
217
|
+
ignore_errors=True,
|
|
218
|
+
extra_recommendation=None,
|
|
219
|
+
)
|
|
228
220
|
|
|
229
221
|
atexit.register(removeTempDir)
|
|
230
222
|
|
|
@@ -236,8 +228,9 @@ def convertUsing2to3(path, force=False):
|
|
|
236
228
|
|
|
237
229
|
if not force:
|
|
238
230
|
if "xrange" not in getFileContents(path):
|
|
239
|
-
|
|
240
|
-
|
|
231
|
+
with getNullOutput() as null_output:
|
|
232
|
+
if check_result(command, stderr=null_output):
|
|
233
|
+
return path, False
|
|
241
234
|
|
|
242
235
|
filename = os.path.basename(path)
|
|
243
236
|
|
|
@@ -266,16 +259,17 @@ def convertUsing2to3(path, force=False):
|
|
|
266
259
|
|
|
267
260
|
command += ("-w", "-n", "--no-diffs", new_path)
|
|
268
261
|
|
|
269
|
-
|
|
270
|
-
|
|
262
|
+
with getNullOutput() as null_output:
|
|
263
|
+
try:
|
|
264
|
+
check_output(command, stderr=null_output)
|
|
271
265
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
266
|
+
except subprocess.CalledProcessError:
|
|
267
|
+
if isWin32Windows():
|
|
268
|
+
raise
|
|
275
269
|
|
|
276
|
-
|
|
270
|
+
command[0:3] = ["2to3"]
|
|
277
271
|
|
|
278
|
-
|
|
272
|
+
check_output(command, stderr=null_output)
|
|
279
273
|
|
|
280
274
|
data = getFileContents(new_path)
|
|
281
275
|
|
|
@@ -305,6 +299,10 @@ def decideFilenameVersionSkip(filename):
|
|
|
305
299
|
|
|
306
300
|
assert type(filename) is str, repr(filename)
|
|
307
301
|
|
|
302
|
+
# There are commercial only test cases
|
|
303
|
+
if "commercial" in filename.lower() and getCommercialVersion() is None:
|
|
304
|
+
return False
|
|
305
|
+
|
|
308
306
|
# Skip runner scripts by default.
|
|
309
307
|
if filename.startswith("run_"):
|
|
310
308
|
return False
|
|
@@ -324,6 +322,10 @@ def decideFilenameVersionSkip(filename):
|
|
|
324
322
|
if filename.endswith("_37.py") and _python_version >= (3, 8):
|
|
325
323
|
return False
|
|
326
324
|
|
|
325
|
+
# Skip tests that require Python 3.11 at maximum.
|
|
326
|
+
if filename.endswith("_311.py") and _python_version >= (3, 8):
|
|
327
|
+
return False
|
|
328
|
+
|
|
327
329
|
# Skip tests that require Python 3.2 at least.
|
|
328
330
|
if filename.endswith("32.py") and _python_version < (3, 2):
|
|
329
331
|
return False
|
|
@@ -364,18 +366,27 @@ def decideFilenameVersionSkip(filename):
|
|
|
364
366
|
if filename.endswith("311.py") and _python_version < (3, 11):
|
|
365
367
|
return False
|
|
366
368
|
|
|
367
|
-
|
|
369
|
+
# Skip tests that require Python 3.12 at least.
|
|
370
|
+
if filename.endswith("312.py") and _python_version < (3, 12):
|
|
371
|
+
return False
|
|
368
372
|
|
|
373
|
+
# Skip tests that require Python 3.13 at least.
|
|
374
|
+
if filename.endswith("313.py") and _python_version < (3, 13):
|
|
375
|
+
return False
|
|
369
376
|
|
|
370
|
-
|
|
371
|
-
return _python_version >= (3,) and not re.match(r".*3\d+\.py", filename)
|
|
377
|
+
return True
|
|
372
378
|
|
|
373
379
|
|
|
374
380
|
def _removeCPythonTestSuiteDir():
|
|
375
381
|
# Cleanup, some tests apparently forget that.
|
|
376
382
|
try:
|
|
377
383
|
if os.path.isdir("@test"):
|
|
378
|
-
removeDirectory(
|
|
384
|
+
removeDirectory(
|
|
385
|
+
"@test",
|
|
386
|
+
logger=test_logger,
|
|
387
|
+
ignore_errors=False,
|
|
388
|
+
extra_recommendation=None,
|
|
389
|
+
)
|
|
379
390
|
elif os.path.isfile("@test"):
|
|
380
391
|
os.unlink("@test")
|
|
381
392
|
except OSError:
|
|
@@ -390,9 +401,7 @@ def _removeCPythonTestSuiteDir():
|
|
|
390
401
|
raise
|
|
391
402
|
|
|
392
403
|
|
|
393
|
-
def compareWithCPython(
|
|
394
|
-
dirname, filename, extra_flags, search_mode, needs_2to3, on_error=None
|
|
395
|
-
):
|
|
404
|
+
def compareWithCPython(dirname, filename, extra_flags, search_mode, on_error=None):
|
|
396
405
|
"""Call the comparison tool. For a given directory filename.
|
|
397
406
|
|
|
398
407
|
The search mode decides if the test case aborts on error or gets extra
|
|
@@ -400,19 +409,11 @@ def compareWithCPython(
|
|
|
400
409
|
|
|
401
410
|
"""
|
|
402
411
|
|
|
403
|
-
# Many cases to consider here, pylint: disable=too-many-branches
|
|
404
|
-
|
|
405
412
|
if dirname is None:
|
|
406
413
|
path = filename
|
|
407
414
|
else:
|
|
408
415
|
path = os.path.join(dirname, filename)
|
|
409
416
|
|
|
410
|
-
# Apply 2to3 conversion if necessary.
|
|
411
|
-
if needs_2to3:
|
|
412
|
-
path, converted = convertUsing2to3(path)
|
|
413
|
-
else:
|
|
414
|
-
converted = False
|
|
415
|
-
|
|
416
417
|
if os.getenv("NUITKA_TEST_INSTALLED", "") == "1":
|
|
417
418
|
command = [
|
|
418
419
|
sys.executable,
|
|
@@ -450,9 +451,6 @@ def compareWithCPython(
|
|
|
450
451
|
|
|
451
452
|
search_mode.onErrorDetected("Error exit! %s" % result)
|
|
452
453
|
|
|
453
|
-
if converted:
|
|
454
|
-
os.unlink(path)
|
|
455
|
-
|
|
456
454
|
if result == 2:
|
|
457
455
|
test_logger.sysexit("Interrupted, with CTRL-C\n", exit_code=2)
|
|
458
456
|
|
|
@@ -477,9 +475,13 @@ def checkCompilesNotWithCPython(dirname, filename, search_mode):
|
|
|
477
475
|
def checkSucceedsWithCPython(filename):
|
|
478
476
|
command = [_python_executable, filename]
|
|
479
477
|
|
|
480
|
-
|
|
478
|
+
stdout, stderr, exit_code = executeProcess(command)
|
|
481
479
|
|
|
482
|
-
|
|
480
|
+
if exit_code != 0:
|
|
481
|
+
my_print("stdout", stdout)
|
|
482
|
+
my_print("stderr", stderr)
|
|
483
|
+
|
|
484
|
+
return exit_code == 0
|
|
483
485
|
|
|
484
486
|
|
|
485
487
|
def getDebugPython():
|
|
@@ -527,7 +529,7 @@ def displayRuntimeTraces(logger, path):
|
|
|
527
529
|
|
|
528
530
|
if os.name == "posix":
|
|
529
531
|
# Run with traces to help debugging, specifically in CI environment.
|
|
530
|
-
if
|
|
532
|
+
if isMacOS() or isFreeBSD():
|
|
531
533
|
test_logger.info("dtruss:")
|
|
532
534
|
os.system("sudo dtruss %s" % path)
|
|
533
535
|
else:
|
|
@@ -536,11 +538,12 @@ def displayRuntimeTraces(logger, path):
|
|
|
536
538
|
|
|
537
539
|
|
|
538
540
|
def hasModule(module_name):
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
541
|
+
with getNullOutput() as null_output:
|
|
542
|
+
result = subprocess.call(
|
|
543
|
+
(os.environ["PYTHON"], "-c", "import %s" % module_name),
|
|
544
|
+
stdout=null_output,
|
|
545
|
+
stderr=subprocess.STDOUT,
|
|
546
|
+
)
|
|
544
547
|
|
|
545
548
|
return result == 0
|
|
546
549
|
|
|
@@ -584,7 +587,7 @@ def snapObjRefCntMap(before):
|
|
|
584
587
|
k = "str_overload_" + x.__class__.__name__ + str(x)
|
|
585
588
|
elif type(x) is dict:
|
|
586
589
|
if "__builtins__" in x:
|
|
587
|
-
k = "<module dict %s>" % x
|
|
590
|
+
k = "<module dict %s>" % x.get("__name__", "<maybe not a module>")
|
|
588
591
|
elif "__spec__" in x and "__name__" in x:
|
|
589
592
|
k = "<module dict %s>" % x["__name__"]
|
|
590
593
|
else:
|
|
@@ -717,7 +720,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
|
|
|
717
720
|
my_print("extra:", m1[key], key)
|
|
718
721
|
elif m1[key] != m2[key]:
|
|
719
722
|
my_print("*" * 80)
|
|
720
|
-
my_print(m1[key], "->", m2[key], key)
|
|
723
|
+
my_print(m1[key], "->", m2[key], repr(key))
|
|
721
724
|
else:
|
|
722
725
|
pass
|
|
723
726
|
|
|
@@ -738,6 +741,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
|
|
|
738
741
|
|
|
739
742
|
def createSearchMode():
|
|
740
743
|
# Dealing with many options, pylint: disable=too-many-branches
|
|
744
|
+
# Return driven, pylint: disable=too-many-return-statements
|
|
741
745
|
|
|
742
746
|
parser = OptionParser()
|
|
743
747
|
|
|
@@ -759,6 +763,14 @@ Execute only tests matching the pattern. Defaults to all tests.""",
|
|
|
759
763
|
help="""\
|
|
760
764
|
Execute all tests, continue execution even after failure of one.""",
|
|
761
765
|
)
|
|
766
|
+
select_group.add_option(
|
|
767
|
+
"--jobs",
|
|
768
|
+
action="store",
|
|
769
|
+
dest="jobs",
|
|
770
|
+
default=None,
|
|
771
|
+
help="""\
|
|
772
|
+
Pass this as the --jobs value to Nuitka.""",
|
|
773
|
+
)
|
|
762
774
|
|
|
763
775
|
del select_group
|
|
764
776
|
|
|
@@ -790,6 +802,9 @@ Defaults to off.""",
|
|
|
790
802
|
if options.debug:
|
|
791
803
|
addExtendedExtraOptions("--debug")
|
|
792
804
|
|
|
805
|
+
if options.jobs is not None:
|
|
806
|
+
addExtendedExtraOptions("--jobs=%s" % options.jobs)
|
|
807
|
+
|
|
793
808
|
if options.show_commands:
|
|
794
809
|
os.environ["NUITKA_TRACE_COMMANDS"] = "1"
|
|
795
810
|
|
|
@@ -811,7 +826,9 @@ Defaults to off.""",
|
|
|
811
826
|
else:
|
|
812
827
|
return SearchModeImmediate()
|
|
813
828
|
elif mode == "resume":
|
|
814
|
-
return SearchModeResume(sys.modules["__main__"].__file__)
|
|
829
|
+
return SearchModeResume(sys.modules["__main__"].__file__, skip=False)
|
|
830
|
+
elif mode == "skip":
|
|
831
|
+
return SearchModeResume(sys.modules["__main__"].__file__, skip=True)
|
|
815
832
|
elif mode == "only":
|
|
816
833
|
if options.pattern:
|
|
817
834
|
pattern = options.pattern.replace("/", os.path.sep)
|
|
@@ -820,9 +837,9 @@ Defaults to off.""",
|
|
|
820
837
|
assert False
|
|
821
838
|
elif mode == "coverage":
|
|
822
839
|
return SearchModeCoverage(
|
|
823
|
-
start_at=
|
|
824
|
-
|
|
825
|
-
|
|
840
|
+
start_at=(
|
|
841
|
+
options.pattern.replace("/", os.path.sep) if options.pattern else None
|
|
842
|
+
)
|
|
826
843
|
)
|
|
827
844
|
else:
|
|
828
845
|
test_logger.sysexit("Error, using unknown search mode %r" % mode)
|
|
@@ -840,7 +857,7 @@ def executeReferenceChecked(
|
|
|
840
857
|
):
|
|
841
858
|
gc.disable()
|
|
842
859
|
|
|
843
|
-
extract_number = lambda name: int(name.replace(prefix, ""))
|
|
860
|
+
extract_number = lambda name: int(name.replace(prefix, "") or "0")
|
|
844
861
|
|
|
845
862
|
# Find the function names.
|
|
846
863
|
matching_names = tuple(
|
|
@@ -861,20 +878,19 @@ def executeReferenceChecked(
|
|
|
861
878
|
continue
|
|
862
879
|
|
|
863
880
|
# Avoid non-raisable output.
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
new_stderr.close()
|
|
881
|
+
with getNullOutput() as null_output:
|
|
882
|
+
try:
|
|
883
|
+
if number in tests_stderr:
|
|
884
|
+
sys.stderr = null_output
|
|
885
|
+
except OSError: # Windows
|
|
886
|
+
if not checkReferenceCount(names[name], explain=explain):
|
|
887
|
+
result = False
|
|
888
|
+
else:
|
|
889
|
+
if not checkReferenceCount(names[name], explain=explain):
|
|
890
|
+
result = False
|
|
891
|
+
finally:
|
|
892
|
+
if number in tests_stderr:
|
|
893
|
+
sys.stderr = old_stderr
|
|
878
894
|
|
|
879
895
|
gc.enable()
|
|
880
896
|
return result
|
|
@@ -925,7 +941,7 @@ def withPythonPathChange(python_path):
|
|
|
925
941
|
|
|
926
942
|
|
|
927
943
|
def addExtendedExtraOptions(*args):
|
|
928
|
-
old_value = os.
|
|
944
|
+
old_value = os.getenv("NUITKA_EXTRA_OPTIONS")
|
|
929
945
|
|
|
930
946
|
value = old_value
|
|
931
947
|
|
|
@@ -956,7 +972,8 @@ def withExtendedExtraOptions(*args):
|
|
|
956
972
|
|
|
957
973
|
def indentedCode(codes, count):
|
|
958
974
|
"""Indent code, used for generating test codes."""
|
|
959
|
-
|
|
975
|
+
indent = " " * count
|
|
976
|
+
return "\n".join(indent + line if line else "" for line in codes)
|
|
960
977
|
|
|
961
978
|
|
|
962
979
|
def convertToPython(doctests, line_filter=None):
|
|
@@ -1179,19 +1196,15 @@ def async_iterate(g):
|
|
|
1179
1196
|
|
|
1180
1197
|
|
|
1181
1198
|
def getTestingCacheDir():
|
|
1182
|
-
cache_dir = getCacheDir()
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
makePath(result)
|
|
1186
|
-
return result
|
|
1199
|
+
cache_dir = getCacheDir("tests_state")
|
|
1200
|
+
makePath(cache_dir)
|
|
1201
|
+
return cache_dir
|
|
1187
1202
|
|
|
1188
1203
|
|
|
1189
1204
|
def getTestingCPythonOutputsCacheDir():
|
|
1190
|
-
cache_dir = getCacheDir()
|
|
1205
|
+
cache_dir = getCacheDir("cpython_outputs")
|
|
1191
1206
|
|
|
1192
|
-
result = os.path.join(
|
|
1193
|
-
cache_dir, "cpython_outputs", os.environ.get("NUITKA_TEST_SUITE", "")
|
|
1194
|
-
)
|
|
1207
|
+
result = os.path.join(cache_dir, os.getenv("NUITKA_TEST_SUITE", ""))
|
|
1195
1208
|
|
|
1196
1209
|
makePath(result)
|
|
1197
1210
|
return result
|
|
@@ -1203,7 +1216,7 @@ def scanDirectoryForTestCases(dirname, template_context=None):
|
|
|
1203
1216
|
filenames = [
|
|
1204
1217
|
filename
|
|
1205
1218
|
for filename in filenames
|
|
1206
|
-
if (filename.endswith(".py") and
|
|
1219
|
+
if (filename.endswith(".py") and filename + ".j2" not in filenames)
|
|
1207
1220
|
or filename.endswith(".j2")
|
|
1208
1221
|
]
|
|
1209
1222
|
|
|
@@ -1263,19 +1276,20 @@ def setupCacheHashSalt(test_code_path):
|
|
|
1263
1276
|
if os.path.exists(os.path.join(test_code_path, ".git")):
|
|
1264
1277
|
git_cmd = ["git", "ls-tree", "-r", "HEAD", test_code_path]
|
|
1265
1278
|
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1279
|
+
with getNullInput() as null_input:
|
|
1280
|
+
process = subprocess.Popen(
|
|
1281
|
+
args=git_cmd,
|
|
1282
|
+
stdin=null_input,
|
|
1283
|
+
stdout=subprocess.PIPE,
|
|
1284
|
+
stderr=subprocess.PIPE,
|
|
1285
|
+
)
|
|
1272
1286
|
|
|
1273
1287
|
stdout_git, stderr_git = process.communicate()
|
|
1274
1288
|
assert process.returncode == 0, stderr_git
|
|
1275
1289
|
|
|
1276
|
-
salt_value =
|
|
1290
|
+
salt_value = md5(stdout_git)
|
|
1277
1291
|
else:
|
|
1278
|
-
salt_value =
|
|
1292
|
+
salt_value = md5()
|
|
1279
1293
|
|
|
1280
1294
|
for filename in getFileList(test_code_path):
|
|
1281
1295
|
if filename.endswith(".py"):
|
|
@@ -1330,20 +1344,24 @@ def checkTestRequirements(filename):
|
|
|
1330
1344
|
|
|
1331
1345
|
if os.path.isfile(candidate):
|
|
1332
1346
|
filename = candidate
|
|
1347
|
+
else:
|
|
1348
|
+
filename = os.path.join(filename, getMainProgramFilename(filename))
|
|
1333
1349
|
|
|
1334
1350
|
for line in readSourceCodeFromFilename(None, filename).splitlines():
|
|
1335
1351
|
if line.startswith("# nuitka-skip-unless-"):
|
|
1336
1352
|
if line[21:33] == "expression: ":
|
|
1337
1353
|
expression = line[33:]
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1354
|
+
|
|
1355
|
+
with getNullOutput() as null_output:
|
|
1356
|
+
result = subprocess.call(
|
|
1357
|
+
(
|
|
1358
|
+
os.environ["PYTHON"],
|
|
1359
|
+
"-c",
|
|
1360
|
+
"import sys, os; sys.exit(not bool(%s))" % expression,
|
|
1361
|
+
),
|
|
1362
|
+
stdout=null_output,
|
|
1363
|
+
stderr=subprocess.STDOUT,
|
|
1364
|
+
)
|
|
1347
1365
|
if result != 0:
|
|
1348
1366
|
return (False, "Expression '%s' evaluated to false" % expression)
|
|
1349
1367
|
|
|
@@ -1399,6 +1417,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1399
1417
|
current_dir = os.path.normpath(current_dir)
|
|
1400
1418
|
current_dir = os.path.normcase(current_dir)
|
|
1401
1419
|
current_dir_ext = os.path.normcase(getExternalUsePath(current_dir))
|
|
1420
|
+
current_dir_real = os.path.realpath(current_dir)
|
|
1402
1421
|
|
|
1403
1422
|
illegal_accesses = []
|
|
1404
1423
|
|
|
@@ -1443,6 +1462,17 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1443
1462
|
if loaded_filename.startswith(current_dir_ext):
|
|
1444
1463
|
continue
|
|
1445
1464
|
|
|
1465
|
+
if loaded_filename.startswith(current_dir_real):
|
|
1466
|
+
continue
|
|
1467
|
+
|
|
1468
|
+
# Parent directories are OK too
|
|
1469
|
+
if (
|
|
1470
|
+
loaded_filename in getParentDirectories(current_dir)
|
|
1471
|
+
or loaded_filename in getParentDirectories(current_dir_ext)
|
|
1472
|
+
or loaded_filename in getParentDirectories(current_dir_real)
|
|
1473
|
+
):
|
|
1474
|
+
continue
|
|
1475
|
+
|
|
1446
1476
|
ignore = True
|
|
1447
1477
|
for ignored_dir in (
|
|
1448
1478
|
# System configuration is OK
|
|
@@ -1463,6 +1493,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1463
1493
|
# Themes may of course be loaded.
|
|
1464
1494
|
"/usr/share/themes",
|
|
1465
1495
|
# Terminal info files are OK too.
|
|
1496
|
+
"/usr/share/terminfo",
|
|
1466
1497
|
"/lib/terminfo",
|
|
1467
1498
|
):
|
|
1468
1499
|
if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
|
|
@@ -1620,7 +1651,14 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1620
1651
|
# Loading from home directories is OK too.
|
|
1621
1652
|
if any(
|
|
1622
1653
|
isFilenameSameAsOrBelowPath(path, loaded_filename)
|
|
1623
|
-
for path in (
|
|
1654
|
+
for path in (
|
|
1655
|
+
"/home",
|
|
1656
|
+
"/data",
|
|
1657
|
+
"/root",
|
|
1658
|
+
"/Users",
|
|
1659
|
+
"/Library/Preferences",
|
|
1660
|
+
"/agent", # Azure
|
|
1661
|
+
)
|
|
1624
1662
|
):
|
|
1625
1663
|
continue
|
|
1626
1664
|
|
|
@@ -1762,10 +1800,12 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1762
1800
|
|
|
1763
1801
|
# macOS uses these:
|
|
1764
1802
|
if loaded_basename in (
|
|
1803
|
+
"libc.dylib",
|
|
1765
1804
|
"libcrypto.1.0.0.dylib",
|
|
1766
1805
|
"libssl.1.0.0.dylib",
|
|
1767
1806
|
"libcrypto.1.1.dylib",
|
|
1768
1807
|
"libffi.dylib",
|
|
1808
|
+
"libfribidi.dylib",
|
|
1769
1809
|
):
|
|
1770
1810
|
continue
|
|
1771
1811
|
|
|
@@ -1780,13 +1820,11 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1780
1820
|
if isMacOS():
|
|
1781
1821
|
ignore = True
|
|
1782
1822
|
for ignored_dir in (
|
|
1783
|
-
"/System/Library
|
|
1784
|
-
"/System/Library/CoreServices",
|
|
1785
|
-
"/System/Library/Frameworks/",
|
|
1786
|
-
"/System/Library/dyld",
|
|
1823
|
+
"/System/Library",
|
|
1787
1824
|
"/AppleInternal",
|
|
1788
1825
|
"/System/Volumes/Preboot",
|
|
1789
1826
|
"/usr/lib/system/",
|
|
1827
|
+
"/usr/libexec/swift",
|
|
1790
1828
|
):
|
|
1791
1829
|
if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
|
|
1792
1830
|
ignore = False
|
|
@@ -1794,6 +1832,9 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
|
|
|
1794
1832
|
if not ignore:
|
|
1795
1833
|
continue
|
|
1796
1834
|
|
|
1835
|
+
if loaded_filename == "/System/Library":
|
|
1836
|
+
continue
|
|
1837
|
+
|
|
1797
1838
|
if loaded_filename == "/usr/libexec/rosetta/runtime":
|
|
1798
1839
|
continue
|
|
1799
1840
|
|
|
@@ -1884,7 +1925,11 @@ def getLocalWebServerDir(base_dir):
|
|
|
1884
1925
|
web_dir = os.path.join(getTempDir(), "local-web-server", base_dir)
|
|
1885
1926
|
|
|
1886
1927
|
if _web_server_process is None:
|
|
1887
|
-
web_server_directory_supporting_pythons = (
|
|
1928
|
+
web_server_directory_supporting_pythons = tuple(
|
|
1929
|
+
python_version
|
|
1930
|
+
for python_version in getTestExecutionPythonVersions()
|
|
1931
|
+
if python_version not in ("3.6", "3.5", "3.4", "2.7", "2.6")
|
|
1932
|
+
)
|
|
1888
1933
|
|
|
1889
1934
|
web_server_python = findInstalledPython(
|
|
1890
1935
|
python_versions=web_server_directory_supporting_pythons,
|
|
@@ -1935,3 +1980,19 @@ def extractNuitkaVersionFromFilePath(version_filename):
|
|
|
1935
1980
|
(version_line,) = [line for line in option_lines if line.startswith("Nuitka V")]
|
|
1936
1981
|
|
|
1937
1982
|
return version_line[8:].rstrip()
|
|
1983
|
+
|
|
1984
|
+
|
|
1985
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1986
|
+
# integrates with CPython, but also works on its own.
|
|
1987
|
+
#
|
|
1988
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1989
|
+
# you may not use this file except in compliance with the License.
|
|
1990
|
+
# You may obtain a copy of the License at
|
|
1991
|
+
#
|
|
1992
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1993
|
+
#
|
|
1994
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1995
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1996
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1997
|
+
# See the License for the specific language governing permissions and
|
|
1998
|
+
# limitations under the License.
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
# Copyright
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# integrates with CPython, but also works on its own.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
#
|
|
1
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
18
4
|
""" Tools for construct tests.
|
|
19
5
|
|
|
20
6
|
"""
|
|
@@ -49,3 +35,19 @@ def generateConstructCases(construct_source_code):
|
|
|
49
35
|
case = 1
|
|
50
36
|
|
|
51
37
|
return "\n".join(case_1), "\n".join(case_2)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
41
|
+
# integrates with CPython, but also works on its own.
|
|
42
|
+
#
|
|
43
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
44
|
+
# you may not use this file except in compliance with the License.
|
|
45
|
+
# You may obtain a copy of the License at
|
|
46
|
+
#
|
|
47
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
48
|
+
#
|
|
49
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
50
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
51
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
52
|
+
# See the License for the specific language governing permissions and
|
|
53
|
+
# limitations under the License.
|