Nuitka-winsvc 2.7.7__cp313-cp313-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/Builtins.py +259 -0
- nuitka/BytecodeCaching.py +184 -0
- nuitka/Bytecodes.py +109 -0
- nuitka/CacheCleanup.py +54 -0
- nuitka/Constants.py +425 -0
- nuitka/Errors.py +93 -0
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +1201 -0
- nuitka/ModuleRegistry.py +364 -0
- nuitka/OptionParsing.py +2473 -0
- nuitka/Options.py +2948 -0
- nuitka/OutputDirectories.py +201 -0
- nuitka/PostProcessing.py +551 -0
- nuitka/Progress.py +252 -0
- nuitka/PythonFlavors.py +426 -0
- nuitka/PythonOperators.py +146 -0
- nuitka/PythonVersions.py +513 -0
- nuitka/Serialization.py +291 -0
- nuitka/SourceCodeReferences.py +176 -0
- nuitka/Tracing.py +579 -0
- nuitka/TreeXML.py +141 -0
- nuitka/Variables.py +515 -0
- nuitka/Version.py +88 -0
- nuitka/__init__.py +19 -0
- nuitka/__main__.py +224 -0
- nuitka/__past__.py +217 -0
- nuitka/build/Backend.scons +1111 -0
- nuitka/build/CCompilerVersion.scons +281 -0
- nuitka/build/DataComposerInterface.py +116 -0
- nuitka/build/Offsets.scons +626 -0
- nuitka/build/Onefile.scons +564 -0
- nuitka/build/SconsCaching.py +451 -0
- nuitka/build/SconsCompilerSettings.py +1133 -0
- nuitka/build/SconsHacks.py +215 -0
- nuitka/build/SconsInterface.py +664 -0
- nuitka/build/SconsProgress.py +100 -0
- nuitka/build/SconsSpawn.py +436 -0
- nuitka/build/SconsUtils.py +939 -0
- nuitka/build/__init__.py +19 -0
- nuitka/build/include/nuitka/allocator.h +450 -0
- nuitka/build/include/nuitka/builtins.h +97 -0
- nuitka/build/include/nuitka/calling.h +123 -0
- nuitka/build/include/nuitka/checkers.h +39 -0
- nuitka/build/include/nuitka/checksum_tools.h +28 -0
- nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
- nuitka/build/include/nuitka/compiled_cell.h +64 -0
- nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
- nuitka/build/include/nuitka/compiled_frame.h +502 -0
- nuitka/build/include/nuitka/compiled_function.h +170 -0
- nuitka/build/include/nuitka/compiled_generator.h +287 -0
- nuitka/build/include/nuitka/compiled_method.h +54 -0
- nuitka/build/include/nuitka/constants.h +251 -0
- nuitka/build/include/nuitka/constants_blob.h +34 -0
- 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 +51 -0
- nuitka/build/include/nuitka/exception_groups.h +167 -0
- nuitka/build/include/nuitka/exceptions.h +1458 -0
- nuitka/build/include/nuitka/filesystem_paths.h +117 -0
- nuitka/build/include/nuitka/freelists.h +92 -0
- nuitka/build/include/nuitka/hedley.h +1774 -0
- nuitka/build/include/nuitka/helper/attributes.h +90 -0
- nuitka/build/include/nuitka/helper/boolean.h +86 -0
- nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
- nuitka/build/include/nuitka/helper/bytes.h +28 -0
- nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
- 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 +247 -0
- nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
- nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
- nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
- nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
- nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
- nuitka/build/include/nuitka/helper/complex.h +46 -0
- nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
- nuitka/build/include/nuitka/helper/floats.h +32 -0
- nuitka/build/include/nuitka/helper/import_hard.h +121 -0
- nuitka/build/include/nuitka/helper/indexes.h +47 -0
- nuitka/build/include/nuitka/helper/ints.h +165 -0
- nuitka/build/include/nuitka/helper/iterators.h +376 -0
- nuitka/build/include/nuitka/helper/lists.h +94 -0
- nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
- nuitka/build/include/nuitka/helper/mappings.h +39 -0
- nuitka/build/include/nuitka/helper/operations.h +114 -0
- nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
- nuitka/build/include/nuitka/helper/raising.h +114 -0
- nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
- nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
- nuitka/build/include/nuitka/helper/sequences.h +33 -0
- nuitka/build/include/nuitka/helper/sets.h +25 -0
- nuitka/build/include/nuitka/helper/slices.h +314 -0
- nuitka/build/include/nuitka/helper/strings.h +30 -0
- nuitka/build/include/nuitka/helper/subscripts.h +390 -0
- nuitka/build/include/nuitka/helper/tuples.h +187 -0
- nuitka/build/include/nuitka/helpers.h +417 -0
- nuitka/build/include/nuitka/importing.h +149 -0
- nuitka/build/include/nuitka/incbin.h +402 -0
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +626 -0
- nuitka/build/include/nuitka/printing.h +84 -0
- nuitka/build/include/nuitka/python_pgo.h +57 -0
- nuitka/build/include/nuitka/safe_string_ops.h +57 -0
- nuitka/build/include/nuitka/threading.h +142 -0
- nuitka/build/include/nuitka/tracing.h +82 -0
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +91 -0
- nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
- nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
- nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
- nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
- nuitka/build/inline_copy/bin/scons.py +58 -0
- nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
- nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
- nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
- nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
- nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
- nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
- nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
- nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
- nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
- nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
- nuitka/build/inline_copy/glob2/LICENSE +27 -0
- nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
- nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
- nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
- nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
- nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
- nuitka/build/inline_copy/jinja2/README.rst +2 -0
- nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
- nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
- nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
- nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
- nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
- nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
- nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
- nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
- nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
- nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
- nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
- nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
- nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
- nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
- nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
- nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
- nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
- nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
- nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
- nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
- nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
- nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
- nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
- nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
- nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
- nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
- nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
- nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
- nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
- nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
- nuitka/build/inline_copy/pefile/pefile.py +8034 -0
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
- nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
- 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 +484 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
- nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
- nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
- nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
- nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
- nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
- nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
- nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
- nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
- nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
- nuitka/build/inline_copy/yaml/LICENSE +20 -0
- nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
- nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
- nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
- nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
- nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
- nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
- nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
- nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
- nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
- nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
- nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
- nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
- nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
- nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
- nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
- nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
- nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
- 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/inline_copy/zstd/LICENSE.txt +30 -0
- nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
- nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
- nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
- nuitka/build/inline_copy/zstd/common/debug.h +107 -0
- nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
- nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
- nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
- nuitka/build/inline_copy/zstd/common/fse.h +715 -0
- nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
- nuitka/build/inline_copy/zstd/common/huf.h +361 -0
- nuitka/build/inline_copy/zstd/common/mem.h +426 -0
- nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
- nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
- nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
- nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
- nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
- nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
- nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
- nuitka/build/inline_copy/zstd/zstd.h +2391 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
- nuitka/build/static_src/CompiledCellType.c +300 -0
- nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
- nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
- nuitka/build/static_src/CompiledFrameType.c +1337 -0
- nuitka/build/static_src/CompiledFunctionType.c +3320 -0
- nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
- nuitka/build/static_src/CompiledMethodType.c +614 -0
- nuitka/build/static_src/GenerateHeadersMain.c +30 -0
- nuitka/build/static_src/HelpersAllocator.c +939 -0
- nuitka/build/static_src/HelpersAttributes.c +1241 -0
- nuitka/build/static_src/HelpersBuiltin.c +901 -0
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
- nuitka/build/static_src/HelpersBytes.c +107 -0
- nuitka/build/static_src/HelpersCalling.c +397 -0
- nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
- nuitka/build/static_src/HelpersChecksumTools.c +59 -0
- nuitka/build/static_src/HelpersClasses.c +91 -0
- 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 +12070 -0
- nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
- nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
- nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
- nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
- nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
- nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
- nuitka/build/static_src/HelpersConsole.c +124 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
- nuitka/build/static_src/HelpersDeepcopy.c +636 -0
- nuitka/build/static_src/HelpersDictionaries.c +1739 -0
- nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
- nuitka/build/static_src/HelpersExceptions.c +298 -0
- nuitka/build/static_src/HelpersFiles.c +353 -0
- nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
- nuitka/build/static_src/HelpersFloats.c +92 -0
- nuitka/build/static_src/HelpersHeapStorage.c +68 -0
- nuitka/build/static_src/HelpersImport.c +506 -0
- nuitka/build/static_src/HelpersImportHard.c +526 -0
- nuitka/build/static_src/HelpersJitSources.c +48 -0
- nuitka/build/static_src/HelpersLists.c +899 -0
- nuitka/build/static_src/HelpersListsGenerated.c +564 -0
- nuitka/build/static_src/HelpersMappings.c +46 -0
- nuitka/build/static_src/HelpersMatching.c +192 -0
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
- nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
- nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
- nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
- nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
- nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
- nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
- nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
- nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
- nuitka/build/static_src/HelpersProfiling.c +104 -0
- nuitka/build/static_src/HelpersPythonPgo.c +113 -0
- nuitka/build/static_src/HelpersRaising.c +447 -0
- nuitka/build/static_src/HelpersSafeStrings.c +185 -0
- nuitka/build/static_src/HelpersSequences.c +134 -0
- nuitka/build/static_src/HelpersSlices.c +73 -0
- nuitka/build/static_src/HelpersStrings.c +998 -0
- nuitka/build/static_src/HelpersTuples.c +148 -0
- nuitka/build/static_src/HelpersTypes.c +329 -0
- nuitka/build/static_src/InspectPatcher.c +439 -0
- nuitka/build/static_src/MainProgram.c +2060 -0
- nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
- nuitka/build/static_src/OnefileBootstrap.c +1580 -0
- nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
- nuitka/code_generation/AsyncgenCodes.py +186 -0
- nuitka/code_generation/AttributeCodes.py +357 -0
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
- nuitka/code_generation/BranchCodes.py +67 -0
- nuitka/code_generation/BuiltinCodes.py +529 -0
- nuitka/code_generation/CallCodes.py +1186 -0
- nuitka/code_generation/ClassCodes.py +156 -0
- nuitka/code_generation/CodeGeneration.py +1078 -0
- nuitka/code_generation/CodeHelperSelection.py +81 -0
- nuitka/code_generation/CodeHelpers.py +455 -0
- nuitka/code_generation/CodeObjectCodes.py +165 -0
- nuitka/code_generation/ComparisonCodes.py +569 -0
- nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
- nuitka/code_generation/ConditionalCodes.py +236 -0
- nuitka/code_generation/ConstantCodes.py +243 -0
- nuitka/code_generation/Contexts.py +1248 -0
- nuitka/code_generation/CoroutineCodes.py +253 -0
- nuitka/code_generation/CtypesCodes.py +46 -0
- nuitka/code_generation/DictCodes.py +918 -0
- nuitka/code_generation/Emission.py +75 -0
- nuitka/code_generation/ErrorCodes.py +281 -0
- nuitka/code_generation/EvalCodes.py +444 -0
- nuitka/code_generation/ExceptionCodes.py +337 -0
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
- nuitka/code_generation/ExpressionCodes.py +61 -0
- nuitka/code_generation/FrameCodes.py +518 -0
- nuitka/code_generation/FunctionCodes.py +858 -0
- nuitka/code_generation/GeneratorCodes.py +218 -0
- nuitka/code_generation/GlobalConstants.py +249 -0
- nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
- nuitka/code_generation/IdCodes.py +53 -0
- nuitka/code_generation/ImportCodes.py +468 -0
- nuitka/code_generation/Indentation.py +45 -0
- nuitka/code_generation/IndexCodes.py +50 -0
- nuitka/code_generation/InjectCCodes.py +28 -0
- nuitka/code_generation/IntegerCodes.py +110 -0
- nuitka/code_generation/IteratorCodes.py +378 -0
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +68 -0
- nuitka/code_generation/LineNumberCodes.py +91 -0
- nuitka/code_generation/ListCodes.py +502 -0
- nuitka/code_generation/LoaderCodes.py +193 -0
- nuitka/code_generation/LocalsDictCodes.py +359 -0
- nuitka/code_generation/LoopCodes.py +88 -0
- nuitka/code_generation/MatchCodes.py +67 -0
- nuitka/code_generation/ModuleCodes.py +247 -0
- nuitka/code_generation/Namify.py +260 -0
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +398 -0
- nuitka/code_generation/PackageResourceCodes.py +986 -0
- nuitka/code_generation/PrintCodes.py +93 -0
- nuitka/code_generation/PythonAPICodes.py +215 -0
- nuitka/code_generation/RaisingCodes.py +481 -0
- nuitka/code_generation/Reports.py +115 -0
- nuitka/code_generation/ReturnCodes.py +143 -0
- nuitka/code_generation/SetCodes.py +196 -0
- nuitka/code_generation/SliceCodes.py +465 -0
- nuitka/code_generation/StringCodes.py +303 -0
- nuitka/code_generation/SubscriptCodes.py +263 -0
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +326 -0
- nuitka/code_generation/TupleCodes.py +115 -0
- nuitka/code_generation/TypeAliasCodes.py +120 -0
- nuitka/code_generation/VariableCodes.py +519 -0
- nuitka/code_generation/VariableDeclarations.py +279 -0
- nuitka/code_generation/YieldCodes.py +253 -0
- nuitka/code_generation/__init__.py +19 -0
- nuitka/code_generation/c_types/CTypeBases.py +177 -0
- nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
- nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
- nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
- nuitka/code_generation/c_types/CTypeVoids.py +92 -0
- nuitka/code_generation/c_types/__init__.py +19 -0
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
- nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
- nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
- nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
- nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
- nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
- nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
- nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
- nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
- nuitka/code_generation/templates/__init__.py +19 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
- nuitka/containers/Namedtuples.py +51 -0
- nuitka/containers/OrderedDicts.py +191 -0
- nuitka/containers/OrderedSets.py +123 -0
- nuitka/containers/OrderedSetsFallback.py +139 -0
- nuitka/containers/__init__.py +19 -0
- nuitka/distutils/Build.py +76 -0
- nuitka/distutils/DistutilCommands.py +438 -0
- nuitka/distutils/__init__.py +19 -0
- nuitka/finalizations/Finalization.py +35 -0
- nuitka/finalizations/FinalizeMarkups.py +136 -0
- nuitka/finalizations/__init__.py +19 -0
- nuitka/freezer/DependsExe.py +257 -0
- nuitka/freezer/DllDependenciesCommon.py +97 -0
- nuitka/freezer/DllDependenciesMacOS.py +444 -0
- nuitka/freezer/DllDependenciesPosix.py +242 -0
- nuitka/freezer/DllDependenciesWin32.py +315 -0
- nuitka/freezer/ImportDetection.py +359 -0
- nuitka/freezer/IncludedDataFiles.py +689 -0
- nuitka/freezer/IncludedEntryPoints.py +376 -0
- nuitka/freezer/Onefile.py +296 -0
- nuitka/freezer/Standalone.py +520 -0
- nuitka/freezer/__init__.py +19 -0
- nuitka/importing/IgnoreListing.py +449 -0
- nuitka/importing/ImportCache.py +95 -0
- nuitka/importing/ImportResolving.py +186 -0
- nuitka/importing/Importing.py +1200 -0
- nuitka/importing/PreloadedPackages.py +164 -0
- nuitka/importing/Recursion.py +611 -0
- nuitka/importing/StandardLibrary.py +429 -0
- nuitka/importing/__init__.py +19 -0
- nuitka/nodes/AsyncgenNodes.py +107 -0
- nuitka/nodes/AttributeLookupNodes.py +124 -0
- nuitka/nodes/AttributeNodes.py +386 -0
- nuitka/nodes/AttributeNodesGenerated.py +10734 -0
- nuitka/nodes/BuiltinAllNodes.py +115 -0
- nuitka/nodes/BuiltinAnyNodes.py +124 -0
- nuitka/nodes/BuiltinComplexNodes.py +83 -0
- nuitka/nodes/BuiltinDecodingNodes.py +52 -0
- nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
- nuitka/nodes/BuiltinDictNodes.py +140 -0
- nuitka/nodes/BuiltinFormatNodes.py +159 -0
- nuitka/nodes/BuiltinHashNodes.py +63 -0
- nuitka/nodes/BuiltinInputNodes.py +39 -0
- nuitka/nodes/BuiltinIntegerNodes.py +170 -0
- nuitka/nodes/BuiltinIteratorNodes.py +391 -0
- nuitka/nodes/BuiltinLenNodes.py +61 -0
- nuitka/nodes/BuiltinNextNodes.py +111 -0
- nuitka/nodes/BuiltinOpenNodes.py +148 -0
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
- nuitka/nodes/BuiltinRangeNodes.py +690 -0
- nuitka/nodes/BuiltinRefNodes.py +314 -0
- nuitka/nodes/BuiltinSumNodes.py +104 -0
- nuitka/nodes/BuiltinTypeNodes.py +454 -0
- nuitka/nodes/BuiltinVarsNodes.py +44 -0
- nuitka/nodes/BytesNodes.py +829 -0
- nuitka/nodes/CallNodes.py +217 -0
- nuitka/nodes/Checkers.py +55 -0
- nuitka/nodes/ChildrenHavingMixins.py +21576 -0
- nuitka/nodes/ClassNodes.py +286 -0
- nuitka/nodes/CodeObjectSpecs.py +230 -0
- nuitka/nodes/ComparisonNodes.py +687 -0
- nuitka/nodes/ConditionalNodes.py +884 -0
- nuitka/nodes/ConstantRefNodes.py +1717 -0
- nuitka/nodes/ContainerMakingNodes.py +408 -0
- nuitka/nodes/ContainerOperationNodes.py +87 -0
- nuitka/nodes/CoroutineNodes.py +144 -0
- nuitka/nodes/CtypesNodes.py +51 -0
- nuitka/nodes/DictionaryNodes.py +1513 -0
- nuitka/nodes/ExceptionNodes.py +393 -0
- nuitka/nodes/ExecEvalNodes.py +229 -0
- nuitka/nodes/ExpressionBases.py +1301 -0
- nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
- nuitka/nodes/ExpressionShapeMixins.py +886 -0
- nuitka/nodes/FrameNodes.py +413 -0
- nuitka/nodes/FunctionAttributeNodes.py +102 -0
- nuitka/nodes/FunctionNodes.py +1303 -0
- nuitka/nodes/FutureSpecs.py +224 -0
- nuitka/nodes/GeneratorNodes.py +201 -0
- nuitka/nodes/GlobalsLocalsNodes.py +209 -0
- nuitka/nodes/HardImportNodesGenerated.py +3599 -0
- nuitka/nodes/ImportHardNodes.py +185 -0
- nuitka/nodes/ImportNodes.py +1366 -0
- nuitka/nodes/IndicatorMixins.py +79 -0
- nuitka/nodes/InjectCNodes.py +51 -0
- nuitka/nodes/IterationHandles.py +407 -0
- nuitka/nodes/KeyValuePairNodes.py +378 -0
- nuitka/nodes/ListOperationNodes.py +525 -0
- nuitka/nodes/LocalsDictNodes.py +717 -0
- nuitka/nodes/LocalsScopes.py +505 -0
- nuitka/nodes/LoopNodes.py +445 -0
- nuitka/nodes/MatchNodes.py +60 -0
- nuitka/nodes/ModuleAttributeNodes.py +180 -0
- nuitka/nodes/ModuleNodes.py +1137 -0
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +890 -0
- nuitka/nodes/NodeMakingHelpers.py +481 -0
- nuitka/nodes/NodeMetaClasses.py +172 -0
- nuitka/nodes/OperatorNodes.py +944 -0
- nuitka/nodes/OperatorNodesUnary.py +403 -0
- nuitka/nodes/OsSysNodes.py +215 -0
- nuitka/nodes/OutlineNodes.py +372 -0
- nuitka/nodes/PackageMetadataNodes.py +982 -0
- nuitka/nodes/PackageResourceNodes.py +424 -0
- nuitka/nodes/PrintNodes.py +105 -0
- nuitka/nodes/ReturnNodes.py +255 -0
- nuitka/nodes/SideEffectNodes.py +139 -0
- nuitka/nodes/SliceNodes.py +386 -0
- nuitka/nodes/StatementBasesGenerated.py +3419 -0
- nuitka/nodes/StatementNodes.py +316 -0
- nuitka/nodes/StrNodes.py +919 -0
- nuitka/nodes/StringConcatenationNodes.py +103 -0
- nuitka/nodes/SubscriptNodes.py +245 -0
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +519 -0
- nuitka/nodes/TypeMatchNodes.py +65 -0
- nuitka/nodes/TypeNodes.py +390 -0
- nuitka/nodes/VariableAssignNodes.py +1177 -0
- nuitka/nodes/VariableDelNodes.py +320 -0
- nuitka/nodes/VariableNameNodes.py +153 -0
- nuitka/nodes/VariableRefNodes.py +895 -0
- nuitka/nodes/VariableReleaseNodes.py +153 -0
- nuitka/nodes/YieldNodes.py +121 -0
- nuitka/nodes/__init__.py +19 -0
- nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
- nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
- nuitka/nodes/shapes/IteratorShapes.py +71 -0
- nuitka/nodes/shapes/ShapeMixins.py +255 -0
- nuitka/nodes/shapes/StandardShapes.py +1384 -0
- nuitka/nodes/shapes/__init__.py +19 -0
- nuitka/optimizations/BytecodeDemotion.py +105 -0
- nuitka/optimizations/FunctionInlining.py +110 -0
- nuitka/optimizations/Graphs.py +70 -0
- nuitka/optimizations/Optimization.py +363 -0
- nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
- nuitka/optimizations/Tags.py +76 -0
- nuitka/optimizations/TraceCollections.py +1257 -0
- nuitka/optimizations/ValueTraces.py +980 -0
- nuitka/optimizations/__init__.py +19 -0
- nuitka/pgo/PGO.py +160 -0
- nuitka/pgo/__init__.py +19 -0
- nuitka/plugins/PluginBase.py +1924 -0
- nuitka/plugins/Plugins.py +2007 -0
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +19 -0
- nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
- nuitka/plugins/standard/DataFilesPlugin.py +311 -0
- nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
- nuitka/plugins/standard/DillPlugin.py +137 -0
- nuitka/plugins/standard/DllFilesPlugin.py +527 -0
- nuitka/plugins/standard/EnumPlugin.py +64 -0
- nuitka/plugins/standard/EventletPlugin.py +57 -0
- nuitka/plugins/standard/GeventPlugin.py +64 -0
- nuitka/plugins/standard/GiPlugin.py +118 -0
- nuitka/plugins/standard/GlfwPlugin.py +138 -0
- nuitka/plugins/standard/ImplicitImports.py +845 -0
- nuitka/plugins/standard/KivyPlugin.py +141 -0
- nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
- nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
- nuitka/plugins/standard/NumpyPlugin.py +35 -0
- nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
- nuitka/plugins/standard/PbrPlugin.py +62 -0
- nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
- nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
- nuitka/plugins/standard/PmwPlugin.py +248 -0
- nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
- nuitka/plugins/standard/PywebViewPlugin.py +81 -0
- nuitka/plugins/standard/SpacyPlugin.py +137 -0
- nuitka/plugins/standard/TensorflowPlugin.py +35 -0
- nuitka/plugins/standard/TkinterPlugin.py +416 -0
- nuitka/plugins/standard/TorchPlugin.py +35 -0
- nuitka/plugins/standard/TransformersPlugin.py +121 -0
- nuitka/plugins/standard/TrioPlugin.py +33 -0
- nuitka/plugins/standard/UpxPlugin.py +174 -0
- nuitka/plugins/standard/__init__.py +19 -0
- nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
- nuitka/reports/CompilationReportReader.py +83 -0
- nuitka/reports/LicenseReport.rst.j2 +41 -0
- nuitka/reports/Reports.py +961 -0
- nuitka/reports/__init__.py +19 -0
- nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
- nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
- nuitka/specs/BuiltinListOperationSpecs.py +80 -0
- nuitka/specs/BuiltinParameterSpecs.py +831 -0
- nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
- nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
- nuitka/specs/HardImportSpecs.py +236 -0
- nuitka/specs/ParameterSpecs.py +630 -0
- nuitka/specs/__init__.py +19 -0
- nuitka/tools/Basics.py +55 -0
- nuitka/tools/__init__.py +19 -0
- nuitka/tools/commercial/__init__.py +21 -0
- nuitka/tools/data_composer/DataComposer.py +593 -0
- nuitka/tools/data_composer/__init__.py +19 -0
- nuitka/tools/data_composer/__main__.py +41 -0
- nuitka/tools/environments/CreateEnvironment.py +69 -0
- nuitka/tools/environments/Virtualenv.py +158 -0
- nuitka/tools/environments/__init__.py +19 -0
- nuitka/tools/general/__init__.py +19 -0
- nuitka/tools/general/dll_report/__init__.py +19 -0
- nuitka/tools/general/dll_report/__main__.py +83 -0
- nuitka/tools/general/find_module/FindModuleCode.py +127 -0
- nuitka/tools/general/find_module/__init__.py +19 -0
- nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
- nuitka/tools/general/generate_header/__init__.py +19 -0
- nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
- nuitka/tools/onefile_compressor/__init__.py +19 -0
- nuitka/tools/onefile_compressor/__main__.py +41 -0
- nuitka/tools/podman/Podman.py +55 -0
- nuitka/tools/podman/__init__.py +19 -0
- nuitka/tools/podman/__main__.py +425 -0
- nuitka/tools/profiler/__init__.py +19 -0
- nuitka/tools/profiler/__main__.py +93 -0
- nuitka/tools/scanning/DisplayDistributions.py +39 -0
- nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
- nuitka/tools/scanning/DisplayPackageData.py +73 -0
- nuitka/tools/scanning/__init__.py +19 -0
- nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
- nuitka/tools/specialize/Common.py +380 -0
- nuitka/tools/specialize/SpecializeC.py +1483 -0
- nuitka/tools/specialize/SpecializePython.py +1151 -0
- nuitka/tools/specialize/__init__.py +19 -0
- nuitka/tools/testing/Common.py +2007 -0
- nuitka/tools/testing/Constructs.py +53 -0
- nuitka/tools/testing/DocTests.py +156 -0
- nuitka/tools/testing/OutputComparison.py +313 -0
- nuitka/tools/testing/Pythons.py +34 -0
- nuitka/tools/testing/RuntimeTracing.py +260 -0
- nuitka/tools/testing/SearchModes.py +208 -0
- nuitka/tools/testing/Valgrind.py +103 -0
- nuitka/tools/testing/__init__.py +19 -0
- nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
- nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
- nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
- nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
- nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
- nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
- nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
- nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
- nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
- nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/Common.py +55 -0
- nuitka/tools/watch/Conda.py +125 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/Pacman.py +73 -0
- nuitka/tools/watch/Pipenv.py +145 -0
- nuitka/tools/watch/__init__.py +19 -0
- nuitka/tools/watch/__main__.py +615 -0
- nuitka/tree/Building.py +1459 -0
- nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
- nuitka/tree/Extractions.py +48 -0
- nuitka/tree/FutureSpecState.py +71 -0
- nuitka/tree/InternalModule.py +96 -0
- nuitka/tree/Operations.py +45 -0
- nuitka/tree/ReformulationAssertStatements.py +97 -0
- nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
- nuitka/tree/ReformulationBooleanExpressions.py +97 -0
- nuitka/tree/ReformulationCallExpressions.py +314 -0
- nuitka/tree/ReformulationClasses.py +407 -0
- nuitka/tree/ReformulationClasses3.py +1149 -0
- nuitka/tree/ReformulationComparisonExpressions.py +174 -0
- nuitka/tree/ReformulationContractionExpressions.py +676 -0
- nuitka/tree/ReformulationDictionaryCreation.py +304 -0
- nuitka/tree/ReformulationExecStatements.py +386 -0
- nuitka/tree/ReformulationForLoopStatements.py +215 -0
- nuitka/tree/ReformulationFunctionStatements.py +931 -0
- nuitka/tree/ReformulationImportStatements.py +333 -0
- nuitka/tree/ReformulationLambdaExpressions.py +185 -0
- nuitka/tree/ReformulationMatchStatements.py +797 -0
- nuitka/tree/ReformulationMultidist.py +80 -0
- nuitka/tree/ReformulationNamespacePackages.py +239 -0
- nuitka/tree/ReformulationPrintStatements.py +127 -0
- nuitka/tree/ReformulationSequenceCreation.py +438 -0
- nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
- nuitka/tree/ReformulationTryExceptStatements.py +418 -0
- nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
- nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
- nuitka/tree/ReformulationWithStatements.py +382 -0
- nuitka/tree/ReformulationYieldExpressions.py +133 -0
- nuitka/tree/SourceHandling.py +476 -0
- nuitka/tree/SyntaxErrors.py +143 -0
- nuitka/tree/TreeHelpers.py +720 -0
- nuitka/tree/VariableClosure.py +483 -0
- nuitka/tree/__init__.py +19 -0
- nuitka/utils/AppDirs.py +104 -0
- nuitka/utils/CStrings.py +208 -0
- nuitka/utils/CommandLineOptions.py +207 -0
- nuitka/utils/Distributions.py +728 -0
- nuitka/utils/Download.py +217 -0
- nuitka/utils/Execution.py +517 -0
- nuitka/utils/FileOperations.py +1587 -0
- nuitka/utils/Hashing.py +137 -0
- nuitka/utils/Images.py +79 -0
- nuitka/utils/Importing.py +335 -0
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +254 -0
- nuitka/utils/InstanceCounters.py +86 -0
- nuitka/utils/Jinja2.py +158 -0
- nuitka/utils/Json.py +40 -0
- nuitka/utils/MacOSApp.py +134 -0
- nuitka/utils/MemoryUsage.py +165 -0
- nuitka/utils/ModuleNames.py +317 -0
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +152 -0
- nuitka/utils/Rest.py +60 -0
- nuitka/utils/SharedLibraries.py +1014 -0
- nuitka/utils/Shebang.py +113 -0
- nuitka/utils/Signing.py +144 -0
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +260 -0
- nuitka/utils/ThreadedExecutor.py +87 -0
- nuitka/utils/Timing.py +102 -0
- nuitka/utils/Utils.py +483 -0
- nuitka/utils/WindowsFileUsage.py +337 -0
- nuitka/utils/WindowsResources.py +652 -0
- nuitka/utils/Yaml.py +247 -0
- nuitka/utils/__init__.py +19 -0
- nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
- nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
- nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
- nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
- nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
- nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
- nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
- nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,884 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Conditional nodes.
|
|
5
|
+
|
|
6
|
+
These is the conditional expression '(a if b else c)' and the conditional
|
|
7
|
+
statement, 'if a: ... else: ...' and there is no 'elif', because that is
|
|
8
|
+
expressed via nesting of conditional statements.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from nuitka.optimizations.TraceCollections import TraceCollectionBranch
|
|
12
|
+
|
|
13
|
+
from .BuiltinTypeNodes import ExpressionBuiltinBool
|
|
14
|
+
from .Checkers import checkStatementsSequenceOrNone
|
|
15
|
+
from .ChildrenHavingMixins import (
|
|
16
|
+
ChildrenHavingConditionExpressionYesExpressionNoMixin,
|
|
17
|
+
ChildrenHavingLeftRightMixin,
|
|
18
|
+
)
|
|
19
|
+
from .ExpressionBases import ExpressionBase
|
|
20
|
+
from .NodeMakingHelpers import (
|
|
21
|
+
makeConstantReplacementNode,
|
|
22
|
+
makeStatementExpressionOnlyReplacementNode,
|
|
23
|
+
wrapExpressionWithNodeSideEffects,
|
|
24
|
+
wrapExpressionWithSideEffects,
|
|
25
|
+
wrapStatementWithSideEffects,
|
|
26
|
+
)
|
|
27
|
+
from .OperatorNodesUnary import ExpressionOperationNot
|
|
28
|
+
from .shapes.BuiltinTypeShapes import tshape_bool
|
|
29
|
+
from .shapes.StandardShapes import tshape_unknown
|
|
30
|
+
from .StatementBasesGenerated import StatementConditionalBase
|
|
31
|
+
from .StatementNodes import StatementsSequence
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ConditionalValueComputeMixin(object):
|
|
35
|
+
__slots__ = ()
|
|
36
|
+
|
|
37
|
+
def _computeConditionTruthValue(self, trace_collection):
|
|
38
|
+
condition = self.subnode_condition
|
|
39
|
+
|
|
40
|
+
truth_value, replacement, message = condition.computeExpressionBool(
|
|
41
|
+
trace_collection
|
|
42
|
+
)
|
|
43
|
+
if replacement is not None:
|
|
44
|
+
self.replaceChild(condition, replacement)
|
|
45
|
+
|
|
46
|
+
trace_collection.signalChange(
|
|
47
|
+
tags="new_constant", source_ref=self.source_ref, message=message
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
return truth_value, replacement
|
|
51
|
+
else:
|
|
52
|
+
# Query the truth value after the expression is evaluated, once it is
|
|
53
|
+
# evaluated in onExpression, it is known.
|
|
54
|
+
return condition.getTruthValue(), condition
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ExpressionConditional(
|
|
58
|
+
ConditionalValueComputeMixin,
|
|
59
|
+
ChildrenHavingConditionExpressionYesExpressionNoMixin,
|
|
60
|
+
ExpressionBase,
|
|
61
|
+
):
|
|
62
|
+
kind = "EXPRESSION_CONDITIONAL"
|
|
63
|
+
|
|
64
|
+
named_children = ("condition", "expression_yes", "expression_no")
|
|
65
|
+
|
|
66
|
+
def __init__(self, condition, expression_yes, expression_no, source_ref):
|
|
67
|
+
ChildrenHavingConditionExpressionYesExpressionNoMixin.__init__(
|
|
68
|
+
self,
|
|
69
|
+
condition=condition,
|
|
70
|
+
expression_yes=expression_yes,
|
|
71
|
+
expression_no=expression_no,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
ExpressionBase.__init__(self, source_ref)
|
|
75
|
+
|
|
76
|
+
def getTypeShape(self):
|
|
77
|
+
yes_shape = self.subnode_expression_yes.getTypeShape()
|
|
78
|
+
|
|
79
|
+
if yes_shape is tshape_unknown:
|
|
80
|
+
return tshape_unknown
|
|
81
|
+
else:
|
|
82
|
+
no_shape = self.subnode_expression_no.getTypeShape()
|
|
83
|
+
|
|
84
|
+
if no_shape is yes_shape:
|
|
85
|
+
return no_shape
|
|
86
|
+
else:
|
|
87
|
+
return tshape_unknown
|
|
88
|
+
|
|
89
|
+
def getBranches(self):
|
|
90
|
+
return (self.subnode_expression_yes, self.subnode_expression_no)
|
|
91
|
+
|
|
92
|
+
def computeExpressionRaw(self, trace_collection):
|
|
93
|
+
# This is rather complex stuff, pylint: disable=too-many-branches
|
|
94
|
+
|
|
95
|
+
# Query the truth value after the expression is evaluated, once it is
|
|
96
|
+
# evaluated in onExpression, it is known.
|
|
97
|
+
condition = trace_collection.onExpression(self.subnode_condition)
|
|
98
|
+
|
|
99
|
+
# No need to look any further, if the condition raises, the branches do
|
|
100
|
+
# not matter at all.
|
|
101
|
+
if condition.willRaiseAnyException():
|
|
102
|
+
return (
|
|
103
|
+
condition,
|
|
104
|
+
"new_raise",
|
|
105
|
+
"""\
|
|
106
|
+
Conditional expression already raises implicitly in condition, removing \
|
|
107
|
+
branches.""",
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
# Tell it we are evaluation it for boolean value only, it may demote
|
|
111
|
+
# itself possibly.
|
|
112
|
+
truth_value, condition = self._computeConditionTruthValue(trace_collection)
|
|
113
|
+
|
|
114
|
+
# TODO: We now know that condition evaluates to true for the yes branch
|
|
115
|
+
# and to not true for no branch, the branch should know that.
|
|
116
|
+
yes_branch = self.subnode_expression_yes
|
|
117
|
+
|
|
118
|
+
# Continue to execute for yes branch unless we know it's not going to be
|
|
119
|
+
# relevant.
|
|
120
|
+
if truth_value is not False:
|
|
121
|
+
branch_yes_collection = TraceCollectionBranch(
|
|
122
|
+
parent=trace_collection, name="conditional expression yes branch"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
yes_branch = branch_yes_collection.onExpression(yes_branch)
|
|
126
|
+
|
|
127
|
+
# If it's aborting, it doesn't contribute to merging.
|
|
128
|
+
if truth_value is not True and yes_branch.willRaiseAnyException():
|
|
129
|
+
branch_yes_collection = None
|
|
130
|
+
else:
|
|
131
|
+
branch_yes_collection = None
|
|
132
|
+
|
|
133
|
+
no_branch = self.subnode_expression_no
|
|
134
|
+
|
|
135
|
+
# Continue to execute for yes branch.
|
|
136
|
+
if truth_value is not True:
|
|
137
|
+
branch_no_collection = TraceCollectionBranch(
|
|
138
|
+
parent=trace_collection, name="conditional expression no branch"
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
no_branch = branch_no_collection.onExpression(no_branch)
|
|
142
|
+
|
|
143
|
+
# If it's aborting, it doesn't contribute to merging.
|
|
144
|
+
if truth_value is not False and no_branch.willRaiseAnyException():
|
|
145
|
+
branch_no_collection = None
|
|
146
|
+
else:
|
|
147
|
+
branch_no_collection = None
|
|
148
|
+
|
|
149
|
+
if truth_value is True:
|
|
150
|
+
trace_collection.replaceBranch(branch_yes_collection)
|
|
151
|
+
elif truth_value is False:
|
|
152
|
+
trace_collection.replaceBranch(branch_no_collection)
|
|
153
|
+
else:
|
|
154
|
+
# Merge into parent execution.
|
|
155
|
+
trace_collection.mergeBranches(branch_yes_collection, branch_no_collection)
|
|
156
|
+
|
|
157
|
+
if truth_value is True:
|
|
158
|
+
return (
|
|
159
|
+
wrapExpressionWithNodeSideEffects(
|
|
160
|
+
new_node=self.subnode_expression_yes, old_node=condition
|
|
161
|
+
),
|
|
162
|
+
"new_expression",
|
|
163
|
+
"Conditional expression predicted to 'yes' case.",
|
|
164
|
+
)
|
|
165
|
+
elif truth_value is False:
|
|
166
|
+
return (
|
|
167
|
+
wrapExpressionWithNodeSideEffects(
|
|
168
|
+
new_node=self.subnode_expression_no, old_node=condition
|
|
169
|
+
),
|
|
170
|
+
"new_expression",
|
|
171
|
+
"Conditional expression predicted to 'no' case.",
|
|
172
|
+
)
|
|
173
|
+
else:
|
|
174
|
+
return self, None, None
|
|
175
|
+
|
|
176
|
+
def computeExpressionDrop(self, statement, trace_collection):
|
|
177
|
+
result = makeStatementConditional(
|
|
178
|
+
condition=self.subnode_condition,
|
|
179
|
+
yes_branch=makeStatementExpressionOnlyReplacementNode(
|
|
180
|
+
expression=self.subnode_expression_yes, node=self.subnode_expression_yes
|
|
181
|
+
),
|
|
182
|
+
no_branch=makeStatementExpressionOnlyReplacementNode(
|
|
183
|
+
expression=self.subnode_expression_no, node=self.subnode_expression_no
|
|
184
|
+
),
|
|
185
|
+
source_ref=self.source_ref,
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
del self.parent
|
|
189
|
+
|
|
190
|
+
return (
|
|
191
|
+
result,
|
|
192
|
+
"new_statements",
|
|
193
|
+
"""\
|
|
194
|
+
Convert conditional expression with unused result into conditional statement.""",
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
def mayHaveSideEffectsBool(self):
|
|
198
|
+
# The bool will me made on either side.
|
|
199
|
+
if self.subnode_expression_yes.mayHaveSideEffectsBool():
|
|
200
|
+
return True
|
|
201
|
+
|
|
202
|
+
if self.subnode_expression_no.mayHaveSideEffectsBool():
|
|
203
|
+
return True
|
|
204
|
+
|
|
205
|
+
return False
|
|
206
|
+
|
|
207
|
+
def mayRaiseException(self, exception_type):
|
|
208
|
+
condition = self.subnode_condition
|
|
209
|
+
|
|
210
|
+
if condition.mayRaiseException(exception_type):
|
|
211
|
+
return True
|
|
212
|
+
|
|
213
|
+
if condition.mayRaiseExceptionBool(exception_type):
|
|
214
|
+
return True
|
|
215
|
+
|
|
216
|
+
yes_branch = self.subnode_expression_yes
|
|
217
|
+
|
|
218
|
+
# Handle branches that became empty behind our back
|
|
219
|
+
if yes_branch is not None and yes_branch.mayRaiseException(exception_type):
|
|
220
|
+
return True
|
|
221
|
+
|
|
222
|
+
no_branch = self.subnode_expression_no
|
|
223
|
+
|
|
224
|
+
# Handle branches that became empty behind our back
|
|
225
|
+
if no_branch is not None and no_branch.mayRaiseException(exception_type):
|
|
226
|
+
return True
|
|
227
|
+
|
|
228
|
+
return False
|
|
229
|
+
|
|
230
|
+
def mayRaiseExceptionBool(self, exception_type):
|
|
231
|
+
if self.subnode_condition.mayRaiseExceptionBool(exception_type):
|
|
232
|
+
return True
|
|
233
|
+
|
|
234
|
+
if self.subnode_expression_yes.mayRaiseExceptionBool(exception_type):
|
|
235
|
+
return True
|
|
236
|
+
|
|
237
|
+
if self.subnode_expression_no.mayRaiseExceptionBool(exception_type):
|
|
238
|
+
return True
|
|
239
|
+
|
|
240
|
+
return False
|
|
241
|
+
|
|
242
|
+
def getIntegerValue(self):
|
|
243
|
+
result_yes = self.subnode_expression_yes.getIntegerValue()
|
|
244
|
+
result_no = self.subnode_expression_no.getIntegerValue()
|
|
245
|
+
|
|
246
|
+
if result_yes == result_no:
|
|
247
|
+
return result_yes
|
|
248
|
+
else:
|
|
249
|
+
return None
|
|
250
|
+
|
|
251
|
+
def getExpressionDictInConstant(self, value):
|
|
252
|
+
result_yes = self.subnode_expression_yes.getExpressionDictInConstant(value)
|
|
253
|
+
result_no = self.subnode_expression_no.getExpressionDictInConstant(value)
|
|
254
|
+
|
|
255
|
+
if result_yes == result_no:
|
|
256
|
+
return result_yes
|
|
257
|
+
else:
|
|
258
|
+
return None
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class ExpressionConditionalBoolBase(ChildrenHavingLeftRightMixin, ExpressionBase):
|
|
262
|
+
named_children = ("left", "right")
|
|
263
|
+
|
|
264
|
+
def __init__(self, left, right, source_ref):
|
|
265
|
+
ChildrenHavingLeftRightMixin.__init__(self, left=left, right=right)
|
|
266
|
+
|
|
267
|
+
ExpressionBase.__init__(self, source_ref)
|
|
268
|
+
|
|
269
|
+
def computeExpressionRaw(self, trace_collection):
|
|
270
|
+
# Query the truth value after the expression is evaluated, once it is
|
|
271
|
+
# evaluated in onExpression, it is known.
|
|
272
|
+
left = trace_collection.onExpression(self.subnode_left)
|
|
273
|
+
|
|
274
|
+
# No need to look any further, if the condition raises, the branches do
|
|
275
|
+
# not matter at all.
|
|
276
|
+
if left.willRaiseAnyException():
|
|
277
|
+
return (
|
|
278
|
+
left,
|
|
279
|
+
"new_raise",
|
|
280
|
+
"""\
|
|
281
|
+
Conditional %s statements already raises implicitly in condition, removing \
|
|
282
|
+
branches."""
|
|
283
|
+
% self.conditional_kind,
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
if not left.mayRaiseException(BaseException) and left.mayRaiseExceptionBool(
|
|
287
|
+
BaseException
|
|
288
|
+
):
|
|
289
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
290
|
+
|
|
291
|
+
# Decide this based on truth value of condition.
|
|
292
|
+
truth_value = left.getTruthValue()
|
|
293
|
+
|
|
294
|
+
truth_value_use_left = self.conditional_kind == "or"
|
|
295
|
+
truth_value_use_right = not truth_value_use_left
|
|
296
|
+
|
|
297
|
+
right = self.subnode_right
|
|
298
|
+
|
|
299
|
+
# Continue to execute for yes branch unless we know it's not going to be
|
|
300
|
+
# relevant.
|
|
301
|
+
if truth_value is not truth_value_use_left:
|
|
302
|
+
# TODO: We now know that left evaluates and we should tell the
|
|
303
|
+
# branch that.
|
|
304
|
+
branch_yes_collection = TraceCollectionBranch(
|
|
305
|
+
parent=trace_collection,
|
|
306
|
+
name="boolean %s right branch" % self.conditional_kind,
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
right = branch_yes_collection.onExpression(right)
|
|
310
|
+
|
|
311
|
+
# If it's aborting, it doesn't contribute to merging.
|
|
312
|
+
if right.willRaiseAnyException():
|
|
313
|
+
branch_yes_collection = None
|
|
314
|
+
else:
|
|
315
|
+
branch_yes_collection = None
|
|
316
|
+
|
|
317
|
+
if branch_yes_collection:
|
|
318
|
+
# Merge into parent execution.
|
|
319
|
+
trace_collection.mergeBranches(branch_yes_collection, None)
|
|
320
|
+
|
|
321
|
+
if truth_value is truth_value_use_left:
|
|
322
|
+
return (
|
|
323
|
+
left,
|
|
324
|
+
"new_expression",
|
|
325
|
+
"Conditional '%s' expression predicted to left value."
|
|
326
|
+
% self.conditional_kind,
|
|
327
|
+
)
|
|
328
|
+
elif truth_value is truth_value_use_right:
|
|
329
|
+
return (
|
|
330
|
+
wrapExpressionWithNodeSideEffects(new_node=right, old_node=left),
|
|
331
|
+
"new_expression",
|
|
332
|
+
"Conditional '%s' expression predicted right value."
|
|
333
|
+
% self.conditional_kind,
|
|
334
|
+
)
|
|
335
|
+
else:
|
|
336
|
+
return self, None, None
|
|
337
|
+
|
|
338
|
+
def mayRaiseException(self, exception_type):
|
|
339
|
+
left = self.subnode_left
|
|
340
|
+
|
|
341
|
+
if left.mayRaiseException(exception_type):
|
|
342
|
+
return True
|
|
343
|
+
|
|
344
|
+
if left.mayRaiseExceptionBool(exception_type):
|
|
345
|
+
return True
|
|
346
|
+
|
|
347
|
+
right = self.subnode_right
|
|
348
|
+
|
|
349
|
+
if right.mayRaiseException(exception_type):
|
|
350
|
+
return True
|
|
351
|
+
|
|
352
|
+
return False
|
|
353
|
+
|
|
354
|
+
def computeExpressionBool(self, trace_collection):
|
|
355
|
+
truth_value = self.subnode_right.getTruthValue()
|
|
356
|
+
|
|
357
|
+
if not self.mayRaiseException(BaseException) and self.mayRaiseExceptionBool(
|
|
358
|
+
BaseException
|
|
359
|
+
):
|
|
360
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
361
|
+
|
|
362
|
+
if truth_value is None:
|
|
363
|
+
# No action
|
|
364
|
+
pass
|
|
365
|
+
elif truth_value is True:
|
|
366
|
+
if self.isExpressionConditionalOr():
|
|
367
|
+
result = wrapExpressionWithSideEffects(
|
|
368
|
+
new_node=makeConstantReplacementNode(
|
|
369
|
+
constant=True, node=self.subnode_right, user_provided=False
|
|
370
|
+
),
|
|
371
|
+
old_node=self,
|
|
372
|
+
side_effects=(
|
|
373
|
+
ExpressionBuiltinBool(
|
|
374
|
+
value=self.subnode_left, source_ref=self.source_ref
|
|
375
|
+
),
|
|
376
|
+
),
|
|
377
|
+
)
|
|
378
|
+
|
|
379
|
+
return True, result, "Predicted right hand side of 'or' to be true."
|
|
380
|
+
else:
|
|
381
|
+
# TODO: There are no side effects after something else, which
|
|
382
|
+
# would be needed, but for constant values, this works well.
|
|
383
|
+
if not self.subnode_right.mayHaveSideEffects():
|
|
384
|
+
return (
|
|
385
|
+
self.subnode_left.getTruthValue(),
|
|
386
|
+
self.subnode_left,
|
|
387
|
+
"Predicted right hand side of 'and' to be true.",
|
|
388
|
+
)
|
|
389
|
+
elif truth_value is False:
|
|
390
|
+
if self.isExpressionConditionalAnd():
|
|
391
|
+
result = wrapExpressionWithSideEffects(
|
|
392
|
+
new_node=makeConstantReplacementNode(
|
|
393
|
+
constant=False, node=self.subnode_right, user_provided=False
|
|
394
|
+
),
|
|
395
|
+
old_node=self,
|
|
396
|
+
side_effects=(
|
|
397
|
+
ExpressionBuiltinBool(
|
|
398
|
+
value=self.subnode_left, source_ref=self.source_ref
|
|
399
|
+
),
|
|
400
|
+
),
|
|
401
|
+
)
|
|
402
|
+
|
|
403
|
+
return False, result, "Predicted right hand side of 'and' to be false."
|
|
404
|
+
else:
|
|
405
|
+
# TODO: There are no side effects after something else, which
|
|
406
|
+
# would be needed, but for constant values, this works well.
|
|
407
|
+
if not self.subnode_right.mayHaveSideEffects():
|
|
408
|
+
return (
|
|
409
|
+
self.subnode_left.getTruthValue(),
|
|
410
|
+
self.subnode_left,
|
|
411
|
+
"Predicted right hand side of 'or' to be false.",
|
|
412
|
+
)
|
|
413
|
+
else:
|
|
414
|
+
truth_value = self.subnode_left.getTruthValue()
|
|
415
|
+
|
|
416
|
+
return truth_value, None, None
|
|
417
|
+
|
|
418
|
+
def mayRaiseExceptionBool(self, exception_type):
|
|
419
|
+
# The and/or bool will be working on either side.
|
|
420
|
+
if self.subnode_left.mayRaiseExceptionBool(exception_type):
|
|
421
|
+
return True
|
|
422
|
+
|
|
423
|
+
if self.subnode_right.mayRaiseExceptionBool(exception_type):
|
|
424
|
+
return True
|
|
425
|
+
|
|
426
|
+
return False
|
|
427
|
+
|
|
428
|
+
def mayHaveSideEffectsBool(self):
|
|
429
|
+
if self.subnode_left.mayHaveSideEffectsBool():
|
|
430
|
+
return True
|
|
431
|
+
|
|
432
|
+
if self.subnode_right.mayHaveSideEffectsBool():
|
|
433
|
+
return True
|
|
434
|
+
|
|
435
|
+
return False
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
class ExpressionConditionalOr(ExpressionConditionalBoolBase):
|
|
439
|
+
kind = "EXPRESSION_CONDITIONAL_OR"
|
|
440
|
+
|
|
441
|
+
conditional_kind = "or"
|
|
442
|
+
|
|
443
|
+
def __init__(self, left, right, source_ref):
|
|
444
|
+
ExpressionConditionalBoolBase.__init__(
|
|
445
|
+
self, left=left, right=right, source_ref=source_ref
|
|
446
|
+
)
|
|
447
|
+
|
|
448
|
+
def computeExpressionDrop(self, statement, trace_collection):
|
|
449
|
+
result = makeStatementConditional(
|
|
450
|
+
condition=self.subnode_left,
|
|
451
|
+
yes_branch=None,
|
|
452
|
+
no_branch=makeStatementExpressionOnlyReplacementNode(
|
|
453
|
+
expression=self.subnode_right, node=self.subnode_right
|
|
454
|
+
),
|
|
455
|
+
source_ref=self.source_ref,
|
|
456
|
+
)
|
|
457
|
+
|
|
458
|
+
del self.parent
|
|
459
|
+
|
|
460
|
+
return (
|
|
461
|
+
result,
|
|
462
|
+
"new_statements",
|
|
463
|
+
"""\
|
|
464
|
+
Convert conditional 'or' expression with unused result into conditional statement.""",
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
class ExpressionConditionalAnd(ExpressionConditionalBoolBase):
|
|
469
|
+
kind = "EXPRESSION_CONDITIONAL_AND"
|
|
470
|
+
|
|
471
|
+
conditional_kind = "and"
|
|
472
|
+
|
|
473
|
+
def __init__(self, left, right, source_ref):
|
|
474
|
+
ExpressionConditionalBoolBase.__init__(
|
|
475
|
+
self, left=left, right=right, source_ref=source_ref
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
def computeExpressionDrop(self, statement, trace_collection):
|
|
479
|
+
result = makeStatementConditional(
|
|
480
|
+
condition=self.subnode_left,
|
|
481
|
+
no_branch=None,
|
|
482
|
+
yes_branch=makeStatementExpressionOnlyReplacementNode(
|
|
483
|
+
expression=self.subnode_right, node=self.subnode_right
|
|
484
|
+
),
|
|
485
|
+
source_ref=self.source_ref,
|
|
486
|
+
)
|
|
487
|
+
|
|
488
|
+
del self.parent
|
|
489
|
+
|
|
490
|
+
return (
|
|
491
|
+
result,
|
|
492
|
+
"new_statements",
|
|
493
|
+
"""\
|
|
494
|
+
Convert conditional 'and' expression with unused result into conditional statement.""",
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
class StatementConditional(ConditionalValueComputeMixin, StatementConditionalBase):
|
|
499
|
+
kind = "STATEMENT_CONDITIONAL"
|
|
500
|
+
|
|
501
|
+
named_children = (
|
|
502
|
+
"condition",
|
|
503
|
+
"yes_branch|statements_or_none+setter",
|
|
504
|
+
"no_branch|statements_or_none+setter",
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
checkers = {
|
|
508
|
+
"yes_branch": checkStatementsSequenceOrNone,
|
|
509
|
+
"no_branch": checkStatementsSequenceOrNone,
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
def isStatementAborting(self):
|
|
513
|
+
yes_branch = self.subnode_yes_branch
|
|
514
|
+
|
|
515
|
+
if yes_branch is not None:
|
|
516
|
+
if yes_branch.isStatementAborting():
|
|
517
|
+
no_branch = self.subnode_no_branch
|
|
518
|
+
|
|
519
|
+
if no_branch is not None:
|
|
520
|
+
return no_branch.isStatementAborting()
|
|
521
|
+
else:
|
|
522
|
+
return False
|
|
523
|
+
else:
|
|
524
|
+
return False
|
|
525
|
+
else:
|
|
526
|
+
return False
|
|
527
|
+
|
|
528
|
+
def mayRaiseException(self, exception_type):
|
|
529
|
+
condition = self.subnode_condition
|
|
530
|
+
|
|
531
|
+
if condition.mayRaiseException(exception_type):
|
|
532
|
+
return True
|
|
533
|
+
|
|
534
|
+
if condition.mayRaiseExceptionBool(exception_type):
|
|
535
|
+
return True
|
|
536
|
+
|
|
537
|
+
yes_branch = self.subnode_yes_branch
|
|
538
|
+
|
|
539
|
+
# Handle branches that became empty behind our back
|
|
540
|
+
if yes_branch is not None and yes_branch.mayRaiseException(exception_type):
|
|
541
|
+
return True
|
|
542
|
+
|
|
543
|
+
no_branch = self.subnode_no_branch
|
|
544
|
+
|
|
545
|
+
# Handle branches that became empty behind our back
|
|
546
|
+
if no_branch is not None and no_branch.mayRaiseException(exception_type):
|
|
547
|
+
return True
|
|
548
|
+
|
|
549
|
+
return False
|
|
550
|
+
|
|
551
|
+
def needsFrame(self):
|
|
552
|
+
condition = self.subnode_condition
|
|
553
|
+
|
|
554
|
+
if condition.mayRaiseException(BaseException):
|
|
555
|
+
return True
|
|
556
|
+
|
|
557
|
+
if condition.mayRaiseExceptionBool(BaseException):
|
|
558
|
+
return True
|
|
559
|
+
|
|
560
|
+
yes_branch = self.subnode_yes_branch
|
|
561
|
+
|
|
562
|
+
# Handle branches that became empty behind our back
|
|
563
|
+
if yes_branch is not None and yes_branch.needsFrame():
|
|
564
|
+
return True
|
|
565
|
+
|
|
566
|
+
no_branch = self.subnode_no_branch
|
|
567
|
+
|
|
568
|
+
# Handle branches that became empty behind our back
|
|
569
|
+
if no_branch is not None and no_branch.needsFrame():
|
|
570
|
+
return True
|
|
571
|
+
|
|
572
|
+
return False
|
|
573
|
+
|
|
574
|
+
def computeStatement(self, trace_collection):
|
|
575
|
+
# This is rather complex stuff, pylint: disable=too-many-branches,too-many-statements
|
|
576
|
+
|
|
577
|
+
condition = trace_collection.onExpression(self.subnode_condition)
|
|
578
|
+
|
|
579
|
+
# No need to look any further, if the condition raises, the branches do
|
|
580
|
+
# not matter at all.
|
|
581
|
+
if condition.willRaiseAnyException():
|
|
582
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
583
|
+
expression=condition, node=self
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
return (
|
|
587
|
+
result,
|
|
588
|
+
"new_raise",
|
|
589
|
+
"""\
|
|
590
|
+
Conditional statements already raises implicitly in condition, removing \
|
|
591
|
+
branches.""",
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
# Tell it we are evaluation it for boolean value only, it may demote
|
|
595
|
+
# itself possibly.
|
|
596
|
+
truth_value, condition = self._computeConditionTruthValue(trace_collection)
|
|
597
|
+
|
|
598
|
+
# TODO: We now know that condition evaluates to true for the yes branch
|
|
599
|
+
# and to not true for no branch, the branch collection should know that.
|
|
600
|
+
yes_branch = self.subnode_yes_branch
|
|
601
|
+
no_branch = self.subnode_no_branch
|
|
602
|
+
|
|
603
|
+
# Handle branches that became empty behind our back.
|
|
604
|
+
if yes_branch is not None:
|
|
605
|
+
if not yes_branch.subnode_statements:
|
|
606
|
+
yes_branch.finalize()
|
|
607
|
+
yes_branch = None
|
|
608
|
+
|
|
609
|
+
self.setChildYesBranch(None)
|
|
610
|
+
|
|
611
|
+
if no_branch is not None:
|
|
612
|
+
if not no_branch.subnode_statements:
|
|
613
|
+
no_branch.finalize()
|
|
614
|
+
no_branch = None
|
|
615
|
+
|
|
616
|
+
self.setChildNoBranch(None)
|
|
617
|
+
|
|
618
|
+
# Consider to not remove branches that we know won't be taken.
|
|
619
|
+
if yes_branch is not None and truth_value is False:
|
|
620
|
+
trace_collection.signalChange(
|
|
621
|
+
tags="new_statements",
|
|
622
|
+
source_ref=yes_branch.source_ref,
|
|
623
|
+
message="Removed conditional branch that cannot be taken due to false condition value.",
|
|
624
|
+
)
|
|
625
|
+
|
|
626
|
+
yes_branch.finalize()
|
|
627
|
+
yes_branch = None
|
|
628
|
+
|
|
629
|
+
self.setChildYesBranch(None)
|
|
630
|
+
|
|
631
|
+
if no_branch is not None and truth_value is True:
|
|
632
|
+
trace_collection.signalChange(
|
|
633
|
+
tags="new_statements",
|
|
634
|
+
source_ref=no_branch.source_ref,
|
|
635
|
+
message="Removed 'else' branch that cannot be taken due to true condition value.",
|
|
636
|
+
)
|
|
637
|
+
|
|
638
|
+
no_branch.finalize()
|
|
639
|
+
no_branch = None
|
|
640
|
+
|
|
641
|
+
self.setChildNoBranch(None)
|
|
642
|
+
|
|
643
|
+
# Do we need to merge branches
|
|
644
|
+
needs_merge = True
|
|
645
|
+
|
|
646
|
+
# Continue to execute for yes branch unless we know it's not going to be
|
|
647
|
+
# relevant.
|
|
648
|
+
if yes_branch is not None:
|
|
649
|
+
branch_yes_collection = TraceCollectionBranch(
|
|
650
|
+
parent=trace_collection, name="conditional yes branch"
|
|
651
|
+
)
|
|
652
|
+
|
|
653
|
+
yes_branch = branch_yes_collection.computeBranch(branch=yes_branch)
|
|
654
|
+
|
|
655
|
+
# If it's aborting, it doesn't contribute to merging.
|
|
656
|
+
if yes_branch is not None and yes_branch.isStatementAborting():
|
|
657
|
+
branch_yes_collection = None
|
|
658
|
+
needs_merge = False
|
|
659
|
+
else:
|
|
660
|
+
branch_yes_collection = None
|
|
661
|
+
|
|
662
|
+
# Continue to execute for yes branch.
|
|
663
|
+
if no_branch is not None:
|
|
664
|
+
branch_no_collection = TraceCollectionBranch(
|
|
665
|
+
parent=trace_collection, name="conditional no branch"
|
|
666
|
+
)
|
|
667
|
+
|
|
668
|
+
no_branch = branch_no_collection.computeBranch(branch=no_branch)
|
|
669
|
+
|
|
670
|
+
# If it's aborting, it doesn't contribute to merging.
|
|
671
|
+
if no_branch is not None and no_branch.isStatementAborting():
|
|
672
|
+
branch_no_collection = None
|
|
673
|
+
needs_merge = False
|
|
674
|
+
else:
|
|
675
|
+
branch_no_collection = None
|
|
676
|
+
|
|
677
|
+
if truth_value is True:
|
|
678
|
+
if branch_yes_collection is not None:
|
|
679
|
+
trace_collection.replaceBranch(branch_yes_collection)
|
|
680
|
+
elif truth_value is False:
|
|
681
|
+
if branch_no_collection is not None:
|
|
682
|
+
trace_collection.replaceBranch(branch_no_collection)
|
|
683
|
+
else:
|
|
684
|
+
if needs_merge:
|
|
685
|
+
trace_collection.mergeBranches(
|
|
686
|
+
branch_yes_collection, branch_no_collection
|
|
687
|
+
)
|
|
688
|
+
else:
|
|
689
|
+
if branch_yes_collection is not None:
|
|
690
|
+
trace_collection.replaceBranch(branch_yes_collection)
|
|
691
|
+
elif branch_no_collection is not None:
|
|
692
|
+
trace_collection.replaceBranch(branch_no_collection)
|
|
693
|
+
|
|
694
|
+
# Both branches may have become empty, which case, the statement needs
|
|
695
|
+
# not remain.
|
|
696
|
+
if yes_branch is None and no_branch is None:
|
|
697
|
+
# Need to keep the boolean check.
|
|
698
|
+
if truth_value is None:
|
|
699
|
+
condition = ExpressionBuiltinBool(
|
|
700
|
+
value=condition, source_ref=condition.getSourceReference()
|
|
701
|
+
)
|
|
702
|
+
|
|
703
|
+
if condition.mayHaveSideEffects():
|
|
704
|
+
# With both branches eliminated, the condition remains as a side
|
|
705
|
+
# effect.
|
|
706
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
707
|
+
expression=condition, node=self
|
|
708
|
+
)
|
|
709
|
+
|
|
710
|
+
del self.parent
|
|
711
|
+
|
|
712
|
+
return (
|
|
713
|
+
result,
|
|
714
|
+
"new_statements",
|
|
715
|
+
"""\
|
|
716
|
+
Both branches have no effect, reduced to evaluate condition.""",
|
|
717
|
+
)
|
|
718
|
+
else:
|
|
719
|
+
self.finalize()
|
|
720
|
+
|
|
721
|
+
return (
|
|
722
|
+
None,
|
|
723
|
+
"new_statements",
|
|
724
|
+
"""\
|
|
725
|
+
Removed conditional statement without effect.""",
|
|
726
|
+
)
|
|
727
|
+
|
|
728
|
+
# Note: Checking the condition late, so that the surviving branch got
|
|
729
|
+
# processed already. Returning without doing that, will corrupt the SSA
|
|
730
|
+
# results. TODO: Could pretend the other branch didn't exist to save
|
|
731
|
+
# complexity the merging of processing.
|
|
732
|
+
if truth_value is not None:
|
|
733
|
+
if truth_value is True:
|
|
734
|
+
choice = "true"
|
|
735
|
+
|
|
736
|
+
new_statement = yes_branch
|
|
737
|
+
if no_branch is not None:
|
|
738
|
+
no_branch.finalize()
|
|
739
|
+
else:
|
|
740
|
+
choice = "false"
|
|
741
|
+
|
|
742
|
+
new_statement = no_branch
|
|
743
|
+
if yes_branch is not None:
|
|
744
|
+
yes_branch.finalize()
|
|
745
|
+
|
|
746
|
+
new_statement = wrapStatementWithSideEffects(
|
|
747
|
+
new_node=new_statement,
|
|
748
|
+
old_node=condition,
|
|
749
|
+
allow_none=True, # surviving branch may empty
|
|
750
|
+
)
|
|
751
|
+
|
|
752
|
+
del self.parent
|
|
753
|
+
|
|
754
|
+
return (
|
|
755
|
+
new_statement,
|
|
756
|
+
"new_statements",
|
|
757
|
+
"""\
|
|
758
|
+
Condition for branch statement was predicted to be always '%s'."""
|
|
759
|
+
% choice,
|
|
760
|
+
)
|
|
761
|
+
|
|
762
|
+
# If there is no "yes" branch, remove that. Maybe a bad idea though.
|
|
763
|
+
if yes_branch is None:
|
|
764
|
+
# Would be eliminated already, if there wasn't any "no" branch
|
|
765
|
+
# either.
|
|
766
|
+
assert no_branch is not None
|
|
767
|
+
|
|
768
|
+
new_statement = makeStatementConditional(
|
|
769
|
+
condition=ExpressionOperationNot(
|
|
770
|
+
operand=condition, source_ref=condition.getSourceReference()
|
|
771
|
+
),
|
|
772
|
+
yes_branch=no_branch,
|
|
773
|
+
no_branch=None,
|
|
774
|
+
source_ref=self.source_ref,
|
|
775
|
+
)
|
|
776
|
+
|
|
777
|
+
del self.parent
|
|
778
|
+
|
|
779
|
+
return (
|
|
780
|
+
new_statement,
|
|
781
|
+
"new_statements",
|
|
782
|
+
"""\
|
|
783
|
+
Empty 'yes' branch for conditional statement treated with inverted condition check.""",
|
|
784
|
+
)
|
|
785
|
+
|
|
786
|
+
return self, None, None
|
|
787
|
+
|
|
788
|
+
def mayReturn(self):
|
|
789
|
+
yes_branch = self.subnode_yes_branch
|
|
790
|
+
|
|
791
|
+
if yes_branch is not None and yes_branch.mayReturn():
|
|
792
|
+
return True
|
|
793
|
+
|
|
794
|
+
no_branch = self.subnode_no_branch
|
|
795
|
+
|
|
796
|
+
if no_branch is not None and no_branch.mayReturn():
|
|
797
|
+
return True
|
|
798
|
+
|
|
799
|
+
return False
|
|
800
|
+
|
|
801
|
+
def mayBreak(self):
|
|
802
|
+
yes_branch = self.subnode_yes_branch
|
|
803
|
+
|
|
804
|
+
if yes_branch is not None and yes_branch.mayBreak():
|
|
805
|
+
return True
|
|
806
|
+
|
|
807
|
+
no_branch = self.subnode_no_branch
|
|
808
|
+
|
|
809
|
+
if no_branch is not None and no_branch.mayBreak():
|
|
810
|
+
return True
|
|
811
|
+
|
|
812
|
+
return False
|
|
813
|
+
|
|
814
|
+
def mayContinue(self):
|
|
815
|
+
yes_branch = self.subnode_yes_branch
|
|
816
|
+
|
|
817
|
+
if yes_branch is not None and yes_branch.mayContinue():
|
|
818
|
+
return True
|
|
819
|
+
|
|
820
|
+
no_branch = self.subnode_no_branch
|
|
821
|
+
|
|
822
|
+
if no_branch is not None and no_branch.mayContinue():
|
|
823
|
+
return True
|
|
824
|
+
|
|
825
|
+
return False
|
|
826
|
+
|
|
827
|
+
@staticmethod
|
|
828
|
+
def getStatementNiceName():
|
|
829
|
+
return "branch statement"
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
def makeNotExpression(expression):
|
|
833
|
+
# These are invertible with bool type shape.
|
|
834
|
+
if expression.isExpressionComparison() and expression.getTypeShape() is tshape_bool:
|
|
835
|
+
return expression.makeInverseComparison()
|
|
836
|
+
else:
|
|
837
|
+
return ExpressionOperationNot(
|
|
838
|
+
operand=expression, source_ref=expression.getSourceReference()
|
|
839
|
+
)
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
def makeStatementConditional(condition, yes_branch, no_branch, source_ref):
|
|
843
|
+
"""Create conditional statement, with yes_branch not being empty.
|
|
844
|
+
|
|
845
|
+
May have to invert condition to achieve that.
|
|
846
|
+
"""
|
|
847
|
+
|
|
848
|
+
if yes_branch is None:
|
|
849
|
+
condition = makeNotExpression(expression=condition)
|
|
850
|
+
|
|
851
|
+
yes_branch, no_branch = no_branch, yes_branch
|
|
852
|
+
|
|
853
|
+
if yes_branch is not None and not yes_branch.isStatementsSequence():
|
|
854
|
+
yes_branch = StatementsSequence(
|
|
855
|
+
statements=(yes_branch,), source_ref=yes_branch.source_ref
|
|
856
|
+
)
|
|
857
|
+
|
|
858
|
+
if no_branch is not None and not no_branch.isStatementsSequence():
|
|
859
|
+
no_branch = StatementsSequence(
|
|
860
|
+
statements=(no_branch,), source_ref=no_branch.source_ref
|
|
861
|
+
)
|
|
862
|
+
|
|
863
|
+
return StatementConditional(
|
|
864
|
+
condition=condition,
|
|
865
|
+
yes_branch=yes_branch,
|
|
866
|
+
no_branch=no_branch,
|
|
867
|
+
source_ref=source_ref,
|
|
868
|
+
)
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
872
|
+
# integrates with CPython, but also works on its own.
|
|
873
|
+
#
|
|
874
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
875
|
+
# you may not use this file except in compliance with the License.
|
|
876
|
+
# You may obtain a copy of the License at
|
|
877
|
+
#
|
|
878
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
879
|
+
#
|
|
880
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
881
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
882
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
883
|
+
# See the License for the specific language governing permissions and
|
|
884
|
+
# limitations under the License.
|