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,1177 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Assignment related nodes.
|
|
5
|
+
|
|
6
|
+
The most simple assignment statement ``a = b`` is what we have here. All others
|
|
7
|
+
are either re-formulated using temporary variables, e.g. ``a, b = c`` or are
|
|
8
|
+
attribute, slice, subscript assignments.
|
|
9
|
+
|
|
10
|
+
The deletion is a separate node unlike in CPython where assigning to ``NULL`` is
|
|
11
|
+
internally what deletion is. But deleting is something entirely different to us
|
|
12
|
+
during code generation, which is why we keep them separate.
|
|
13
|
+
|
|
14
|
+
Tracing assignments in SSA form is the core of optimization for which we use
|
|
15
|
+
the traces.
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from abc import abstractmethod
|
|
20
|
+
|
|
21
|
+
from nuitka.ModuleRegistry import getOwnerFromCodeName
|
|
22
|
+
from nuitka.Options import isExperimental
|
|
23
|
+
|
|
24
|
+
from .ConstantRefNodes import makeConstantRefNode
|
|
25
|
+
from .NodeMakingHelpers import (
|
|
26
|
+
makeStatementExpressionOnlyReplacementNode,
|
|
27
|
+
makeStatementsSequenceReplacementNode,
|
|
28
|
+
)
|
|
29
|
+
from .shapes.ControlFlowDescriptions import (
|
|
30
|
+
ControlFlowDescriptionElementBasedEscape,
|
|
31
|
+
ControlFlowDescriptionFullEscape,
|
|
32
|
+
ControlFlowDescriptionNoEscape,
|
|
33
|
+
)
|
|
34
|
+
from .shapes.IteratorShapes import tshape_iterator
|
|
35
|
+
from .shapes.StandardShapes import tshape_unknown
|
|
36
|
+
from .StatementBasesGenerated import (
|
|
37
|
+
StatementAssignmentVariableConstantImmutableBase,
|
|
38
|
+
StatementAssignmentVariableConstantMutableBase,
|
|
39
|
+
StatementAssignmentVariableFromTempVariableBase,
|
|
40
|
+
StatementAssignmentVariableFromVariableBase,
|
|
41
|
+
StatementAssignmentVariableGenericBase,
|
|
42
|
+
StatementAssignmentVariableHardValueBase,
|
|
43
|
+
StatementAssignmentVariableIteratorBase,
|
|
44
|
+
)
|
|
45
|
+
from .VariableDelNodes import makeStatementDelVariable
|
|
46
|
+
from .VariableRefNodes import ExpressionTempVariableRef
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class StatementAssignmentVariableMixin(object):
|
|
50
|
+
"""Assignment to a variable from an expression.
|
|
51
|
+
|
|
52
|
+
All assignment forms that are not to attributes, slices, subscripts
|
|
53
|
+
use this.
|
|
54
|
+
|
|
55
|
+
The source might be a complex expression. The target can be any kind
|
|
56
|
+
of variable, temporary, local, global, etc.
|
|
57
|
+
|
|
58
|
+
Assigning a variable is something we trace in a new version, this is
|
|
59
|
+
hidden behind target variable reference, which has this version once
|
|
60
|
+
it can be determined.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
64
|
+
__slots__ = ()
|
|
65
|
+
|
|
66
|
+
@staticmethod
|
|
67
|
+
def isStatementAssignmentVariable():
|
|
68
|
+
return True
|
|
69
|
+
|
|
70
|
+
def finalize(self):
|
|
71
|
+
del self.variable
|
|
72
|
+
del self.variable_trace
|
|
73
|
+
self.subnode_source.finalize()
|
|
74
|
+
del self.subnode_source
|
|
75
|
+
|
|
76
|
+
def getDetailsForDisplay(self):
|
|
77
|
+
return {
|
|
78
|
+
"variable_name": self.getVariableName(),
|
|
79
|
+
"is_temp": self.variable.isTempVariable(),
|
|
80
|
+
"var_type": self.variable.getVariableType(),
|
|
81
|
+
"owner": self.variable.getOwner().getCodeName(),
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@classmethod
|
|
85
|
+
def fromXML(cls, provider, source_ref, **args):
|
|
86
|
+
# Virtual method overload, pylint: disable=unused-argument
|
|
87
|
+
owner = getOwnerFromCodeName(args["owner"])
|
|
88
|
+
|
|
89
|
+
if args["is_temp"] == "True":
|
|
90
|
+
variable = owner.createTempVariable(
|
|
91
|
+
args["variable_name"], temp_type=["var_type"]
|
|
92
|
+
)
|
|
93
|
+
else:
|
|
94
|
+
variable = owner.getProvidedVariable(args["variable_name"])
|
|
95
|
+
|
|
96
|
+
del args["is_temp"]
|
|
97
|
+
del args["var_type"]
|
|
98
|
+
del args["owner"]
|
|
99
|
+
|
|
100
|
+
version = variable.allocateTargetNumber()
|
|
101
|
+
|
|
102
|
+
return cls(variable=variable, version=version, source_ref=source_ref, **args)
|
|
103
|
+
|
|
104
|
+
def makeClone(self):
|
|
105
|
+
version = self.variable.allocateTargetNumber()
|
|
106
|
+
|
|
107
|
+
return self.__class__(
|
|
108
|
+
source=self.subnode_source.makeClone(),
|
|
109
|
+
variable=self.variable,
|
|
110
|
+
variable_version=version,
|
|
111
|
+
source_ref=self.source_ref,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def getVariableName(self):
|
|
115
|
+
return self.variable.getName()
|
|
116
|
+
|
|
117
|
+
def getVariable(self):
|
|
118
|
+
return self.variable
|
|
119
|
+
|
|
120
|
+
def setVariable(self, variable):
|
|
121
|
+
self.variable = variable
|
|
122
|
+
self.variable_version = variable.allocateTargetNumber()
|
|
123
|
+
|
|
124
|
+
def getVariableTrace(self):
|
|
125
|
+
return self.variable_trace
|
|
126
|
+
|
|
127
|
+
def markAsInplaceSuspect(self):
|
|
128
|
+
self.inplace_suspect = True
|
|
129
|
+
|
|
130
|
+
def isInplaceSuspect(self):
|
|
131
|
+
return self.inplace_suspect
|
|
132
|
+
|
|
133
|
+
def removeMarkAsInplaceSuspect(self):
|
|
134
|
+
self.inplace_suspect = False
|
|
135
|
+
|
|
136
|
+
def mayRaiseException(self, exception_type):
|
|
137
|
+
return self.subnode_source.mayRaiseException(exception_type)
|
|
138
|
+
|
|
139
|
+
def needsReleasePreviousValue(self):
|
|
140
|
+
previous = self.variable_trace.getPrevious()
|
|
141
|
+
|
|
142
|
+
if previous.mustNotHaveValue():
|
|
143
|
+
return False
|
|
144
|
+
elif previous.mustHaveValue():
|
|
145
|
+
return True
|
|
146
|
+
else:
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
@staticmethod
|
|
150
|
+
def getStatementNiceName():
|
|
151
|
+
return "variable assignment statement"
|
|
152
|
+
|
|
153
|
+
def getTypeShape(self):
|
|
154
|
+
# Might be finalized, e.g. due to being dead code.
|
|
155
|
+
try:
|
|
156
|
+
source = self.subnode_source
|
|
157
|
+
except AttributeError:
|
|
158
|
+
return tshape_unknown
|
|
159
|
+
|
|
160
|
+
return source.getTypeShape()
|
|
161
|
+
|
|
162
|
+
@staticmethod
|
|
163
|
+
def mayHaveSideEffects():
|
|
164
|
+
# TODO: May execute "__del__" code, it would be sweet to be able to predict
|
|
165
|
+
# if another reference will still be active for a value though, or if there
|
|
166
|
+
# is such a code for the type shape.
|
|
167
|
+
return True
|
|
168
|
+
|
|
169
|
+
def _considerSpecialization(self, old_source, source):
|
|
170
|
+
if source.isCompileTimeConstant():
|
|
171
|
+
result = makeStatementAssignmentVariableConstant(
|
|
172
|
+
source=source,
|
|
173
|
+
variable=self.variable,
|
|
174
|
+
variable_version=self.variable_version,
|
|
175
|
+
very_trusted=old_source.isExpressionImportName(),
|
|
176
|
+
source_ref=self.source_ref,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
return (
|
|
180
|
+
result,
|
|
181
|
+
"new_statements",
|
|
182
|
+
"Assignment source of '%s' is now compile time constant."
|
|
183
|
+
% self.getVariableName(),
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
if source.isExpressionVariableRef():
|
|
187
|
+
result = StatementAssignmentVariableFromVariable(
|
|
188
|
+
source=source,
|
|
189
|
+
variable=self.variable,
|
|
190
|
+
variable_version=self.variable_version,
|
|
191
|
+
source_ref=self.source_ref,
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
return (
|
|
195
|
+
result,
|
|
196
|
+
"new_statements",
|
|
197
|
+
"Assignment source is now variable reference.",
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
if source.isExpressionTempVariableRef():
|
|
201
|
+
result = StatementAssignmentVariableFromTempVariable(
|
|
202
|
+
source=source,
|
|
203
|
+
variable=self.variable,
|
|
204
|
+
variable_version=self.variable_version,
|
|
205
|
+
source_ref=self.source_ref,
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
return (
|
|
209
|
+
result,
|
|
210
|
+
"new_statements",
|
|
211
|
+
"Assignment source is now temp variable reference.",
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
if source.getTypeShape().isShapeIterator():
|
|
215
|
+
result = StatementAssignmentVariableIterator(
|
|
216
|
+
source=source,
|
|
217
|
+
variable=self.variable,
|
|
218
|
+
variable_version=self.variable_version,
|
|
219
|
+
source_ref=self.source_ref,
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
return (
|
|
223
|
+
result,
|
|
224
|
+
"new_statements",
|
|
225
|
+
"Assignment source is now known to be iterator.",
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
if source.hasVeryTrustedValue():
|
|
229
|
+
result = StatementAssignmentVariableHardValue(
|
|
230
|
+
source=source,
|
|
231
|
+
variable=self.variable,
|
|
232
|
+
variable_version=self.variable_version,
|
|
233
|
+
source_ref=self.source_ref,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
return (
|
|
237
|
+
result,
|
|
238
|
+
"new_statements",
|
|
239
|
+
"Assignment source is now known to be hard import.",
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
return self, None, None
|
|
243
|
+
|
|
244
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
245
|
+
emit_write(self.variable)
|
|
246
|
+
self.subnode_source.collectVariableAccesses(emit_read, emit_write)
|
|
247
|
+
|
|
248
|
+
@abstractmethod
|
|
249
|
+
def hasVeryTrustedValue(self):
|
|
250
|
+
"""Does this assignment node have a very trusted value."""
|
|
251
|
+
|
|
252
|
+
@abstractmethod
|
|
253
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
254
|
+
"""Set the value trace for the assignment form."""
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class StatementAssignmentVariableGeneric(
|
|
258
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableGenericBase
|
|
259
|
+
):
|
|
260
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_GENERIC"
|
|
261
|
+
|
|
262
|
+
named_children = ("source|setter",)
|
|
263
|
+
nice_children = ("assignment source",)
|
|
264
|
+
node_attributes = ("variable", "variable_version")
|
|
265
|
+
auto_compute_handling = "post_init"
|
|
266
|
+
|
|
267
|
+
__slots__ = (
|
|
268
|
+
"variable_trace",
|
|
269
|
+
# TODO: Does every variant have to care here
|
|
270
|
+
"inplace_suspect",
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
274
|
+
|
|
275
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
276
|
+
def postInitNode(self):
|
|
277
|
+
self.variable_trace = None
|
|
278
|
+
self.inplace_suspect = None
|
|
279
|
+
|
|
280
|
+
@staticmethod
|
|
281
|
+
def getReleaseEscape():
|
|
282
|
+
return ControlFlowDescriptionFullEscape
|
|
283
|
+
|
|
284
|
+
def computeStatement(self, trace_collection):
|
|
285
|
+
# TODO: Way too ugly to have global trace kinds just here, and needs to
|
|
286
|
+
# be abstracted somehow. But for now we let it live here.
|
|
287
|
+
old_source = self.subnode_source
|
|
288
|
+
variable = self.variable
|
|
289
|
+
|
|
290
|
+
if old_source.isExpressionSideEffects():
|
|
291
|
+
# If the assignment source has side effects, we can put them into a
|
|
292
|
+
# sequence and compute that instead.
|
|
293
|
+
statements = [
|
|
294
|
+
makeStatementExpressionOnlyReplacementNode(side_effect, self)
|
|
295
|
+
for side_effect in old_source.subnode_side_effects
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
statements.append(self)
|
|
299
|
+
|
|
300
|
+
# Remember out parent, we will assign it for the sequence to use.
|
|
301
|
+
parent = self.parent
|
|
302
|
+
|
|
303
|
+
# Need to update ourselves to no longer reference the side effects,
|
|
304
|
+
# but go to the wrapped thing.
|
|
305
|
+
self.setChildSource(old_source.subnode_expression)
|
|
306
|
+
|
|
307
|
+
result = makeStatementsSequenceReplacementNode(
|
|
308
|
+
statements=statements, node=self
|
|
309
|
+
)
|
|
310
|
+
result.parent = parent
|
|
311
|
+
|
|
312
|
+
return (
|
|
313
|
+
result.computeStatementsSequence(trace_collection),
|
|
314
|
+
"new_statements",
|
|
315
|
+
"""\
|
|
316
|
+
Side effects of assignments promoted to statements.""",
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
# Let assignment source may re-compute first.
|
|
320
|
+
source = trace_collection.onExpression(self.subnode_source)
|
|
321
|
+
|
|
322
|
+
# No assignment will occur, if the assignment source raises, so give up
|
|
323
|
+
# on this, and return it as the only side effect.
|
|
324
|
+
if source.willRaiseAnyException():
|
|
325
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
326
|
+
expression=source, node=self
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
del self.parent
|
|
330
|
+
|
|
331
|
+
return (
|
|
332
|
+
result,
|
|
333
|
+
"new_raise",
|
|
334
|
+
"""\
|
|
335
|
+
Assignment raises exception in assigned value, removed assignment.""",
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
# Assigning from and to the same variable, can be optimized away
|
|
339
|
+
# immediately, there is no point in doing it. Exceptions are of course
|
|
340
|
+
# module variables that collide with built-in names.
|
|
341
|
+
|
|
342
|
+
# TODO: The variable type checks ought to become unnecessary, as they
|
|
343
|
+
# are to be a feature of the trace. Assigning from known assigned is
|
|
344
|
+
# supposed to be possible to eliminate. If we get that wrong, we are
|
|
345
|
+
# doing it wrong.
|
|
346
|
+
if (
|
|
347
|
+
not variable.isModuleVariable()
|
|
348
|
+
and source.isExpressionVariableRef()
|
|
349
|
+
and source.getVariable() is variable
|
|
350
|
+
):
|
|
351
|
+
# A variable access that has a side effect, must be preserved,
|
|
352
|
+
# so it can e.g. raise an exception, otherwise we can be fully
|
|
353
|
+
# removed.
|
|
354
|
+
if source.mayHaveSideEffects():
|
|
355
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
356
|
+
expression=source, node=self
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
return (
|
|
360
|
+
result,
|
|
361
|
+
"new_statements",
|
|
362
|
+
"""\
|
|
363
|
+
Lowered assignment of %s from itself to mere access of it."""
|
|
364
|
+
% variable.getDescription(),
|
|
365
|
+
)
|
|
366
|
+
else:
|
|
367
|
+
return (
|
|
368
|
+
None,
|
|
369
|
+
"new_statements",
|
|
370
|
+
"""\
|
|
371
|
+
Removed assignment of %s from itself which is known to be defined."""
|
|
372
|
+
% variable.getDescription(),
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
if source is old_source:
|
|
376
|
+
result = self, None, None
|
|
377
|
+
else:
|
|
378
|
+
result = self._considerSpecialization(old_source, source)
|
|
379
|
+
result[0].parent = self.parent
|
|
380
|
+
|
|
381
|
+
result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
|
|
382
|
+
|
|
383
|
+
return result
|
|
384
|
+
|
|
385
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
386
|
+
# Set-up the trace to the trace collection, so future references will
|
|
387
|
+
# find this assignment.
|
|
388
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
389
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
390
|
+
)
|
|
391
|
+
|
|
392
|
+
# TODO: Determine from future use of assigned variable, if this is needed at all.
|
|
393
|
+
trace_collection.removeKnowledge(source)
|
|
394
|
+
|
|
395
|
+
def hasVeryTrustedValue(self):
|
|
396
|
+
"""Does this assignment node have a very trusted value."""
|
|
397
|
+
return self.subnode_source.hasVeryTrustedValue()
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
class StatementAssignmentVariableIterator(
|
|
401
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableIteratorBase
|
|
402
|
+
):
|
|
403
|
+
# Carries state for propagating iterators potentially.
|
|
404
|
+
|
|
405
|
+
# TODO: Maybe have a namedtuple with these intended for index replacement,
|
|
406
|
+
# they form once set of things pylint: disable=too-many-instance-attributes
|
|
407
|
+
|
|
408
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_ITERATOR"
|
|
409
|
+
|
|
410
|
+
named_children = ("source",)
|
|
411
|
+
nice_children = ("assignment source",)
|
|
412
|
+
node_attributes = ("variable", "variable_version")
|
|
413
|
+
auto_compute_handling = "post_init"
|
|
414
|
+
|
|
415
|
+
__slots__ = (
|
|
416
|
+
"variable_trace",
|
|
417
|
+
# TODO: Does every variant have to care here
|
|
418
|
+
"inplace_suspect",
|
|
419
|
+
"type_shape",
|
|
420
|
+
"temp_scope",
|
|
421
|
+
"tmp_iterated_variable",
|
|
422
|
+
"tmp_iteration_count_variable",
|
|
423
|
+
"tmp_iteration_next_variable",
|
|
424
|
+
"is_indexable",
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
428
|
+
|
|
429
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
430
|
+
def postInitNode(self):
|
|
431
|
+
self.variable_trace = None
|
|
432
|
+
self.inplace_suspect = None
|
|
433
|
+
|
|
434
|
+
# Have a valid start value, later this will become more specific.
|
|
435
|
+
self.type_shape = tshape_iterator
|
|
436
|
+
|
|
437
|
+
# For replacing with indexing potentially.
|
|
438
|
+
self.temp_scope = None
|
|
439
|
+
self.tmp_iterated_variable = None
|
|
440
|
+
self.tmp_iteration_count_variable = None
|
|
441
|
+
self.tmp_iteration_next_variable = None
|
|
442
|
+
|
|
443
|
+
# When found non-indexable, we do not try again.
|
|
444
|
+
self.is_indexable = None
|
|
445
|
+
|
|
446
|
+
def getTypeShape(self):
|
|
447
|
+
return self.type_shape
|
|
448
|
+
|
|
449
|
+
@staticmethod
|
|
450
|
+
def getReleaseEscape():
|
|
451
|
+
# TODO: For iteration over constants that wouldn't be necessary,
|
|
452
|
+
# but if we know the iteration well enough, it's supposed to be
|
|
453
|
+
# converted to something else anyway.
|
|
454
|
+
return ControlFlowDescriptionElementBasedEscape
|
|
455
|
+
|
|
456
|
+
def getIterationIndexDesc(self):
|
|
457
|
+
"""For use in optimization outputs only, here and using nodes."""
|
|
458
|
+
return "'%s[%s]'" % (
|
|
459
|
+
self.tmp_iterated_variable.getName(),
|
|
460
|
+
self.tmp_iteration_count_variable.getName(),
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
def _replaceWithDirectAccess(self, trace_collection, provider):
|
|
464
|
+
self.temp_scope = provider.allocateTempScope("iterator_access")
|
|
465
|
+
|
|
466
|
+
self.tmp_iterated_variable = provider.allocateTempVariable(
|
|
467
|
+
temp_scope=self.temp_scope, name="iterated_value", temp_type="object"
|
|
468
|
+
)
|
|
469
|
+
|
|
470
|
+
reference_iterated = ExpressionTempVariableRef(
|
|
471
|
+
variable=self.tmp_iterated_variable,
|
|
472
|
+
source_ref=self.subnode_source.source_ref,
|
|
473
|
+
)
|
|
474
|
+
|
|
475
|
+
iterated_value = self.subnode_source.subnode_value
|
|
476
|
+
|
|
477
|
+
assign_iterated = makeStatementAssignmentVariable(
|
|
478
|
+
source=iterated_value,
|
|
479
|
+
variable=self.tmp_iterated_variable,
|
|
480
|
+
source_ref=iterated_value.source_ref,
|
|
481
|
+
)
|
|
482
|
+
|
|
483
|
+
self.tmp_iteration_count_variable = provider.allocateTempVariable(
|
|
484
|
+
temp_scope=self.temp_scope, name="iteration_count", temp_type="object"
|
|
485
|
+
)
|
|
486
|
+
|
|
487
|
+
assign_iteration_count = makeStatementAssignmentVariable(
|
|
488
|
+
source=makeConstantRefNode(constant=0, source_ref=self.source_ref),
|
|
489
|
+
variable=self.tmp_iteration_count_variable,
|
|
490
|
+
source_ref=iterated_value.source_ref,
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
# TODO: Unclear what node this really is right now, need to try out.
|
|
494
|
+
self.subnode_source.setChildValue(reference_iterated)
|
|
495
|
+
|
|
496
|
+
# Make sure variable trace is computed.
|
|
497
|
+
assign_iterated.computeStatement(trace_collection)
|
|
498
|
+
assign_iteration_count.computeStatement(trace_collection)
|
|
499
|
+
reference_iterated.computeExpressionRaw(trace_collection)
|
|
500
|
+
|
|
501
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
502
|
+
variable=self.variable,
|
|
503
|
+
version=self.variable_version,
|
|
504
|
+
assign_node=self,
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
# For use when the "next" is replaced.
|
|
508
|
+
self.tmp_iteration_next_variable = provider.allocateTempVariable(
|
|
509
|
+
temp_scope=self.temp_scope, name="next_value", temp_type="object"
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
result = makeStatementsSequenceReplacementNode(
|
|
513
|
+
(assign_iteration_count, assign_iterated, self), self
|
|
514
|
+
)
|
|
515
|
+
|
|
516
|
+
return (
|
|
517
|
+
result,
|
|
518
|
+
"new_statements",
|
|
519
|
+
lambda: "Enabling indexing of iterated value through %s."
|
|
520
|
+
% self.getIterationIndexDesc(),
|
|
521
|
+
)
|
|
522
|
+
|
|
523
|
+
def computeStatement(self, trace_collection):
|
|
524
|
+
# TODO: Way too ugly to have global trace kinds just here, and needs to
|
|
525
|
+
# be abstracted somehow. But for now we let it live here.
|
|
526
|
+
source = self.subnode_source
|
|
527
|
+
variable = self.variable
|
|
528
|
+
|
|
529
|
+
provider = trace_collection.getOwner()
|
|
530
|
+
|
|
531
|
+
# Let assignment source may re-compute first.
|
|
532
|
+
source = trace_collection.onExpression(self.subnode_source)
|
|
533
|
+
|
|
534
|
+
if (
|
|
535
|
+
self.tmp_iterated_variable is None
|
|
536
|
+
and self.is_indexable is None
|
|
537
|
+
and source.isExpressionBuiltinIterForUnpack()
|
|
538
|
+
and isExperimental("iterator-optimization")
|
|
539
|
+
):
|
|
540
|
+
if variable.hasAccessesOutsideOf(provider) is False:
|
|
541
|
+
last_trace = variable.getMatchingUnescapedAssignTrace(self)
|
|
542
|
+
|
|
543
|
+
if last_trace is not None:
|
|
544
|
+
# Might not be allowed, remember if it's not allowed, otherwise retry.
|
|
545
|
+
self.is_indexable = (
|
|
546
|
+
source.subnode_value.getTypeShape().hasShapeIndexLookup()
|
|
547
|
+
)
|
|
548
|
+
|
|
549
|
+
if self.is_indexable:
|
|
550
|
+
return self._replaceWithDirectAccess(
|
|
551
|
+
trace_collection=trace_collection, provider=provider
|
|
552
|
+
)
|
|
553
|
+
|
|
554
|
+
# No assignment will occur, if the assignment source raises, so give up
|
|
555
|
+
# on this, and return it as the only side effect.
|
|
556
|
+
if source.willRaiseAnyException():
|
|
557
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
558
|
+
expression=source, node=self
|
|
559
|
+
)
|
|
560
|
+
|
|
561
|
+
del self.parent
|
|
562
|
+
|
|
563
|
+
return (
|
|
564
|
+
result,
|
|
565
|
+
"new_raise",
|
|
566
|
+
"""\
|
|
567
|
+
Assignment raises exception in assigned value, removed assignment.""",
|
|
568
|
+
)
|
|
569
|
+
|
|
570
|
+
self.type_shape = source.getTypeShape()
|
|
571
|
+
|
|
572
|
+
# Set-up the trace to the trace collection, so future references will
|
|
573
|
+
# find this assignment.
|
|
574
|
+
# Note: Keep this aligned with computeStatementAssignmentTraceUpdate
|
|
575
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
576
|
+
variable=variable, version=self.variable_version, assign_node=self
|
|
577
|
+
)
|
|
578
|
+
|
|
579
|
+
return self, None, None
|
|
580
|
+
|
|
581
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
582
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
583
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
@staticmethod
|
|
587
|
+
def hasVeryTrustedValue():
|
|
588
|
+
"""Does this assignment node have a very trusted value."""
|
|
589
|
+
return False
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
class StatementAssignmentVariableConstantMutable(
|
|
593
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableConstantMutableBase
|
|
594
|
+
):
|
|
595
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_MUTABLE"
|
|
596
|
+
|
|
597
|
+
named_children = ("source",)
|
|
598
|
+
nice_children = ("assignment source",)
|
|
599
|
+
node_attributes = ("variable", "variable_version")
|
|
600
|
+
auto_compute_handling = "post_init"
|
|
601
|
+
|
|
602
|
+
__slots__ = (
|
|
603
|
+
"variable_trace",
|
|
604
|
+
# TODO: Does every variant have to care here
|
|
605
|
+
"inplace_suspect",
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
609
|
+
|
|
610
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
611
|
+
def postInitNode(self):
|
|
612
|
+
self.variable_trace = None
|
|
613
|
+
self.inplace_suspect = None
|
|
614
|
+
|
|
615
|
+
@staticmethod
|
|
616
|
+
def mayRaiseException(exception_type):
|
|
617
|
+
return False
|
|
618
|
+
|
|
619
|
+
@staticmethod
|
|
620
|
+
def getReleaseEscape():
|
|
621
|
+
return ControlFlowDescriptionNoEscape
|
|
622
|
+
|
|
623
|
+
def computeStatement(self, trace_collection):
|
|
624
|
+
variable = self.variable
|
|
625
|
+
|
|
626
|
+
# Set-up the trace to the trace collection, so future references will
|
|
627
|
+
# find this assignment.
|
|
628
|
+
# Note: Keep this aligned with computeStatementAssignmentTraceUpdate
|
|
629
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
630
|
+
variable=variable, version=self.variable_version, assign_node=self
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
provider = trace_collection.getOwner()
|
|
634
|
+
|
|
635
|
+
if variable.hasAccessesOutsideOf(provider) is False:
|
|
636
|
+
last_trace = variable.getMatchingAssignTrace(self)
|
|
637
|
+
|
|
638
|
+
if last_trace is not None and not last_trace.getMergeOrNameUsageCount():
|
|
639
|
+
if (
|
|
640
|
+
variable.isModuleVariable()
|
|
641
|
+
or variable.owner.locals_scope.isUnoptimizedFunctionScope()
|
|
642
|
+
):
|
|
643
|
+
# TODO: We do not trust these yet a lot, but more might be
|
|
644
|
+
pass
|
|
645
|
+
else:
|
|
646
|
+
# Unused constants can be eliminated in any case.
|
|
647
|
+
if not last_trace.getUsageCount():
|
|
648
|
+
if not last_trace.getPrevious().isUnassignedTrace():
|
|
649
|
+
result = makeStatementDelVariable(
|
|
650
|
+
variable=self.variable,
|
|
651
|
+
version=self.variable_version,
|
|
652
|
+
tolerant=True,
|
|
653
|
+
source_ref=self.source_ref,
|
|
654
|
+
)
|
|
655
|
+
else:
|
|
656
|
+
result = None
|
|
657
|
+
|
|
658
|
+
return (
|
|
659
|
+
result,
|
|
660
|
+
"new_statements",
|
|
661
|
+
"Dropped dead assignment statement to '%s'."
|
|
662
|
+
% (self.getVariableName()),
|
|
663
|
+
)
|
|
664
|
+
|
|
665
|
+
# Can safely forward propagate only non-mutable constants.
|
|
666
|
+
|
|
667
|
+
return self, None, None
|
|
668
|
+
|
|
669
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
670
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
671
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
672
|
+
)
|
|
673
|
+
|
|
674
|
+
@staticmethod
|
|
675
|
+
def hasVeryTrustedValue():
|
|
676
|
+
"""Does this assignment node have a very trusted value."""
|
|
677
|
+
return False
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
class StatementAssignmentVariableConstantImmutable(
|
|
681
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableConstantImmutableBase
|
|
682
|
+
):
|
|
683
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_IMMUTABLE"
|
|
684
|
+
|
|
685
|
+
named_children = ("source",)
|
|
686
|
+
nice_children = ("assignment source",)
|
|
687
|
+
node_attributes = ("variable", "variable_version")
|
|
688
|
+
auto_compute_handling = "post_init"
|
|
689
|
+
|
|
690
|
+
__slots__ = (
|
|
691
|
+
"variable_trace",
|
|
692
|
+
# TODO: Does every variant have to care here
|
|
693
|
+
"inplace_suspect",
|
|
694
|
+
)
|
|
695
|
+
|
|
696
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
697
|
+
|
|
698
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
699
|
+
def postInitNode(self):
|
|
700
|
+
self.variable_trace = None
|
|
701
|
+
self.inplace_suspect = None
|
|
702
|
+
|
|
703
|
+
@staticmethod
|
|
704
|
+
def mayRaiseException(exception_type):
|
|
705
|
+
return False
|
|
706
|
+
|
|
707
|
+
@staticmethod
|
|
708
|
+
def getReleaseEscape():
|
|
709
|
+
return ControlFlowDescriptionNoEscape
|
|
710
|
+
|
|
711
|
+
def computeStatement(self, trace_collection):
|
|
712
|
+
variable = self.variable
|
|
713
|
+
|
|
714
|
+
# Set-up the trace to the trace collection, so future references will
|
|
715
|
+
# find this assignment.
|
|
716
|
+
provider = trace_collection.getOwner()
|
|
717
|
+
|
|
718
|
+
if variable.hasAccessesOutsideOf(provider) is False:
|
|
719
|
+
last_trace = variable.getMatchingAssignTrace(self)
|
|
720
|
+
|
|
721
|
+
if last_trace is not None and not last_trace.getMergeOrNameUsageCount():
|
|
722
|
+
if (
|
|
723
|
+
variable.isModuleVariable()
|
|
724
|
+
or variable.owner.locals_scope.isUnoptimizedFunctionScope()
|
|
725
|
+
):
|
|
726
|
+
# TODO: We do not trust these yet a lot, but more might be
|
|
727
|
+
pass
|
|
728
|
+
else:
|
|
729
|
+
# Unused constants can be eliminated in any case.
|
|
730
|
+
if not last_trace.getUsageCount():
|
|
731
|
+
if not last_trace.getPrevious().isUnassignedTrace():
|
|
732
|
+
return trace_collection.computedStatementResult(
|
|
733
|
+
statement=makeStatementDelVariable(
|
|
734
|
+
variable=self.variable,
|
|
735
|
+
version=self.variable_version,
|
|
736
|
+
tolerant=True,
|
|
737
|
+
source_ref=self.source_ref,
|
|
738
|
+
),
|
|
739
|
+
change_tags="new_statements",
|
|
740
|
+
change_desc="Lowered dead assignment statement to '%s' to previous value 'del'."
|
|
741
|
+
% self.getVariableName(),
|
|
742
|
+
)
|
|
743
|
+
else:
|
|
744
|
+
return (
|
|
745
|
+
None,
|
|
746
|
+
"new_statements",
|
|
747
|
+
"Dropped dead assignment statement to '%s'."
|
|
748
|
+
% (self.getVariableName()),
|
|
749
|
+
)
|
|
750
|
+
|
|
751
|
+
# Still trace or assignment, for the last time. TODO: Maybe this can be
|
|
752
|
+
# used for the keeping of the "replacement node" as well.
|
|
753
|
+
self.variable_trace = trace_collection.onVariableSetToUnescapablePropagatedValue(
|
|
754
|
+
variable=variable,
|
|
755
|
+
version=self.variable_version,
|
|
756
|
+
assign_node=self,
|
|
757
|
+
replacement=lambda _replaced_node: self.subnode_source.makeClone(),
|
|
758
|
+
)
|
|
759
|
+
|
|
760
|
+
if not last_trace.getPrevious().isUnassignedTrace():
|
|
761
|
+
result = makeStatementDelVariable(
|
|
762
|
+
variable=self.variable,
|
|
763
|
+
version=self.variable_version,
|
|
764
|
+
tolerant=True,
|
|
765
|
+
source_ref=self.source_ref,
|
|
766
|
+
)
|
|
767
|
+
else:
|
|
768
|
+
result = None
|
|
769
|
+
|
|
770
|
+
return (
|
|
771
|
+
result,
|
|
772
|
+
"new_statements",
|
|
773
|
+
"Dropped propagated assignment statement to '%s'."
|
|
774
|
+
% self.getVariableName(),
|
|
775
|
+
)
|
|
776
|
+
|
|
777
|
+
# Note: Keep this aligned with computeStatementAssignmentTraceUpdate
|
|
778
|
+
self.variable_trace = trace_collection.onVariableSetToUnescapableValue(
|
|
779
|
+
variable=variable, version=self.variable_version, assign_node=self
|
|
780
|
+
)
|
|
781
|
+
|
|
782
|
+
return self, None, None
|
|
783
|
+
|
|
784
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
785
|
+
self.variable_trace = trace_collection.onVariableSetToUnescapableValue(
|
|
786
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
787
|
+
)
|
|
788
|
+
|
|
789
|
+
@staticmethod
|
|
790
|
+
def hasVeryTrustedValue():
|
|
791
|
+
"""Does this assignment node have a very trusted value."""
|
|
792
|
+
return False
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
class StatementAssignmentVariableConstantMutableTrusted(
|
|
796
|
+
StatementAssignmentVariableConstantImmutable
|
|
797
|
+
):
|
|
798
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_MUTABLE_TRUSTED"
|
|
799
|
+
|
|
800
|
+
@staticmethod
|
|
801
|
+
def hasVeryTrustedValue():
|
|
802
|
+
return False
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
class StatementAssignmentVariableConstantImmutableTrusted(
|
|
806
|
+
StatementAssignmentVariableConstantImmutable
|
|
807
|
+
):
|
|
808
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_CONSTANT_IMMUTABLE_TRUSTED"
|
|
809
|
+
|
|
810
|
+
@staticmethod
|
|
811
|
+
def hasVeryTrustedValue():
|
|
812
|
+
return True
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
class StatementAssignmentVariableHardValue(
|
|
816
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableHardValueBase
|
|
817
|
+
):
|
|
818
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_HARD_VALUE"
|
|
819
|
+
|
|
820
|
+
named_children = ("source",)
|
|
821
|
+
nice_children = ("assignment source",)
|
|
822
|
+
node_attributes = ("variable", "variable_version")
|
|
823
|
+
auto_compute_handling = "post_init"
|
|
824
|
+
|
|
825
|
+
__slots__ = (
|
|
826
|
+
"variable_trace",
|
|
827
|
+
# TODO: Does every variant have to care here
|
|
828
|
+
"inplace_suspect",
|
|
829
|
+
)
|
|
830
|
+
|
|
831
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
832
|
+
|
|
833
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
834
|
+
def postInitNode(self):
|
|
835
|
+
self.variable_trace = None
|
|
836
|
+
self.inplace_suspect = None
|
|
837
|
+
|
|
838
|
+
@staticmethod
|
|
839
|
+
def getReleaseEscape():
|
|
840
|
+
return ControlFlowDescriptionNoEscape
|
|
841
|
+
|
|
842
|
+
def computeStatement(self, trace_collection):
|
|
843
|
+
# TODO: Way too ugly to have global trace kinds just here, and needs to
|
|
844
|
+
# be abstracted somehow. But for now we let it live here.
|
|
845
|
+
variable = self.variable
|
|
846
|
+
|
|
847
|
+
# Let assignment source may re-compute first.
|
|
848
|
+
source = trace_collection.onExpression(self.subnode_source)
|
|
849
|
+
|
|
850
|
+
# No assignment will occur, if the assignment source raises, so give up
|
|
851
|
+
# on this, and return it as the only side effect.
|
|
852
|
+
if source.willRaiseAnyException():
|
|
853
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
854
|
+
expression=source, node=self
|
|
855
|
+
)
|
|
856
|
+
|
|
857
|
+
del self.parent
|
|
858
|
+
|
|
859
|
+
return (
|
|
860
|
+
result,
|
|
861
|
+
"new_raise",
|
|
862
|
+
"""\
|
|
863
|
+
Assignment raises exception in assigned value, removed assignment.""",
|
|
864
|
+
)
|
|
865
|
+
|
|
866
|
+
# Note: Keep this aligned with computeStatementAssignmentTraceUpdate
|
|
867
|
+
self.variable_trace = trace_collection.onVariableSetToVeryTrustedValue(
|
|
868
|
+
variable=variable, version=self.variable_version, assign_node=self
|
|
869
|
+
)
|
|
870
|
+
|
|
871
|
+
return self, None, None
|
|
872
|
+
|
|
873
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
874
|
+
self.variable_trace = trace_collection.onVariableSetToVeryTrustedValue(
|
|
875
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
876
|
+
)
|
|
877
|
+
|
|
878
|
+
@staticmethod
|
|
879
|
+
def hasVeryTrustedValue():
|
|
880
|
+
"""Does this assignment node have a very trusted value."""
|
|
881
|
+
return True
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
class StatementAssignmentVariableFromVariable(
|
|
885
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableFromVariableBase
|
|
886
|
+
):
|
|
887
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_FROM_VARIABLE"
|
|
888
|
+
|
|
889
|
+
named_children = ("source",)
|
|
890
|
+
nice_children = ("assignment source",)
|
|
891
|
+
node_attributes = ("variable", "variable_version")
|
|
892
|
+
auto_compute_handling = "post_init"
|
|
893
|
+
|
|
894
|
+
__slots__ = (
|
|
895
|
+
"variable_trace",
|
|
896
|
+
# TODO: Does every variant have to care here
|
|
897
|
+
"inplace_suspect",
|
|
898
|
+
)
|
|
899
|
+
|
|
900
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
901
|
+
|
|
902
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
903
|
+
def postInitNode(self):
|
|
904
|
+
self.variable_trace = None
|
|
905
|
+
self.inplace_suspect = None
|
|
906
|
+
|
|
907
|
+
@staticmethod
|
|
908
|
+
def getReleaseEscape():
|
|
909
|
+
# TODO: Variable type may know better.
|
|
910
|
+
return ControlFlowDescriptionFullEscape
|
|
911
|
+
|
|
912
|
+
def computeStatement(self, trace_collection):
|
|
913
|
+
# TODO: Way too ugly to have global trace kinds just here, and needs to
|
|
914
|
+
# be abstracted somehow. But for now we let it live here.
|
|
915
|
+
old_source = self.subnode_source
|
|
916
|
+
variable = self.variable
|
|
917
|
+
|
|
918
|
+
# Assigning from and to the same variable, can be optimized away
|
|
919
|
+
# immediately, there is no point in doing it. Exceptions are of course
|
|
920
|
+
# module variables that collide with built-in names. TODO: In
|
|
921
|
+
# specialization this could be considered right away as its own node
|
|
922
|
+
# type, waiting for it to compute like this.
|
|
923
|
+
if not variable.isModuleVariable() and old_source.getVariable() is variable:
|
|
924
|
+
# A variable access that has a side effect, must be preserved,
|
|
925
|
+
# so it can e.g. raise an exception, otherwise we can be fully
|
|
926
|
+
# removed.
|
|
927
|
+
if old_source.mayHaveSideEffects():
|
|
928
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
929
|
+
expression=old_source, node=self
|
|
930
|
+
)
|
|
931
|
+
|
|
932
|
+
result = trace_collection.onStatement(result)
|
|
933
|
+
|
|
934
|
+
return (
|
|
935
|
+
result,
|
|
936
|
+
"new_statements",
|
|
937
|
+
"""\
|
|
938
|
+
Lowered assignment of %s from itself to mere access of it."""
|
|
939
|
+
% variable.getDescription(),
|
|
940
|
+
)
|
|
941
|
+
else:
|
|
942
|
+
return (
|
|
943
|
+
None,
|
|
944
|
+
"new_statements",
|
|
945
|
+
"""\
|
|
946
|
+
Removed assignment of %s from itself which is known to be defined."""
|
|
947
|
+
% variable.getDescription(),
|
|
948
|
+
)
|
|
949
|
+
|
|
950
|
+
# Let assignment source may re-compute first.
|
|
951
|
+
source = trace_collection.onExpression(self.subnode_source)
|
|
952
|
+
|
|
953
|
+
if source is old_source:
|
|
954
|
+
result = self, None, None
|
|
955
|
+
else:
|
|
956
|
+
if source.willRaiseAnyException():
|
|
957
|
+
result = makeStatementExpressionOnlyReplacementNode(
|
|
958
|
+
expression=source, node=self
|
|
959
|
+
)
|
|
960
|
+
|
|
961
|
+
return (
|
|
962
|
+
result,
|
|
963
|
+
"new_raise",
|
|
964
|
+
"""\
|
|
965
|
+
Assignment raises exception in assigned variable access, removed assignment.""",
|
|
966
|
+
)
|
|
967
|
+
|
|
968
|
+
result = self._considerSpecialization(old_source, source)
|
|
969
|
+
result[0].parent = self.parent
|
|
970
|
+
|
|
971
|
+
result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
|
|
972
|
+
|
|
973
|
+
return result
|
|
974
|
+
|
|
975
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
976
|
+
if source.isExpressionVariableRef():
|
|
977
|
+
self.variable_trace = trace_collection.onVariableSetAliasing(
|
|
978
|
+
variable=self.variable,
|
|
979
|
+
version=self.variable_version,
|
|
980
|
+
assign_node=self,
|
|
981
|
+
source=source,
|
|
982
|
+
)
|
|
983
|
+
else:
|
|
984
|
+
# Set-up the trace to the trace collection, so future references will
|
|
985
|
+
# find this assignment. TODO: We should for non-variables make sure we do
|
|
986
|
+
# always specialize, since this is no longer a variable once it was
|
|
987
|
+
# resolved.
|
|
988
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
989
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
990
|
+
)
|
|
991
|
+
|
|
992
|
+
# TODO: Determine from future use of assigned variable, if this is needed at all.
|
|
993
|
+
trace_collection.removeKnowledge(source)
|
|
994
|
+
|
|
995
|
+
@staticmethod
|
|
996
|
+
def hasVeryTrustedValue():
|
|
997
|
+
"""Does this assignment node have a very trusted value."""
|
|
998
|
+
return False
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
class StatementAssignmentVariableFromTempVariable(
|
|
1002
|
+
StatementAssignmentVariableMixin, StatementAssignmentVariableFromTempVariableBase
|
|
1003
|
+
):
|
|
1004
|
+
kind = "STATEMENT_ASSIGNMENT_VARIABLE_FROM_TEMP_VARIABLE"
|
|
1005
|
+
|
|
1006
|
+
named_children = ("source",)
|
|
1007
|
+
nice_children = ("assignment source",)
|
|
1008
|
+
node_attributes = ("variable", "variable_version")
|
|
1009
|
+
auto_compute_handling = "post_init"
|
|
1010
|
+
|
|
1011
|
+
__slots__ = (
|
|
1012
|
+
"variable_trace",
|
|
1013
|
+
# TODO: Does every variant have to care here
|
|
1014
|
+
"inplace_suspect",
|
|
1015
|
+
)
|
|
1016
|
+
|
|
1017
|
+
# False alarm due to post_init, pylint: disable=attribute-defined-outside-init
|
|
1018
|
+
|
|
1019
|
+
# TODO: Add parsing of node_attributes for init values, so we can avoid these too
|
|
1020
|
+
def postInitNode(self):
|
|
1021
|
+
self.variable_trace = None
|
|
1022
|
+
self.inplace_suspect = None
|
|
1023
|
+
|
|
1024
|
+
@staticmethod
|
|
1025
|
+
def getReleaseEscape():
|
|
1026
|
+
# TODO: Variable type may know better.
|
|
1027
|
+
return ControlFlowDescriptionFullEscape
|
|
1028
|
+
|
|
1029
|
+
def computeStatement(self, trace_collection):
|
|
1030
|
+
# TODO: Way too ugly to have global trace kinds just here, and needs to
|
|
1031
|
+
# be abstracted somehow. But for now we let it live here.
|
|
1032
|
+
old_source = self.subnode_source
|
|
1033
|
+
variable = self.variable
|
|
1034
|
+
|
|
1035
|
+
# Assigning from and to the same variable, can be optimized away
|
|
1036
|
+
# immediately, there is no point in doing it. Exceptions are of course
|
|
1037
|
+
# module variables that collide with built-in names.
|
|
1038
|
+
if old_source.getVariable() is variable:
|
|
1039
|
+
return (
|
|
1040
|
+
None,
|
|
1041
|
+
"new_statements",
|
|
1042
|
+
"""\
|
|
1043
|
+
Removed assignment of %s from itself which is known to be defined."""
|
|
1044
|
+
% variable.getDescription(),
|
|
1045
|
+
)
|
|
1046
|
+
|
|
1047
|
+
# Let assignment source may re-compute first.
|
|
1048
|
+
source = trace_collection.onExpression(self.subnode_source)
|
|
1049
|
+
|
|
1050
|
+
if source is old_source:
|
|
1051
|
+
result = self, None, None
|
|
1052
|
+
else:
|
|
1053
|
+
result = self._considerSpecialization(old_source, source)
|
|
1054
|
+
result[0].parent = self.parent
|
|
1055
|
+
|
|
1056
|
+
result[0].computeStatementAssignmentTraceUpdate(trace_collection, source)
|
|
1057
|
+
|
|
1058
|
+
return result
|
|
1059
|
+
|
|
1060
|
+
def computeStatementAssignmentTraceUpdate(self, trace_collection, source):
|
|
1061
|
+
# Set-up the trace to the trace collection, so future references will
|
|
1062
|
+
# find this assignment.
|
|
1063
|
+
self.variable_trace = trace_collection.onVariableSet(
|
|
1064
|
+
variable=self.variable, version=self.variable_version, assign_node=self
|
|
1065
|
+
)
|
|
1066
|
+
|
|
1067
|
+
# TODO: Determine from future use of assigned variable, if this is needed at all.
|
|
1068
|
+
trace_collection.removeKnowledge(source)
|
|
1069
|
+
|
|
1070
|
+
@staticmethod
|
|
1071
|
+
def hasVeryTrustedValue():
|
|
1072
|
+
"""Does this assignment node have a very trusted value."""
|
|
1073
|
+
return False
|
|
1074
|
+
|
|
1075
|
+
|
|
1076
|
+
def makeStatementAssignmentVariableConstant(
|
|
1077
|
+
source, variable, variable_version, very_trusted, source_ref
|
|
1078
|
+
):
|
|
1079
|
+
if source.isMutable():
|
|
1080
|
+
if very_trusted:
|
|
1081
|
+
return StatementAssignmentVariableConstantMutableTrusted(
|
|
1082
|
+
source=source,
|
|
1083
|
+
variable=variable,
|
|
1084
|
+
source_ref=source_ref,
|
|
1085
|
+
variable_version=variable_version,
|
|
1086
|
+
)
|
|
1087
|
+
else:
|
|
1088
|
+
return StatementAssignmentVariableConstantMutable(
|
|
1089
|
+
source=source,
|
|
1090
|
+
variable=variable,
|
|
1091
|
+
source_ref=source_ref,
|
|
1092
|
+
variable_version=variable_version,
|
|
1093
|
+
)
|
|
1094
|
+
else:
|
|
1095
|
+
if very_trusted:
|
|
1096
|
+
return StatementAssignmentVariableConstantImmutableTrusted(
|
|
1097
|
+
source=source,
|
|
1098
|
+
variable=variable,
|
|
1099
|
+
source_ref=source_ref,
|
|
1100
|
+
variable_version=variable_version,
|
|
1101
|
+
)
|
|
1102
|
+
else:
|
|
1103
|
+
return StatementAssignmentVariableConstantImmutable(
|
|
1104
|
+
source=source,
|
|
1105
|
+
variable=variable,
|
|
1106
|
+
source_ref=source_ref,
|
|
1107
|
+
variable_version=variable_version,
|
|
1108
|
+
)
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
def makeStatementAssignmentVariable(
|
|
1112
|
+
source, variable, source_ref, variable_version=None
|
|
1113
|
+
):
|
|
1114
|
+
assert source is not None, source_ref
|
|
1115
|
+
|
|
1116
|
+
if variable_version is None:
|
|
1117
|
+
variable_version = variable.allocateTargetNumber()
|
|
1118
|
+
|
|
1119
|
+
if source.isCompileTimeConstant():
|
|
1120
|
+
return makeStatementAssignmentVariableConstant(
|
|
1121
|
+
source=source,
|
|
1122
|
+
variable=variable,
|
|
1123
|
+
variable_version=variable_version,
|
|
1124
|
+
very_trusted=False,
|
|
1125
|
+
source_ref=source_ref,
|
|
1126
|
+
)
|
|
1127
|
+
elif source.isExpressionVariableRef():
|
|
1128
|
+
return StatementAssignmentVariableFromVariable(
|
|
1129
|
+
source=source,
|
|
1130
|
+
variable=variable,
|
|
1131
|
+
variable_version=variable_version,
|
|
1132
|
+
source_ref=source_ref,
|
|
1133
|
+
)
|
|
1134
|
+
elif source.isExpressionTempVariableRef():
|
|
1135
|
+
return StatementAssignmentVariableFromTempVariable(
|
|
1136
|
+
source=source,
|
|
1137
|
+
variable=variable,
|
|
1138
|
+
variable_version=variable_version,
|
|
1139
|
+
source_ref=source_ref,
|
|
1140
|
+
)
|
|
1141
|
+
elif source.getTypeShape().isShapeIterator():
|
|
1142
|
+
return StatementAssignmentVariableIterator(
|
|
1143
|
+
source=source,
|
|
1144
|
+
variable=variable,
|
|
1145
|
+
variable_version=variable_version,
|
|
1146
|
+
source_ref=source_ref,
|
|
1147
|
+
)
|
|
1148
|
+
elif source.hasVeryTrustedValue():
|
|
1149
|
+
return StatementAssignmentVariableHardValue(
|
|
1150
|
+
source=source,
|
|
1151
|
+
variable=variable,
|
|
1152
|
+
variable_version=variable_version,
|
|
1153
|
+
source_ref=source_ref,
|
|
1154
|
+
)
|
|
1155
|
+
else:
|
|
1156
|
+
return StatementAssignmentVariableGeneric(
|
|
1157
|
+
source=source,
|
|
1158
|
+
variable=variable,
|
|
1159
|
+
variable_version=variable_version,
|
|
1160
|
+
source_ref=source_ref,
|
|
1161
|
+
)
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1165
|
+
# integrates with CPython, but also works on its own.
|
|
1166
|
+
#
|
|
1167
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1168
|
+
# you may not use this file except in compliance with the License.
|
|
1169
|
+
# You may obtain a copy of the License at
|
|
1170
|
+
#
|
|
1171
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1172
|
+
#
|
|
1173
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1174
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1175
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1176
|
+
# See the License for the specific language governing permissions and
|
|
1177
|
+
# limitations under the License.
|