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/build/Backend.scons
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
# -*- python -*-
|
|
2
|
-
# Copyright
|
|
3
|
-
|
|
4
|
-
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
5
|
-
# integrates with CPython, but also works on its own.
|
|
6
|
-
#
|
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
# you may not use this file except in compliance with the License.
|
|
9
|
-
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
2
|
+
# Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
3
|
+
|
|
19
4
|
|
|
20
5
|
"""
|
|
21
6
|
The Nuitka scons file. If you have Scons or platform knowledge, please be
|
|
@@ -53,7 +38,14 @@ from nuitka.Tracing import (
|
|
|
53
38
|
scons_logger,
|
|
54
39
|
setQuiet,
|
|
55
40
|
)
|
|
56
|
-
from nuitka.utils.
|
|
41
|
+
from nuitka.utils.FileOperations import (
|
|
42
|
+
changeFilenameExtension,
|
|
43
|
+
deleteFile,
|
|
44
|
+
getExternalUsePath,
|
|
45
|
+
getFilenameExtension,
|
|
46
|
+
getNormalizedPath,
|
|
47
|
+
isFilesystemEncodable,
|
|
48
|
+
)
|
|
57
49
|
from nuitka.utils.Json import loadJsonFromFilename
|
|
58
50
|
from nuitka.utils.Utils import (
|
|
59
51
|
isDebianBasedLinux,
|
|
@@ -101,7 +93,7 @@ from .SconsUtils import (
|
|
|
101
93
|
writeSconsReport,
|
|
102
94
|
)
|
|
103
95
|
|
|
104
|
-
# spell-checker: ignore ccversion,ccflags,werror,cppdefines,cpppath
|
|
96
|
+
# spell-checker: ignore ccversion,cflags,ccflags,werror,cppdefines,cpppath,linkflags,libpath
|
|
105
97
|
|
|
106
98
|
# Set the arguments.
|
|
107
99
|
setArguments(ARGUMENTS)
|
|
@@ -118,18 +110,12 @@ source_dir = getArgumentRequired("source_dir")
|
|
|
118
110
|
nuitka_src = getArgumentRequired("nuitka_src")
|
|
119
111
|
static_src = os.path.join(source_dir, "static")
|
|
120
112
|
|
|
121
|
-
# The name of executable
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# The name of executable that we produce (in executable mode).
|
|
125
|
-
result_exe = getArgumentDefaulted("result_exe", None)
|
|
113
|
+
# The name of executable that we are supposed to produce.
|
|
114
|
+
result_exe = getArgumentRequired("result_exe")
|
|
126
115
|
|
|
127
116
|
# Name of the main program (in executable mode, typically __main__ but can be in a package too.)
|
|
128
117
|
main_module_name = getArgumentDefaulted("main_module_name", "__main__")
|
|
129
118
|
|
|
130
|
-
# The suffix for an extension module (in module mode).
|
|
131
|
-
module_suffix = getArgumentDefaulted("module_suffix", None)
|
|
132
|
-
|
|
133
119
|
# Full names shall be used, no remapping for cacheable filenames.
|
|
134
120
|
full_names = getArgumentBool("full_names", False)
|
|
135
121
|
|
|
@@ -139,6 +125,10 @@ module_mode = getArgumentBool("module_mode", False)
|
|
|
139
125
|
# Debug mode: Less optimizations, debug information in the resulting binary.
|
|
140
126
|
debug_mode = getArgumentBool("debug_mode", False)
|
|
141
127
|
|
|
128
|
+
# Debugger mode: Debug information in the resulting binary and intention to run
|
|
129
|
+
# in debugger.
|
|
130
|
+
debugger_mode = getArgumentBool("debugger_mode", False)
|
|
131
|
+
|
|
142
132
|
# Profiling mode: Outputs vmprof based information from program run.
|
|
143
133
|
profile_mode = getArgumentBool("profile_mode", False)
|
|
144
134
|
|
|
@@ -146,8 +136,14 @@ profile_mode = getArgumentBool("profile_mode", False)
|
|
|
146
136
|
python_version_str = getArgumentRequired("python_version")
|
|
147
137
|
python_version = tuple(int(d) for d in python_version_str.split("."))
|
|
148
138
|
|
|
139
|
+
gil_mode = getArgumentBool("gil_mode")
|
|
140
|
+
|
|
149
141
|
# The ABI flags to target.
|
|
150
142
|
abiflags = getArgumentDefaulted("abiflags", "")
|
|
143
|
+
|
|
144
|
+
if not gil_mode and "t" not in abiflags:
|
|
145
|
+
abiflags = "t" + abiflags
|
|
146
|
+
|
|
151
147
|
python_abi_version = python_version_str + abiflags
|
|
152
148
|
|
|
153
149
|
# Python debug mode: reference count checking, assertions in CPython core.
|
|
@@ -167,6 +163,9 @@ deployment_mode = getArgumentBool("deployment", False)
|
|
|
167
163
|
# Experimental indications. Do things that are not yet safe to do.
|
|
168
164
|
no_deployment = getArgumentList("no_deployment", "")
|
|
169
165
|
|
|
166
|
+
# Debug mode indications. Do check things with fine granularity.
|
|
167
|
+
debug_modes = getArgumentList("debug_modes", "")
|
|
168
|
+
|
|
170
169
|
# Tracing mode. Output program progress.
|
|
171
170
|
trace_mode = getArgumentBool("trace_mode", False)
|
|
172
171
|
|
|
@@ -177,12 +176,8 @@ lto_mode = getArgumentDefaulted("lto_mode", "auto")
|
|
|
177
176
|
# PGO mode: Use profile guided optimization of C compiler if available.
|
|
178
177
|
pgo_mode = getArgumentDefaulted("pgo_mode", "no")
|
|
179
178
|
|
|
180
|
-
#
|
|
181
|
-
|
|
182
|
-
win_target = os.name == "nt"
|
|
183
|
-
|
|
184
|
-
# Windows subsystem mode: Disable console for windows builds.
|
|
185
|
-
disable_console = getArgumentBool("disable_console", False)
|
|
179
|
+
# Console mode specified
|
|
180
|
+
console_mode = getArgumentDefaulted("console_mode", "attach")
|
|
186
181
|
|
|
187
182
|
# Windows might be running a Python whose DLL we have to use.
|
|
188
183
|
uninstalled_python = getArgumentBool("uninstalled_python", False)
|
|
@@ -203,7 +198,7 @@ clang_mode = getArgumentBool("clang_mode", False)
|
|
|
203
198
|
# Clang on Windows with no requirement to use MinGW64 or using MSYS2 MinGW flavor,
|
|
204
199
|
# is changed to ClangCL from Visual Studio.
|
|
205
200
|
clangcl_mode = False
|
|
206
|
-
if
|
|
201
|
+
if os.name == "nt" and not mingw_mode and clang_mode:
|
|
207
202
|
clang_mode = False
|
|
208
203
|
clangcl_mode = True
|
|
209
204
|
|
|
@@ -217,6 +212,9 @@ standalone_mode = getArgumentBool("standalone_mode", False)
|
|
|
217
212
|
# Onefile mode
|
|
218
213
|
onefile_mode = getArgumentBool("onefile_mode", False)
|
|
219
214
|
|
|
215
|
+
# MacOS bundle
|
|
216
|
+
macos_bundle_mode = getArgumentBool("macos_bundle_mode", False)
|
|
217
|
+
|
|
220
218
|
# Onefile temp mode
|
|
221
219
|
onefile_temp_mode = getArgumentBool("onefile_temp_mode", False)
|
|
222
220
|
|
|
@@ -227,13 +225,15 @@ forced_stderr_path = getArgumentDefaulted("forced_stderr_path", None)
|
|
|
227
225
|
show_scons_mode = getArgumentBool("show_scons", False)
|
|
228
226
|
scons_details_logger.is_quiet = not show_scons_mode
|
|
229
227
|
|
|
230
|
-
if int(os.
|
|
228
|
+
if int(os.getenv("NUITKA_QUIET", "0")):
|
|
231
229
|
setQuiet()
|
|
232
230
|
|
|
233
231
|
# Home of Python to be compiled against, used to find include files and
|
|
234
232
|
# libraries to link against.
|
|
235
233
|
python_prefix = getArgumentRequired("python_prefix")
|
|
236
234
|
|
|
235
|
+
python_prefix_external = getExternalUsePath(python_prefix)
|
|
236
|
+
|
|
237
237
|
# Forced MSVC version (windows-only)
|
|
238
238
|
msvc_version = getArgumentDefaulted("msvc_version", None)
|
|
239
239
|
|
|
@@ -261,6 +261,10 @@ python_sysflag_unicode = getArgumentBool("python_sysflag_unicode", False)
|
|
|
261
261
|
python_sysflag_utf8 = getArgumentBool("python_sysflag_utf8", False)
|
|
262
262
|
# python_sysflag_optimize
|
|
263
263
|
python_sysflag_optimize = getArgumentInt("python_sysflag_optimize", 0)
|
|
264
|
+
# python_sysflag_dontwritebytecode
|
|
265
|
+
python_sysflag_dontwritebytecode = getArgumentBool(
|
|
266
|
+
"python_sysflag_dontwritebytecode", False
|
|
267
|
+
)
|
|
264
268
|
# python_flag_no_asserts
|
|
265
269
|
python_flag_no_asserts = getArgumentBool("python_flag_no_asserts", False)
|
|
266
270
|
# python_flag_no_docstrings
|
|
@@ -287,6 +291,9 @@ cpp_include_dirs = getArgumentList("cpp_include_dirs", "")
|
|
|
287
291
|
link_dirs = getArgumentList("link_dirs", "")
|
|
288
292
|
link_libraries = getArgumentList("link_libraries", "")
|
|
289
293
|
|
|
294
|
+
# From statically compiled modules of the Python
|
|
295
|
+
link_module_libs = getArgumentList("link_module_libs", "")
|
|
296
|
+
|
|
290
297
|
# Allow automatic downloads for ccache, etc.
|
|
291
298
|
assume_yes_for_downloads = getArgumentBool("assume_yes_for_downloads", False)
|
|
292
299
|
|
|
@@ -299,6 +306,9 @@ macos_min_version = getArgumentDefaulted("macos_min_version", "")
|
|
|
299
306
|
# Target arch for macOS.
|
|
300
307
|
macos_target_arch = getArgumentDefaulted("macos_target_arch", "")
|
|
301
308
|
|
|
309
|
+
# gcc compiler cf_protection option
|
|
310
|
+
cf_protection = getArgumentDefaulted("cf_protection", "auto")
|
|
311
|
+
|
|
302
312
|
if getArgumentBool("progress_bar", True) and not show_scons_mode:
|
|
303
313
|
enableSconsProgressBar()
|
|
304
314
|
|
|
@@ -319,6 +329,7 @@ env = createEnvironment(
|
|
|
319
329
|
target_arch=target_arch,
|
|
320
330
|
experimental=experimental,
|
|
321
331
|
no_deployment=no_deployment,
|
|
332
|
+
debug_modes=debug_modes,
|
|
322
333
|
)
|
|
323
334
|
|
|
324
335
|
scons_details_logger.info("Initial CC: %r" % env.get("CC"))
|
|
@@ -335,7 +346,7 @@ if "CC" in os.environ:
|
|
|
335
346
|
elif clangcl_mode:
|
|
336
347
|
# If possible, add Clang directory from MSVC if available.
|
|
337
348
|
addClangClPathFromMSVC(env=env)
|
|
338
|
-
elif clang_mode:
|
|
349
|
+
elif clang_mode and not mingw_mode:
|
|
339
350
|
# If requested by the user, use the clang compiler, overriding what was
|
|
340
351
|
# said in environment.
|
|
341
352
|
|
|
@@ -356,9 +367,11 @@ env.the_compiler = env["CC"]
|
|
|
356
367
|
env.the_cc_name = os.path.normcase(os.path.basename(env.the_compiler))
|
|
357
368
|
env.standalone_mode = standalone_mode
|
|
358
369
|
env.debug_mode = debug_mode
|
|
370
|
+
env.debugger_mode = debugger_mode
|
|
359
371
|
env.unstripped_mode = unstripped_mode
|
|
360
|
-
env.
|
|
372
|
+
env.console_mode = console_mode
|
|
361
373
|
env.source_dir = source_dir
|
|
374
|
+
env.nuitka_src = nuitka_src
|
|
362
375
|
env.low_memory = low_memory
|
|
363
376
|
env.macos_min_version = macos_min_version
|
|
364
377
|
env.macos_target_arch = macos_target_arch
|
|
@@ -374,10 +387,25 @@ env.gcc_mode = isGccName(env.the_cc_name) or clang_mode
|
|
|
374
387
|
env.clang_mode = clang_mode
|
|
375
388
|
|
|
376
389
|
# Only use MSVC if not already clear, we are using MinGW.
|
|
377
|
-
env.msvc_mode =
|
|
378
|
-
env.mingw_mode =
|
|
390
|
+
env.msvc_mode = os.name == "nt" and not env.gcc_mode
|
|
391
|
+
env.mingw_mode = os.name == "nt" and env.gcc_mode
|
|
379
392
|
env.clangcl_mode = clangcl_mode
|
|
380
393
|
|
|
394
|
+
# For Python3.13, we need to enforce it for now to use MSVC
|
|
395
|
+
if os.name == "nt" and not env.msvc_mode and python_version >= (3, 13):
|
|
396
|
+
scons_logger.sysexit(
|
|
397
|
+
"""\
|
|
398
|
+
Sorry, non-MSVC is not currently supported with Python 3.13,
|
|
399
|
+
due to differences in layout internal structures of Python.
|
|
400
|
+
|
|
401
|
+
Newer Nuitka will work to solve this. Use Python 3.12 or
|
|
402
|
+
option "--msvc=latest" as a workaround for now and wait
|
|
403
|
+
for updates of Nuitka to add MinGW64 support back."""
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
# gcc compiler cf_protection option
|
|
407
|
+
env.cf_protection = cf_protection
|
|
408
|
+
|
|
381
409
|
# Consider switching from gcc to its g++ compiler as a workaround that makes us work without C11.
|
|
382
410
|
switchFromGccToGpp(
|
|
383
411
|
env=env,
|
|
@@ -392,7 +420,7 @@ if show_scons_mode:
|
|
|
392
420
|
my_print("Scons: Compiler used", end=" ")
|
|
393
421
|
my_print(getExecutablePath(env.the_compiler, env=env), end=" ")
|
|
394
422
|
|
|
395
|
-
if
|
|
423
|
+
if os.name == "nt" and env.msvc_mode:
|
|
396
424
|
my_print("(MSVC %s)" % getMsvcVersionString(env))
|
|
397
425
|
|
|
398
426
|
my_print()
|
|
@@ -409,6 +437,7 @@ setupCCompiler(
|
|
|
409
437
|
lto_mode=lto_mode,
|
|
410
438
|
pgo_mode=pgo_mode,
|
|
411
439
|
job_count=job_count,
|
|
440
|
+
onefile_compile=False,
|
|
412
441
|
)
|
|
413
442
|
|
|
414
443
|
|
|
@@ -422,14 +451,14 @@ if env.gcc_mode and not env.clang_mode and env.gcc_version >= (8,):
|
|
|
422
451
|
"--file-prefix-map=%s=%s" % (os.path.normpath(source_dir), "."),
|
|
423
452
|
"--file-prefix-map=%s=%s"
|
|
424
453
|
% (
|
|
425
|
-
os.path.normpath(os.path.join(source_dir, "static_src")),
|
|
426
|
-
os.path.normpath(os.path.join(nuitka_src, "static_src")),
|
|
454
|
+
os.path.normpath(os.path.join(env.source_dir, "static_src")),
|
|
455
|
+
os.path.normpath(os.path.join(env.nuitka_src, "static_src")),
|
|
427
456
|
),
|
|
428
457
|
]
|
|
429
458
|
)
|
|
430
459
|
|
|
431
460
|
if env.msvc_mode:
|
|
432
|
-
# With Clang on Windows, there is also an linker to use.
|
|
461
|
+
# With Clang on Windows, there is also an linker to use. spell-checker: ignore bigobj
|
|
433
462
|
env.Append(
|
|
434
463
|
CCFLAGS=[
|
|
435
464
|
"/EHsc", # No C++ exception handling code.
|
|
@@ -444,7 +473,7 @@ if env.msvc_mode:
|
|
|
444
473
|
|
|
445
474
|
if module_mode:
|
|
446
475
|
# Make sure we handle import library on our own and put it into the
|
|
447
|
-
# build directory
|
|
476
|
+
# build directory, spell-checker: ignore IMPLIB
|
|
448
477
|
|
|
449
478
|
no_import_lib = True
|
|
450
479
|
env.Append(
|
|
@@ -460,10 +489,19 @@ if env.debug_mode:
|
|
|
460
489
|
if env.gcc_mode:
|
|
461
490
|
# Allow gcc/clang to point out all kinds of inconsistency to us by
|
|
462
491
|
# raising an error.
|
|
492
|
+
|
|
493
|
+
if "allow-c-warnings" not in env.experimental_flags and not env.debugger_mode:
|
|
494
|
+
env.Append(
|
|
495
|
+
CCFLAGS=[
|
|
496
|
+
"-Wall",
|
|
497
|
+
"-Werror",
|
|
498
|
+
]
|
|
499
|
+
)
|
|
500
|
+
else:
|
|
501
|
+
env.Append(CCFLAGS=["-Wno-unused-but-set-variable"])
|
|
502
|
+
|
|
463
503
|
env.Append(
|
|
464
504
|
CCFLAGS=[
|
|
465
|
-
"-Wall",
|
|
466
|
-
"-Werror",
|
|
467
505
|
# Unfortunately Py_INCREF(Py_False) triggers aliasing warnings,
|
|
468
506
|
# which are unfounded, so disable them.
|
|
469
507
|
"-Wno-error=strict-aliasing",
|
|
@@ -495,6 +533,9 @@ if env.debug_mode:
|
|
|
495
533
|
if python_version >= (3, 4):
|
|
496
534
|
env.Append(CCFLAGS=["/wd4512", "/wd4510", "/wd4610"])
|
|
497
535
|
|
|
536
|
+
if python_version >= (3, 13):
|
|
537
|
+
env.Append(CCFLAGS=["/wd4324"])
|
|
538
|
+
|
|
498
539
|
# We use null arrays in our structure Python declarations, which C11 does
|
|
499
540
|
# not really allow, but should work.
|
|
500
541
|
env.Append(CCFLAGS=["/wd4200"])
|
|
@@ -515,6 +556,9 @@ if trace_mode:
|
|
|
515
556
|
if env.standalone_mode:
|
|
516
557
|
env.Append(CPPDEFINES=["_NUITKA_STANDALONE"])
|
|
517
558
|
|
|
559
|
+
if macos_bundle_mode:
|
|
560
|
+
env.Append(CPPDEFINES=["_NUITKA_MACOS_BUNDLE"])
|
|
561
|
+
|
|
518
562
|
if onefile_mode:
|
|
519
563
|
env.Append(CPPDEFINES=["_NUITKA_ONEFILE_MODE"])
|
|
520
564
|
|
|
@@ -538,44 +582,17 @@ if env.static_libpython:
|
|
|
538
582
|
env.Append(CPPDEFINES=["Py_NO_ENABLE_SHARED"])
|
|
539
583
|
|
|
540
584
|
|
|
541
|
-
def detectHostMultiArch():
|
|
542
|
-
stdout = check_output("dpkg-architecture")
|
|
543
|
-
|
|
544
|
-
for line in stdout.splitlines():
|
|
545
|
-
line = line.strip()
|
|
546
|
-
|
|
547
|
-
if line.startswith(b"DEB_HOST_MULTI_ARCH="):
|
|
548
|
-
return line.split("=", 1)[1].decode("utf8")
|
|
549
|
-
|
|
550
|
-
return None
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
if env.gcc_mode and env.debian_python:
|
|
554
|
-
# TODO: Seems rather meaningless nowadays and hard codes this to not be
|
|
555
|
-
# self compiled or so.
|
|
556
|
-
if python_version == (3, 3):
|
|
557
|
-
host_multi_arch = detectHostMultiArch()
|
|
558
|
-
|
|
559
|
-
if host_multi_arch is not None:
|
|
560
|
-
env.Append(
|
|
561
|
-
CCFLAGS=[
|
|
562
|
-
"-I"
|
|
563
|
-
+ os.path.join(
|
|
564
|
-
"/usr/include/", host_multi_arch, "python" + python_abi_version
|
|
565
|
-
)
|
|
566
|
-
]
|
|
567
|
-
)
|
|
568
|
-
|
|
569
|
-
|
|
570
585
|
def _detectPythonHeaderPath():
|
|
571
|
-
if
|
|
586
|
+
if os.name == "nt":
|
|
572
587
|
# On Windows, the CPython installation layout is relatively fixed, but on MSYS2
|
|
573
588
|
# compiled for mingw64, it's more standard.
|
|
574
589
|
|
|
575
590
|
candidates = [
|
|
576
|
-
os.path.join(
|
|
591
|
+
os.path.join(python_prefix_external, "include"),
|
|
577
592
|
# On MSYS2 with MinGW64 Python, it is also the other form.
|
|
578
|
-
os.path.join(
|
|
593
|
+
os.path.join(
|
|
594
|
+
python_prefix_external, "include", "python" + python_abi_version
|
|
595
|
+
),
|
|
579
596
|
]
|
|
580
597
|
else:
|
|
581
598
|
# The python header path is a combination of python version and debug
|
|
@@ -583,10 +600,14 @@ def _detectPythonHeaderPath():
|
|
|
583
600
|
# include path.
|
|
584
601
|
|
|
585
602
|
candidates = [
|
|
586
|
-
os.path.join(
|
|
603
|
+
os.path.join(
|
|
604
|
+
python_prefix_external, "include", "python" + python_abi_version
|
|
605
|
+
),
|
|
606
|
+
# CPython source code checkout
|
|
607
|
+
os.path.join(python_prefix_external, "Include"),
|
|
587
608
|
# Haiku specific paths:
|
|
588
609
|
os.path.join(
|
|
589
|
-
|
|
610
|
+
python_prefix_external, "develop/headers", "python" + python_abi_version
|
|
590
611
|
),
|
|
591
612
|
]
|
|
592
613
|
|
|
@@ -594,7 +615,7 @@ def _detectPythonHeaderPath():
|
|
|
594
615
|
if python_debug and "d" in python_abi_version:
|
|
595
616
|
candidates.append(
|
|
596
617
|
os.path.join(
|
|
597
|
-
|
|
618
|
+
python_prefix_external,
|
|
598
619
|
"include",
|
|
599
620
|
"python" + python_abi_version.replace("d", ""),
|
|
600
621
|
)
|
|
@@ -602,55 +623,67 @@ def _detectPythonHeaderPath():
|
|
|
602
623
|
|
|
603
624
|
for candidate in candidates:
|
|
604
625
|
if os.path.exists(os.path.join(candidate, "Python.h")):
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
if win_target:
|
|
608
|
-
scons_logger.sysexit(
|
|
609
|
-
"""Error, you seem to be using the unsupported embeddable CPython distribution."""
|
|
610
|
-
)
|
|
626
|
+
yield candidate
|
|
627
|
+
break
|
|
611
628
|
else:
|
|
612
|
-
|
|
613
|
-
|
|
629
|
+
if os.name == "nt":
|
|
630
|
+
scons_logger.sysexit(
|
|
631
|
+
"""\
|
|
632
|
+
Error, you seem to be using the unsupported embeddable CPython distribution \
|
|
633
|
+
use a full Python instead."""
|
|
634
|
+
)
|
|
635
|
+
else:
|
|
636
|
+
scons_logger.sysexit(
|
|
637
|
+
"""\
|
|
614
638
|
Error, no 'Python.h' %s headers can be found at '%s', dependency \
|
|
615
639
|
not satisfied!"""
|
|
616
|
-
|
|
617
|
-
|
|
640
|
+
% ("debug" if python_debug else "development", candidates)
|
|
641
|
+
)
|
|
618
642
|
|
|
643
|
+
if python_version >= (3, 13):
|
|
644
|
+
yield os.path.join(candidate, "internal", "mimalloc")
|
|
619
645
|
|
|
620
|
-
env.
|
|
646
|
+
if env.self_compiled_python_uninstalled:
|
|
647
|
+
yield python_prefix_external
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
env.Append(CPPPATH=list(_detectPythonHeaderPath()))
|
|
621
651
|
|
|
622
652
|
# To support self-built Python on Windows, need to also add the "PC" directory,
|
|
623
653
|
# that a normal install won't have.
|
|
624
654
|
if os.name == "nt":
|
|
625
|
-
python_header_path = os.path.join(
|
|
655
|
+
python_header_path = os.path.join(python_prefix_external, "PC")
|
|
626
656
|
|
|
627
657
|
if os.path.exists(python_header_path):
|
|
628
658
|
env.Append(CPPPATH=[python_header_path])
|
|
629
659
|
|
|
630
|
-
|
|
631
|
-
def getWindowsPythonDLLPath():
|
|
632
|
-
return os.environ["NUITKA_PYTHON_DLL_PATH"]
|
|
633
|
-
|
|
634
|
-
|
|
635
660
|
if env.nuitka_python:
|
|
636
661
|
env.Append(CPPDEFINES=["_NUITKA_PYTHON"])
|
|
637
662
|
|
|
638
663
|
if env.static_libpython:
|
|
639
664
|
env.Append(CPPDEFINES=["_NUITKA_STATIC_LIBPYTHON"])
|
|
640
665
|
|
|
641
|
-
if
|
|
666
|
+
if not gil_mode:
|
|
667
|
+
env.Append(CPPDEFINES="Py_GIL_DISABLED")
|
|
668
|
+
|
|
669
|
+
# TODO: This ought to be decided outside of scons and per flavor maybe.
|
|
670
|
+
if env.static_libpython and (
|
|
671
|
+
(not os.name == "nt" and not isMacOS()) or env.nuitka_python
|
|
672
|
+
):
|
|
642
673
|
env.Append(CPPDEFINES=["_NUITKA_USE_UNEXPOSED_API"])
|
|
643
674
|
|
|
644
|
-
if
|
|
675
|
+
if os.name == "nt":
|
|
645
676
|
if env.nuitka_python:
|
|
646
677
|
env.Append(
|
|
647
678
|
LINKFLAGS=[
|
|
648
679
|
"/LTCG",
|
|
649
|
-
"/USEPROFILE:PGD=" + os.path.join(
|
|
680
|
+
"/USEPROFILE:PGD=" + os.path.join(python_prefix_external, "python.pgd"),
|
|
650
681
|
]
|
|
651
682
|
)
|
|
652
683
|
|
|
653
|
-
link_data = loadJsonFromFilename(
|
|
684
|
+
link_data = loadJsonFromFilename(
|
|
685
|
+
os.path.join(python_prefix_external, "link.json")
|
|
686
|
+
)
|
|
654
687
|
env.Append(LIBS=link_data["libraries"])
|
|
655
688
|
env.Append(LIBPATH=link_data["library_dirs"])
|
|
656
689
|
for define, value in link_data["macros"]:
|
|
@@ -683,7 +716,7 @@ if win_target:
|
|
|
683
716
|
pc_build_dir = "PCBuild"
|
|
684
717
|
|
|
685
718
|
for candidate in ("libs", pc_build_dir):
|
|
686
|
-
win_lib_path = os.path.join(
|
|
719
|
+
win_lib_path = os.path.join(python_prefix_external, candidate)
|
|
687
720
|
|
|
688
721
|
if os.path.exists(os.path.join(win_lib_path, win_lib_name + ".lib")):
|
|
689
722
|
break
|
|
@@ -697,17 +730,26 @@ if win_target:
|
|
|
697
730
|
addWinLib()
|
|
698
731
|
elif not module_mode:
|
|
699
732
|
# Add the python library path to the library path
|
|
700
|
-
|
|
733
|
+
if env.self_compiled_python_uninstalled:
|
|
734
|
+
python_lib_path = python_prefix_external
|
|
735
|
+
else:
|
|
736
|
+
python_lib_path = os.path.join(python_prefix_external, "lib")
|
|
737
|
+
|
|
701
738
|
env.Append(LIBPATH=[python_lib_path])
|
|
702
739
|
|
|
740
|
+
# Any module libs that are for self-compiled Python to be static.
|
|
741
|
+
env.Append(_LIBFLAGS=["-l" + lib_desc for lib_desc in link_module_libs])
|
|
742
|
+
|
|
703
743
|
if env.nuitka_python:
|
|
704
|
-
link_data = loadJsonFromFilename(
|
|
744
|
+
link_data = loadJsonFromFilename(
|
|
745
|
+
os.path.join(python_prefix_external, "link.json")
|
|
746
|
+
)
|
|
705
747
|
for lib in link_data["libraries"]:
|
|
706
748
|
# Need to prevent Scons from stripping .a from the passed in libs.
|
|
707
|
-
if
|
|
708
|
-
env.Append(_LIBFLAGS=[lib])
|
|
709
|
-
elif lib.startswith(":") and lib.endswith(".a"):
|
|
749
|
+
if lib.startswith(":") and lib.endswith(".a"):
|
|
710
750
|
env.Append(_LIBFLAGS=["-l" + lib])
|
|
751
|
+
elif os.path.isfile(lib):
|
|
752
|
+
env.Append(_LIBFLAGS=[lib])
|
|
711
753
|
else:
|
|
712
754
|
env.Append(LIBS=[lib])
|
|
713
755
|
env.Append(LIBPATH=link_data["library_dirs"])
|
|
@@ -725,19 +767,22 @@ elif not module_mode:
|
|
|
725
767
|
env.Append(LIBS=[env.File(env.static_libpython)])
|
|
726
768
|
|
|
727
769
|
# The linker won't succeed in searching for those for system Python of Debian
|
|
728
|
-
# compiled Pythons. Help that.
|
|
729
|
-
if
|
|
770
|
+
# compiled Pythons. Help that. spell-checker: ignore rdynamic,Xlinker,pthread
|
|
771
|
+
if python_prefix_external == "/usr" and isDebianBasedLinux():
|
|
730
772
|
env.Append(LIBS=["z", "m", "util", "pthread"])
|
|
731
773
|
|
|
732
774
|
if python_version >= (3,):
|
|
733
775
|
env.Append(LIBS=["expat"])
|
|
734
776
|
|
|
735
777
|
env.Append(LINKFLAGS=["-Xlinker", "-export-dynamic", "-rdynamic"])
|
|
778
|
+
|
|
779
|
+
if env.arch_python:
|
|
780
|
+
env.Append(LINKFLAGS=["-rdynamic"])
|
|
736
781
|
else:
|
|
737
782
|
# Fedora, Debian and Ubuntu distinguish the system libraries like this.
|
|
738
783
|
if (
|
|
739
784
|
python_debug
|
|
740
|
-
and
|
|
785
|
+
and python_prefix_external == "/usr"
|
|
741
786
|
and python_version < (3,)
|
|
742
787
|
and (isDebianBasedLinux() or isFedoraBasedLinux())
|
|
743
788
|
):
|
|
@@ -745,7 +790,7 @@ elif not module_mode:
|
|
|
745
790
|
else:
|
|
746
791
|
env.Append(LIBS=["python" + python_abi_version])
|
|
747
792
|
|
|
748
|
-
if
|
|
793
|
+
if python_prefix_external != "/usr" and "linux" in sys.platform:
|
|
749
794
|
env.Append(LIBS=["dl", "pthread", "util", "rt", "m"])
|
|
750
795
|
|
|
751
796
|
if env.gcc_mode:
|
|
@@ -764,11 +809,12 @@ if isMacOS():
|
|
|
764
809
|
env.Append(LINKFLAGS=["-undefined", "dynamic_lookup"])
|
|
765
810
|
else:
|
|
766
811
|
# For macOS we need to make sure install_name_tool can do its work
|
|
812
|
+
# spell-checker: ignore headerpad
|
|
767
813
|
env.Append(LINKFLAGS=["-headerpad_max_install_names"])
|
|
768
814
|
|
|
769
815
|
# The static include files reside in Nuitka installation, which may be where
|
|
770
816
|
# the "nuitka.build" package lives.
|
|
771
|
-
nuitka_include = os.path.join(nuitka_src, "include")
|
|
817
|
+
nuitka_include = os.path.join(env.nuitka_src, "include")
|
|
772
818
|
|
|
773
819
|
if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
|
|
774
820
|
scons_logger.sysexit(
|
|
@@ -778,10 +824,29 @@ if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
|
|
|
778
824
|
|
|
779
825
|
# We have include files in the build directory and the static include directory
|
|
780
826
|
# that is located inside Nuitka installation.
|
|
781
|
-
env.Append(
|
|
827
|
+
env.Append(
|
|
828
|
+
CPPPATH=[
|
|
829
|
+
source_dir,
|
|
830
|
+
nuitka_include,
|
|
831
|
+
os.path.join(env.nuitka_src, "static_src"),
|
|
832
|
+
os.path.join(env.nuitka_src, "inline_copy", "libbacktrace"),
|
|
833
|
+
]
|
|
834
|
+
)
|
|
835
|
+
|
|
836
|
+
if env.static_libpython and python_version >= (3, 12):
|
|
837
|
+
env.Append(
|
|
838
|
+
CPPPATH=[
|
|
839
|
+
os.path.join(env.nuitka_src, "inline_copy", "python_hacl", "hacl_312"),
|
|
840
|
+
os.path.join(
|
|
841
|
+
env.nuitka_src, "inline_copy", "python_hacl", "hacl_312", "include"
|
|
842
|
+
),
|
|
843
|
+
]
|
|
844
|
+
)
|
|
845
|
+
|
|
846
|
+
env.Append(CPPDEFINES=["_NUITKA_INLINE_COPY_HACL"])
|
|
782
847
|
|
|
783
848
|
# Set load libpython from binary directory default
|
|
784
|
-
if env.gcc_mode and not isMacOS() and not
|
|
849
|
+
if env.gcc_mode and not isMacOS() and not os.name == "nt" and not module_mode:
|
|
785
850
|
if env.standalone_mode:
|
|
786
851
|
rpath = "$$ORIGIN"
|
|
787
852
|
else:
|
|
@@ -792,6 +857,7 @@ if env.gcc_mode and not isMacOS() and not win_target and not module_mode:
|
|
|
792
857
|
# The rpath is no longer used unless we do this on modern Linux. The
|
|
793
858
|
# option name is not very revealing, but basically without this, the
|
|
794
859
|
# rpath in the binary will be ignored by the loader.
|
|
860
|
+
# spell-checker: ignore dtags
|
|
795
861
|
if "linux" in sys.platform:
|
|
796
862
|
env.Append(LINKFLAGS=["-Wl,--disable-new-dtags"])
|
|
797
863
|
|
|
@@ -820,8 +886,8 @@ else:
|
|
|
820
886
|
# For complete outputs, we have to match the C runtime of the Python DLL, if any,
|
|
821
887
|
# for Nuitka-Python there is of course none.
|
|
822
888
|
if not env.nuitka_python and (
|
|
823
|
-
forced_stdout_path not in ("
|
|
824
|
-
or forced_stderr_path not in ("
|
|
889
|
+
forced_stdout_path not in ("{NONE}", "{NULL}", None)
|
|
890
|
+
or forced_stderr_path not in ("{NONE}", "{NULL}", None)
|
|
825
891
|
):
|
|
826
892
|
env.Append(CCFLAGS=["/MD"]) # Multithreaded, dynamic version of C run time.
|
|
827
893
|
else:
|
|
@@ -857,9 +923,8 @@ def discoverSourceFiles():
|
|
|
857
923
|
|
|
858
924
|
result += [
|
|
859
925
|
provideStaticSourceFile(
|
|
926
|
+
env=env,
|
|
860
927
|
sub_path=filename,
|
|
861
|
-
nuitka_src=nuitka_src,
|
|
862
|
-
source_dir=source_dir,
|
|
863
928
|
c11_mode=env.c11_mode,
|
|
864
929
|
)
|
|
865
930
|
for filename in static_src_filenames
|
|
@@ -870,13 +935,39 @@ def discoverSourceFiles():
|
|
|
870
935
|
|
|
871
936
|
source_files = discoverSourceFiles()
|
|
872
937
|
|
|
938
|
+
# Remove the target file to avoid cases where it falsely doesn't get rebuild
|
|
939
|
+
# and then lingers from previous builds,
|
|
940
|
+
deleteFile(result_exe, must_exist=False)
|
|
941
|
+
|
|
942
|
+
# Workaround for MinGW64 not supporting unicode result paths for "-o" basename.
|
|
943
|
+
if os.name == "nt" and not isFilesystemEncodable(result_exe):
|
|
944
|
+
result_exe = os.path.join(
|
|
945
|
+
os.path.dirname(result_exe),
|
|
946
|
+
"_nuitka_temp.pyd" if module_mode else "_nuitka_temp.exe",
|
|
947
|
+
)
|
|
948
|
+
|
|
949
|
+
if not isFilesystemEncodable(result_exe):
|
|
950
|
+
result_exe = getNormalizedPath(os.path.relpath(result_exe))
|
|
951
|
+
|
|
952
|
+
deleteFile(result_exe, must_exist=False)
|
|
953
|
+
|
|
873
954
|
if module_mode:
|
|
874
|
-
# For Python modules, the standard shared library extension is not what
|
|
875
|
-
#
|
|
955
|
+
# For Python modules, the standard shared library extension is not what gets
|
|
956
|
+
# used. spell-checker: ignore SHLIBSUFFIX
|
|
957
|
+
module_suffix = getFilenameExtension(result_exe)
|
|
958
|
+
result_base_path = changeFilenameExtension(result_exe, "")
|
|
959
|
+
|
|
960
|
+
extra_suffix = getFilenameExtension(result_base_path)
|
|
961
|
+
if extra_suffix != "":
|
|
962
|
+
module_suffix = extra_suffix + module_suffix
|
|
963
|
+
result_base_path = changeFilenameExtension(result_base_path, "")
|
|
964
|
+
|
|
965
|
+
assert getFilenameExtension(result_base_path) == "", result_base_path
|
|
966
|
+
|
|
876
967
|
env["SHLIBSUFFIX"] = module_suffix
|
|
877
968
|
|
|
878
969
|
target = env.SharedLibrary(
|
|
879
|
-
|
|
970
|
+
result_base_path, source_files, no_import_lib=no_import_lib
|
|
880
971
|
)
|
|
881
972
|
else:
|
|
882
973
|
target = env.Program(result_exe, source_files)
|
|
@@ -884,10 +975,6 @@ else:
|
|
|
884
975
|
# Use compiler/linker flags provided via environment variables
|
|
885
976
|
importEnvironmentVariableSettings(env)
|
|
886
977
|
|
|
887
|
-
# Remove the target file to avoid cases where it falsely doesn't get rebuild
|
|
888
|
-
# and then lingers from previous builds,
|
|
889
|
-
if os.path.exists(target[0].abspath):
|
|
890
|
-
os.unlink(target[0].abspath)
|
|
891
978
|
|
|
892
979
|
if job_count:
|
|
893
980
|
scons_details_logger.info("Told to run compilation on %d CPUs." % job_count)
|
|
@@ -897,6 +984,7 @@ def createBuildDefinitionsFile():
|
|
|
897
984
|
build_definitions = {}
|
|
898
985
|
|
|
899
986
|
if uninstalled_python and not env.static_libpython:
|
|
987
|
+
# Use the non-external one, so it's not a short path.
|
|
900
988
|
build_definitions["PYTHON_HOME_PATH"] = python_prefix
|
|
901
989
|
|
|
902
990
|
build_definitions["NO_PYTHON_WARNINGS"] = 1 if no_python_warnings else 0
|
|
@@ -924,6 +1012,10 @@ def createBuildDefinitionsFile():
|
|
|
924
1012
|
|
|
925
1013
|
build_definitions["SYSFLAG_OPTIMIZE"] = python_sysflag_optimize
|
|
926
1014
|
|
|
1015
|
+
build_definitions["SYSFLAG_DONTWRITEBYTECODE"] = (
|
|
1016
|
+
1 if python_sysflag_dontwritebytecode else 0
|
|
1017
|
+
)
|
|
1018
|
+
|
|
927
1019
|
build_definitions["_NUITKA_NO_ASSERTS"] = 1 if python_flag_no_asserts else 0
|
|
928
1020
|
|
|
929
1021
|
build_definitions["_NUITKA_NO_DOCSTRINGS"] = 1 if python_flag_no_docstrings else 0
|
|
@@ -939,25 +1031,23 @@ def createBuildDefinitionsFile():
|
|
|
939
1031
|
build_definitions["SYSFLAG_ISOLATED"] = 1 if python_sysflag_isolated else 0
|
|
940
1032
|
|
|
941
1033
|
if forced_stdout_path:
|
|
942
|
-
if forced_stdout_path == "
|
|
1034
|
+
if forced_stdout_path == "{NONE}":
|
|
943
1035
|
build_definitions["NUITKA_FORCED_STDOUT_NONE_BOOL"] = 1
|
|
944
|
-
elif forced_stdout_path == "
|
|
1036
|
+
elif forced_stdout_path == "{NULL}":
|
|
945
1037
|
build_definitions["NUITKA_FORCED_STDOUT_NULL_BOOL"] = 1
|
|
946
1038
|
else:
|
|
947
1039
|
build_definitions["NUITKA_FORCED_STDOUT_PATH"] = forced_stdout_path
|
|
948
1040
|
|
|
949
1041
|
if forced_stderr_path:
|
|
950
|
-
if forced_stderr_path == "
|
|
1042
|
+
if forced_stderr_path == "{NONE}":
|
|
951
1043
|
build_definitions["NUITKA_FORCED_STDERR_NONE_BOOL"] = 1
|
|
952
|
-
elif forced_stderr_path == "
|
|
1044
|
+
elif forced_stderr_path == "{NULL}":
|
|
953
1045
|
build_definitions["NUITKA_FORCED_STDERR_NULL_BOOL"] = 1
|
|
954
1046
|
else:
|
|
955
1047
|
build_definitions["NUITKA_FORCED_STDERR_PATH"] = forced_stderr_path
|
|
956
1048
|
|
|
957
1049
|
build_definitions["NUITKA_MAIN_MODULE_NAME"] = main_module_name
|
|
958
|
-
|
|
959
|
-
if main_module_name != "__main__":
|
|
960
|
-
build_definitions["NUITKA_MAIN_PACKAGE_MODE"] = 1
|
|
1050
|
+
build_definitions["NUITKA_MAIN_IS_PACKAGE_BOOL"] = main_module_name != "__main__"
|
|
961
1051
|
|
|
962
1052
|
createDefinitionsFile(source_dir, "build_definitions.h", build_definitions)
|
|
963
1053
|
|
|
@@ -966,7 +1056,7 @@ if forced_stderr_path and not forced_stdout_path:
|
|
|
966
1056
|
env.Append(CPPDEFINES=["NUITKA_STDERR_NOT_VISIBLE"])
|
|
967
1057
|
|
|
968
1058
|
if file_reference_mode == "original":
|
|
969
|
-
env.Append(CPPDEFINES=["
|
|
1059
|
+
env.Append(CPPDEFINES=["_NUITKA_FILE_REFERENCE_ORIGINAL_MODE"])
|
|
970
1060
|
|
|
971
1061
|
|
|
972
1062
|
createBuildDefinitionsFile()
|
|
@@ -998,7 +1088,6 @@ env.Append(LIBS=link_libraries)
|
|
|
998
1088
|
# Work around windows bugs and use watchdogs to track progress of compilation.
|
|
999
1089
|
enableSpawnMonitoring(
|
|
1000
1090
|
env=env,
|
|
1001
|
-
win_target=win_target,
|
|
1002
1091
|
module_mode=module_mode,
|
|
1003
1092
|
source_files=source_files,
|
|
1004
1093
|
)
|
|
@@ -1008,12 +1097,13 @@ enableSpawnMonitoring(
|
|
|
1008
1097
|
changeKeyboardInterruptToErrorExit()
|
|
1009
1098
|
|
|
1010
1099
|
# Check if ccache is installed, and complain if it is not.
|
|
1011
|
-
if env.gcc_mode
|
|
1100
|
+
if env.gcc_mode:
|
|
1012
1101
|
enableCcache(
|
|
1013
1102
|
env=env,
|
|
1014
1103
|
source_dir=source_dir,
|
|
1015
|
-
python_prefix=
|
|
1104
|
+
python_prefix=python_prefix_external,
|
|
1016
1105
|
assume_yes_for_downloads=assume_yes_for_downloads,
|
|
1106
|
+
disable_ccache=disable_ccache,
|
|
1017
1107
|
)
|
|
1018
1108
|
|
|
1019
1109
|
if env.msvc_mode and not disable_ccache:
|
|
@@ -1022,12 +1112,24 @@ if env.msvc_mode and not disable_ccache:
|
|
|
1022
1112
|
source_dir=source_dir,
|
|
1023
1113
|
)
|
|
1024
1114
|
|
|
1025
|
-
writeSconsReport(
|
|
1026
|
-
env=env,
|
|
1027
|
-
source_dir=source_dir,
|
|
1028
|
-
)
|
|
1115
|
+
writeSconsReport(env=env, target=target)
|
|
1029
1116
|
|
|
1030
1117
|
setSconsProgressBarTotal(name=env.progressbar_name, total=len(source_files))
|
|
1031
1118
|
|
|
1032
1119
|
scons_details_logger.info("Launching Scons target: %s" % target)
|
|
1033
1120
|
env.Default(target)
|
|
1121
|
+
|
|
1122
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1123
|
+
# integrates with CPython, but also works on its own.
|
|
1124
|
+
#
|
|
1125
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1126
|
+
# you may not use this file except in compliance with the License.
|
|
1127
|
+
# You may obtain a copy of the License at
|
|
1128
|
+
#
|
|
1129
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1130
|
+
#
|
|
1131
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1132
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1133
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1134
|
+
# See the License for the specific language governing permissions and
|
|
1135
|
+
# limitations under the License.
|