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,1301 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Expression base classes.
|
|
5
|
+
|
|
6
|
+
These classes provide the generic base classes available for
|
|
7
|
+
expressions. They have a richer interface, mostly related to
|
|
8
|
+
abstract execution, and different from statements.
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from abc import abstractmethod
|
|
13
|
+
|
|
14
|
+
from nuitka import Options
|
|
15
|
+
from nuitka.__past__ import long
|
|
16
|
+
|
|
17
|
+
# TODO: Probably should separate building reports out.
|
|
18
|
+
from nuitka.code_generation.Reports import onMissingOverload
|
|
19
|
+
from nuitka.Constants import isCompileTimeConstantValue
|
|
20
|
+
from nuitka.PythonVersions import python_version
|
|
21
|
+
|
|
22
|
+
from .ChildrenHavingMixins import ChildHavingValueMixin
|
|
23
|
+
from .NodeBases import NodeBase
|
|
24
|
+
from .NodeMakingHelpers import (
|
|
25
|
+
makeConstantReplacementNode,
|
|
26
|
+
makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue,
|
|
27
|
+
wrapExpressionWithNodeSideEffects,
|
|
28
|
+
)
|
|
29
|
+
from .shapes.BuiltinTypeShapes import (
|
|
30
|
+
tshape_bool,
|
|
31
|
+
tshape_bytes,
|
|
32
|
+
tshape_dict,
|
|
33
|
+
tshape_list,
|
|
34
|
+
tshape_str,
|
|
35
|
+
tshape_type,
|
|
36
|
+
tshape_unicode,
|
|
37
|
+
)
|
|
38
|
+
from .shapes.StandardShapes import tshape_unknown
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class ExpressionBase(NodeBase):
|
|
42
|
+
# TODO: Maybe we can do this only for debug mode.
|
|
43
|
+
__slots__ = ("code_generated",)
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def getTypeShape():
|
|
47
|
+
return tshape_unknown
|
|
48
|
+
|
|
49
|
+
def getValueShape(self):
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
@staticmethod
|
|
53
|
+
def isCompileTimeConstant():
|
|
54
|
+
"""Has a value that we can use at compile time.
|
|
55
|
+
|
|
56
|
+
Yes or no. If it has such a value, simulations can be applied at
|
|
57
|
+
compile time and e.g. operations or conditions, or even calls may
|
|
58
|
+
be executed against it.
|
|
59
|
+
"""
|
|
60
|
+
return False
|
|
61
|
+
|
|
62
|
+
@staticmethod
|
|
63
|
+
def getTruthValue():
|
|
64
|
+
"""Return known truth value. The "None" value indicates unknown."""
|
|
65
|
+
|
|
66
|
+
return None
|
|
67
|
+
|
|
68
|
+
@staticmethod
|
|
69
|
+
def getComparisonValue():
|
|
70
|
+
"""Return known value used for compile time comparison. The "None" value indicates unknown."""
|
|
71
|
+
|
|
72
|
+
return False, None
|
|
73
|
+
|
|
74
|
+
@staticmethod
|
|
75
|
+
def isMappingWithConstantStringKeys():
|
|
76
|
+
"""Is this a mapping with constant string keys. Used for call optimization."""
|
|
77
|
+
return False
|
|
78
|
+
|
|
79
|
+
@staticmethod
|
|
80
|
+
def isKnownToBeIterable(count):
|
|
81
|
+
"""Can be iterated at all (count is None) or exactly count times.
|
|
82
|
+
|
|
83
|
+
Yes or no. If it can be iterated a known number of times, it may
|
|
84
|
+
be asked to unpack itself.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
# Virtual method, pylint: disable=unused-argument
|
|
88
|
+
return False
|
|
89
|
+
|
|
90
|
+
@staticmethod
|
|
91
|
+
def isKnownToBeIterableAtMin(count):
|
|
92
|
+
# Virtual method, pylint: disable=unused-argument
|
|
93
|
+
return False
|
|
94
|
+
|
|
95
|
+
def getIterationLength(self):
|
|
96
|
+
"""Value that "len" or "PyObject_Size" would give, if known.
|
|
97
|
+
|
|
98
|
+
Otherwise it is "None" to indicate unknown.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
# Virtual method, pylint: disable=no-self-use
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
def getIterationMinLength(self):
|
|
105
|
+
"""Value that "len" or "PyObject_Size" would give at minimum, if known.
|
|
106
|
+
|
|
107
|
+
Otherwise it is "None" to indicate unknown.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
return self.getIterationLength()
|
|
111
|
+
|
|
112
|
+
@staticmethod
|
|
113
|
+
def getStringValue():
|
|
114
|
+
"""Node as string value, if possible."""
|
|
115
|
+
return None
|
|
116
|
+
|
|
117
|
+
def getStrValue(self):
|
|
118
|
+
"""Value that "str" or "PyObject_Str" would give, if known.
|
|
119
|
+
|
|
120
|
+
Otherwise it is "None" to indicate unknown. Users must not
|
|
121
|
+
forget to take side effects into account, when replacing a
|
|
122
|
+
node with its string value.
|
|
123
|
+
"""
|
|
124
|
+
string_value = self.getStringValue()
|
|
125
|
+
|
|
126
|
+
if string_value is not None:
|
|
127
|
+
# Those that are user provided, need to overload this.
|
|
128
|
+
return makeConstantReplacementNode(
|
|
129
|
+
node=self, constant=string_value, user_provided=False
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
return None
|
|
133
|
+
|
|
134
|
+
def getTypeValue(self):
|
|
135
|
+
"""Type of the node."""
|
|
136
|
+
|
|
137
|
+
from .TypeNodes import ExpressionBuiltinType1
|
|
138
|
+
|
|
139
|
+
return ExpressionBuiltinType1(
|
|
140
|
+
value=self.makeClone(), source_ref=self.source_ref
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
def getIterationHandle(self):
|
|
144
|
+
# Virtual method, pylint: disable=no-self-use
|
|
145
|
+
return None
|
|
146
|
+
|
|
147
|
+
@staticmethod
|
|
148
|
+
def isKnownToBeHashable():
|
|
149
|
+
"""Is the value hashable, i.e. suitable for dictionary/set key usage."""
|
|
150
|
+
|
|
151
|
+
# Unknown by default.
|
|
152
|
+
return None
|
|
153
|
+
|
|
154
|
+
@staticmethod
|
|
155
|
+
def extractUnhashableNodeType():
|
|
156
|
+
"""Return the value type that is not hashable, if isKnowtoBeHashable() returns False."""
|
|
157
|
+
|
|
158
|
+
# Not available by default.
|
|
159
|
+
return None
|
|
160
|
+
|
|
161
|
+
def onRelease(self, trace_collection):
|
|
162
|
+
# print "onRelease", self
|
|
163
|
+
pass
|
|
164
|
+
|
|
165
|
+
def isKnownToHaveAttribute(self, attribute_name):
|
|
166
|
+
# Virtual method, pylint: disable=no-self-use,unused-argument
|
|
167
|
+
return None
|
|
168
|
+
|
|
169
|
+
@abstractmethod
|
|
170
|
+
def computeExpressionRaw(self, trace_collection):
|
|
171
|
+
"""Abstract execution of the node.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
tuple(node, tags, description)
|
|
175
|
+
|
|
176
|
+
The return value can be node itself.
|
|
177
|
+
|
|
178
|
+
Notes:
|
|
179
|
+
Replaces a node with computation result. This is the low level
|
|
180
|
+
form for the few cases, where the children are not simply all
|
|
181
|
+
evaluated first, but this allows e.g. to deal with branches, do
|
|
182
|
+
not overload this unless necessary.
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
|
|
186
|
+
# By default, an attribute lookup may change everything about the lookup
|
|
187
|
+
# source.
|
|
188
|
+
# trace_collection.onValueEscapeAttributeLookup(self, attribute_name)
|
|
189
|
+
|
|
190
|
+
if self.mayRaiseExceptionAttributeLookup(BaseException, attribute_name):
|
|
191
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
192
|
+
|
|
193
|
+
# Any code could be run, note that.
|
|
194
|
+
trace_collection.onControlFlowEscape(self)
|
|
195
|
+
|
|
196
|
+
return lookup_node, None, None
|
|
197
|
+
|
|
198
|
+
def computeExpressionAttributeSpecial(
|
|
199
|
+
self, lookup_node, attribute_name, trace_collection
|
|
200
|
+
):
|
|
201
|
+
# By default, an attribute lookup may change everything about the lookup
|
|
202
|
+
# source. Virtual method, pylint: disable=unused-argument
|
|
203
|
+
# trace_collection.onValueEscapeAttributeLookup(self, attribute_name)
|
|
204
|
+
|
|
205
|
+
# Any code could be run, note that.
|
|
206
|
+
trace_collection.onControlFlowEscape(self)
|
|
207
|
+
|
|
208
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
209
|
+
|
|
210
|
+
return lookup_node, None, None
|
|
211
|
+
|
|
212
|
+
def computeExpressionImportName(self, import_node, import_name, trace_collection):
|
|
213
|
+
if self.mayRaiseExceptionImportName(BaseException, import_name):
|
|
214
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
215
|
+
|
|
216
|
+
# Any code could be run, note that.
|
|
217
|
+
trace_collection.onControlFlowEscape(self)
|
|
218
|
+
|
|
219
|
+
return import_node, None, None
|
|
220
|
+
|
|
221
|
+
def computeExpressionSetAttribute(
|
|
222
|
+
self, set_node, attribute_name, value_node, trace_collection
|
|
223
|
+
):
|
|
224
|
+
# Virtual method, pylint: disable=unused-argument
|
|
225
|
+
|
|
226
|
+
# By default, an attribute lookup may change everything about the lookup
|
|
227
|
+
# source and any code could run.
|
|
228
|
+
trace_collection.removeKnowledge(self)
|
|
229
|
+
trace_collection.removeKnowledge(value_node)
|
|
230
|
+
trace_collection.onControlFlowEscape(self)
|
|
231
|
+
|
|
232
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
233
|
+
|
|
234
|
+
# Better mechanics?
|
|
235
|
+
return set_node, None, None
|
|
236
|
+
|
|
237
|
+
def computeExpressionDelAttribute(self, set_node, attribute_name, trace_collection):
|
|
238
|
+
# By default, an attribute lookup may change everything about the lookup
|
|
239
|
+
# source. Virtual method, pylint: disable=unused-argument
|
|
240
|
+
# trace_collection.removeKnowledge(self)
|
|
241
|
+
|
|
242
|
+
# Any code could be run, note that.
|
|
243
|
+
trace_collection.onControlFlowEscape(self)
|
|
244
|
+
|
|
245
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
246
|
+
|
|
247
|
+
# Better mechanics?
|
|
248
|
+
return set_node, None, None
|
|
249
|
+
|
|
250
|
+
def computeExpressionSubscript(self, lookup_node, subscript, trace_collection):
|
|
251
|
+
# By default, an subscript can execute any code and change all values
|
|
252
|
+
# that escaped. This is a virtual method that may consider the subscript
|
|
253
|
+
# but generally we don't know what to do. pylint: disable=unused-argument
|
|
254
|
+
trace_collection.onControlFlowEscape(self)
|
|
255
|
+
|
|
256
|
+
# Any exception may be raised.
|
|
257
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
258
|
+
|
|
259
|
+
return lookup_node, None, None
|
|
260
|
+
|
|
261
|
+
def computeExpressionSetSubscript(
|
|
262
|
+
self, set_node, subscript, value_node, trace_collection
|
|
263
|
+
):
|
|
264
|
+
# By default, an subscript can execute any code and change all values
|
|
265
|
+
# that escaped. This is a virtual method that may consider the subscript
|
|
266
|
+
# but generally we don't know what to do.
|
|
267
|
+
trace_collection.removeKnowledge(value_node)
|
|
268
|
+
trace_collection.removeKnowledge(subscript)
|
|
269
|
+
trace_collection.onControlFlowEscape(self)
|
|
270
|
+
|
|
271
|
+
# Any exception may be raised.
|
|
272
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
273
|
+
|
|
274
|
+
return set_node, None, None
|
|
275
|
+
|
|
276
|
+
def computeExpressionDelSubscript(self, del_node, subscript, trace_collection):
|
|
277
|
+
# By default, an subscript can execute any code and change all values
|
|
278
|
+
# that escaped. This is a virtual method that may consider the subscript
|
|
279
|
+
# but generally we don't know what to do. pylint: disable=unused-argument
|
|
280
|
+
trace_collection.onControlFlowEscape(self)
|
|
281
|
+
|
|
282
|
+
# Any exception may be raised.
|
|
283
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
284
|
+
|
|
285
|
+
return del_node, None, None
|
|
286
|
+
|
|
287
|
+
def computeExpressionSlice(self, lookup_node, lower, upper, trace_collection):
|
|
288
|
+
# pylint: disable=unused-argument
|
|
289
|
+
|
|
290
|
+
# By default, a slicing may change everything about the lookup source.
|
|
291
|
+
# trace_collection.removeKnowledge(self)
|
|
292
|
+
# trace_collection.onValueEscapeSliceOperation(self, lower, upper)
|
|
293
|
+
|
|
294
|
+
# Any code could be run, note that.
|
|
295
|
+
trace_collection.onControlFlowEscape(self)
|
|
296
|
+
|
|
297
|
+
# Any exception may be raised.
|
|
298
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
299
|
+
|
|
300
|
+
return lookup_node, None, None
|
|
301
|
+
|
|
302
|
+
def computeExpressionSetSlice(
|
|
303
|
+
self, set_node, lower, upper, value_node, trace_collection
|
|
304
|
+
):
|
|
305
|
+
# pylint: disable=unused-argument
|
|
306
|
+
|
|
307
|
+
# By default, an subscript may change everything about the lookup
|
|
308
|
+
# source and the value is escaped.
|
|
309
|
+
trace_collection.removeKnowledge(value_node)
|
|
310
|
+
trace_collection.removeKnowledge(self)
|
|
311
|
+
trace_collection.onControlFlowEscape(self)
|
|
312
|
+
|
|
313
|
+
# trace_collection.onValueEscapeSliceArguments(self, lower, upper)
|
|
314
|
+
|
|
315
|
+
# trace_collection.onValueEscapeSliceSetSource(self, lower, upper)
|
|
316
|
+
|
|
317
|
+
# Any exception may be raised.
|
|
318
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
319
|
+
|
|
320
|
+
return set_node, None, None
|
|
321
|
+
|
|
322
|
+
def computeExpressionDelSlice(self, set_node, lower, upper, trace_collection):
|
|
323
|
+
# pylint: disable=unused-argument
|
|
324
|
+
|
|
325
|
+
# By default, an subscript may change everything about the lookup
|
|
326
|
+
# source.
|
|
327
|
+
trace_collection.removeKnowledge(self)
|
|
328
|
+
trace_collection.onControlFlowEscape(self)
|
|
329
|
+
|
|
330
|
+
# trace_collection.onValueEscapeSliceArguments(self, lower, upper)
|
|
331
|
+
|
|
332
|
+
# Any exception may be raised.
|
|
333
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
334
|
+
|
|
335
|
+
return set_node, None, None
|
|
336
|
+
|
|
337
|
+
def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
|
|
338
|
+
# Virtual method, pylint: disable=unused-argument
|
|
339
|
+
|
|
340
|
+
# The called and the arguments escape for good.
|
|
341
|
+
call_node.onContentEscapes(trace_collection)
|
|
342
|
+
|
|
343
|
+
# Any code could be run, note that.
|
|
344
|
+
trace_collection.onControlFlowEscape(self)
|
|
345
|
+
|
|
346
|
+
# Any exception may be raised.
|
|
347
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
348
|
+
|
|
349
|
+
return call_node, None, None
|
|
350
|
+
|
|
351
|
+
def computeExpressionCallViaVariable(
|
|
352
|
+
self, call_node, variable_ref_node, call_args, call_kw, trace_collection
|
|
353
|
+
):
|
|
354
|
+
# Virtual method, pylint: disable=unused-argument
|
|
355
|
+
|
|
356
|
+
# The called and the arguments escape for good.
|
|
357
|
+
self.onContentEscapes(trace_collection)
|
|
358
|
+
if call_args is not None:
|
|
359
|
+
call_args.onContentEscapes(trace_collection)
|
|
360
|
+
if call_kw is not None:
|
|
361
|
+
call_kw.onContentEscapes(trace_collection)
|
|
362
|
+
|
|
363
|
+
# Any code could be run, note that.
|
|
364
|
+
trace_collection.onControlFlowEscape(self)
|
|
365
|
+
|
|
366
|
+
# Any exception may be raised.
|
|
367
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
368
|
+
|
|
369
|
+
return call_node, None, None
|
|
370
|
+
|
|
371
|
+
def computeExpressionLen(self, len_node, trace_collection):
|
|
372
|
+
shape = self.getValueShape()
|
|
373
|
+
|
|
374
|
+
has_len = shape.hasShapeSlotLen()
|
|
375
|
+
|
|
376
|
+
if has_len is False:
|
|
377
|
+
# An exception may be raised.
|
|
378
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
379
|
+
|
|
380
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
381
|
+
template="object of type '%s' has no len()",
|
|
382
|
+
operation="len",
|
|
383
|
+
original_node=len_node,
|
|
384
|
+
value_node=self,
|
|
385
|
+
)
|
|
386
|
+
elif has_len is True:
|
|
387
|
+
iter_length = self.getIterationLength()
|
|
388
|
+
|
|
389
|
+
if iter_length is not None:
|
|
390
|
+
from .ConstantRefNodes import makeConstantRefNode
|
|
391
|
+
|
|
392
|
+
result = makeConstantRefNode(
|
|
393
|
+
constant=int(iter_length), # make sure to downcast long
|
|
394
|
+
source_ref=len_node.getSourceReference(),
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
result = wrapExpressionWithNodeSideEffects(
|
|
398
|
+
new_node=result, old_node=self
|
|
399
|
+
)
|
|
400
|
+
|
|
401
|
+
return (
|
|
402
|
+
result,
|
|
403
|
+
"new_constant",
|
|
404
|
+
"Predicted 'len' result from value shape.",
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
self.onContentEscapes(trace_collection)
|
|
408
|
+
|
|
409
|
+
# Any code could be run, note that.
|
|
410
|
+
trace_collection.onControlFlowEscape(self)
|
|
411
|
+
|
|
412
|
+
# Any exception may be raised.
|
|
413
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
414
|
+
|
|
415
|
+
return len_node, None, None
|
|
416
|
+
|
|
417
|
+
def computeExpressionAbs(self, abs_node, trace_collection):
|
|
418
|
+
shape = self.getTypeShape()
|
|
419
|
+
|
|
420
|
+
if shape.hasShapeSlotAbs() is False:
|
|
421
|
+
# Any exception may be raised.
|
|
422
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
423
|
+
|
|
424
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
425
|
+
template="bad operand type for abs(): '%s'",
|
|
426
|
+
operation="abs",
|
|
427
|
+
original_node=abs_node,
|
|
428
|
+
value_node=self,
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
self.onContentEscapes(trace_collection)
|
|
432
|
+
|
|
433
|
+
# Any code could be run, note that.
|
|
434
|
+
trace_collection.onControlFlowEscape(self)
|
|
435
|
+
|
|
436
|
+
# Any exception may be raised.
|
|
437
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
438
|
+
|
|
439
|
+
return abs_node, None, None
|
|
440
|
+
|
|
441
|
+
def computeExpressionInt(self, int_node, trace_collection):
|
|
442
|
+
shape = self.getTypeShape()
|
|
443
|
+
|
|
444
|
+
if shape.hasShapeSlotInt() is False:
|
|
445
|
+
# Any exception may be raised.
|
|
446
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
447
|
+
|
|
448
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
449
|
+
template=(
|
|
450
|
+
"int() argument must be a string or a number, not '%s'"
|
|
451
|
+
if python_version < 0x300
|
|
452
|
+
else "int() argument must be a string, a bytes-like object or a number, not '%s'"
|
|
453
|
+
),
|
|
454
|
+
operation="int",
|
|
455
|
+
original_node=int_node,
|
|
456
|
+
value_node=self,
|
|
457
|
+
)
|
|
458
|
+
|
|
459
|
+
self.onContentEscapes(trace_collection)
|
|
460
|
+
|
|
461
|
+
# Any code could be run, note that.
|
|
462
|
+
trace_collection.onControlFlowEscape(self)
|
|
463
|
+
|
|
464
|
+
# Any exception may be raised.
|
|
465
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
466
|
+
|
|
467
|
+
return int_node, None, None
|
|
468
|
+
|
|
469
|
+
def computeExpressionLong(self, long_node, trace_collection):
|
|
470
|
+
shape = self.getTypeShape()
|
|
471
|
+
|
|
472
|
+
if shape.hasShapeSlotLong() is False:
|
|
473
|
+
# Any exception may be raised.
|
|
474
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
475
|
+
|
|
476
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
477
|
+
template="long() argument must be a string or a number, not '%s'",
|
|
478
|
+
operation="long",
|
|
479
|
+
original_node=long_node,
|
|
480
|
+
value_node=self,
|
|
481
|
+
)
|
|
482
|
+
|
|
483
|
+
self.onContentEscapes(trace_collection)
|
|
484
|
+
|
|
485
|
+
# Any code could be run, note that.
|
|
486
|
+
trace_collection.onControlFlowEscape(self)
|
|
487
|
+
|
|
488
|
+
# Any exception may be raised.
|
|
489
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
490
|
+
|
|
491
|
+
return long_node, None, None
|
|
492
|
+
|
|
493
|
+
def computeExpressionFloat(self, float_node, trace_collection):
|
|
494
|
+
shape = self.getTypeShape()
|
|
495
|
+
|
|
496
|
+
if shape.hasShapeSlotFloat() is False:
|
|
497
|
+
# Any exception may be raised.
|
|
498
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
499
|
+
|
|
500
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
501
|
+
(
|
|
502
|
+
"float() argument must be a string or a number"
|
|
503
|
+
if Options.is_full_compat and python_version < 0x300
|
|
504
|
+
else "float() argument must be a string or a number, not '%s'"
|
|
505
|
+
),
|
|
506
|
+
operation="long",
|
|
507
|
+
original_node=float_node,
|
|
508
|
+
value_node=self,
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
self.onContentEscapes(trace_collection)
|
|
512
|
+
|
|
513
|
+
# Any code could be run, note that.
|
|
514
|
+
trace_collection.onControlFlowEscape(self)
|
|
515
|
+
|
|
516
|
+
# Any exception may be raised.
|
|
517
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
518
|
+
|
|
519
|
+
return float_node, None, None
|
|
520
|
+
|
|
521
|
+
def computeExpressionBytes(self, bytes_node, trace_collection):
|
|
522
|
+
shape = self.getTypeShape()
|
|
523
|
+
|
|
524
|
+
if (
|
|
525
|
+
shape.hasShapeSlotBytes() is False
|
|
526
|
+
and shape.hasShapeSlotInt() is False
|
|
527
|
+
and shape.hasShapeSlotIter() is False
|
|
528
|
+
):
|
|
529
|
+
# An exception is raised.
|
|
530
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
531
|
+
|
|
532
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
533
|
+
"'%s' object is not iterable",
|
|
534
|
+
operation="bytes",
|
|
535
|
+
original_node=bytes_node,
|
|
536
|
+
value_node=self,
|
|
537
|
+
)
|
|
538
|
+
|
|
539
|
+
self.onContentEscapes(trace_collection)
|
|
540
|
+
|
|
541
|
+
# Any code could be run, note that.
|
|
542
|
+
trace_collection.onControlFlowEscape(self)
|
|
543
|
+
|
|
544
|
+
# Any exception may be raised.
|
|
545
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
546
|
+
|
|
547
|
+
return bytes_node, None, None
|
|
548
|
+
|
|
549
|
+
def computeExpressionComplex(self, complex_node, trace_collection):
|
|
550
|
+
shape = self.getTypeShape()
|
|
551
|
+
|
|
552
|
+
if shape.hasShapeSlotComplex() is False:
|
|
553
|
+
# Any exception may be raised.
|
|
554
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
555
|
+
|
|
556
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
557
|
+
(
|
|
558
|
+
"complex() argument must be a string or a number"
|
|
559
|
+
if Options.is_full_compat and python_version < 0x300
|
|
560
|
+
else "complex() argument must be a string or a number, not '%s'"
|
|
561
|
+
),
|
|
562
|
+
operation="complex",
|
|
563
|
+
original_node=complex_node,
|
|
564
|
+
value_node=self,
|
|
565
|
+
)
|
|
566
|
+
|
|
567
|
+
self.onContentEscapes(trace_collection)
|
|
568
|
+
|
|
569
|
+
# Any code could be run, note that.
|
|
570
|
+
trace_collection.onControlFlowEscape(self)
|
|
571
|
+
|
|
572
|
+
# Any exception may be raised.
|
|
573
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
574
|
+
|
|
575
|
+
return complex_node, None, None
|
|
576
|
+
|
|
577
|
+
def computeExpressionIter1(self, iter_node, trace_collection):
|
|
578
|
+
shape = self.getTypeShape()
|
|
579
|
+
|
|
580
|
+
if shape.hasShapeSlotIter() is False:
|
|
581
|
+
# An exception may be raised.
|
|
582
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
583
|
+
|
|
584
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
585
|
+
template="'%s' object is not iterable",
|
|
586
|
+
operation="iter",
|
|
587
|
+
original_node=iter_node,
|
|
588
|
+
value_node=self,
|
|
589
|
+
)
|
|
590
|
+
|
|
591
|
+
self.onContentEscapes(trace_collection)
|
|
592
|
+
|
|
593
|
+
# Any code could be run, note that.
|
|
594
|
+
trace_collection.onControlFlowEscape(self)
|
|
595
|
+
|
|
596
|
+
# Any exception may be raised.
|
|
597
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
598
|
+
|
|
599
|
+
return iter_node, None, None
|
|
600
|
+
|
|
601
|
+
def computeExpressionNext1(self, next_node, trace_collection):
|
|
602
|
+
# TODO: This is only true for a few value types, use type shape to tell if
|
|
603
|
+
# it might escape or raise.
|
|
604
|
+
|
|
605
|
+
self.onContentEscapes(trace_collection)
|
|
606
|
+
|
|
607
|
+
# Any code could be run, note that.
|
|
608
|
+
if self.mayHaveSideEffectsNext():
|
|
609
|
+
trace_collection.onControlFlowEscape(self)
|
|
610
|
+
|
|
611
|
+
# Any exception may be raised.
|
|
612
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
613
|
+
|
|
614
|
+
return True, (next_node, None, None)
|
|
615
|
+
|
|
616
|
+
def computeExpressionAsyncIter(self, iter_node, trace_collection):
|
|
617
|
+
self.onContentEscapes(trace_collection)
|
|
618
|
+
|
|
619
|
+
# Any code could be run, note that.
|
|
620
|
+
trace_collection.onControlFlowEscape(self)
|
|
621
|
+
|
|
622
|
+
# Any exception may be raised.
|
|
623
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
624
|
+
|
|
625
|
+
return iter_node, None, None
|
|
626
|
+
|
|
627
|
+
def computeExpressionOperationNot(self, not_node, trace_collection):
|
|
628
|
+
# Virtual method, pylint: disable=no-self-use
|
|
629
|
+
|
|
630
|
+
# The value of that node escapes and could change its contents.
|
|
631
|
+
# trace_collection.onValueEscapeNot(self)
|
|
632
|
+
|
|
633
|
+
# Any code could be run, note that.
|
|
634
|
+
trace_collection.onControlFlowEscape(not_node)
|
|
635
|
+
|
|
636
|
+
# Any exception may be raised.
|
|
637
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
638
|
+
|
|
639
|
+
return not_node, None, None
|
|
640
|
+
|
|
641
|
+
def computeExpressionOperationRepr(self, repr_node, trace_collection):
|
|
642
|
+
type_shape = self.getTypeShape()
|
|
643
|
+
|
|
644
|
+
escape_desc = type_shape.getOperationUnaryReprEscape()
|
|
645
|
+
|
|
646
|
+
# Annotate if exceptions might be raised.
|
|
647
|
+
exception_raise_exit = escape_desc.getExceptionExit()
|
|
648
|
+
if exception_raise_exit is not None:
|
|
649
|
+
trace_collection.onExceptionRaiseExit(exception_raise_exit)
|
|
650
|
+
|
|
651
|
+
if escape_desc.isValueEscaping():
|
|
652
|
+
# The value of that node escapes and could change its contents during repr
|
|
653
|
+
# only, which might be more limited.
|
|
654
|
+
# trace_collection.onValueEscapeRepr(self)
|
|
655
|
+
trace_collection.removeKnowledge(self)
|
|
656
|
+
|
|
657
|
+
if escape_desc.isControlFlowEscape():
|
|
658
|
+
# Any code could be run, note that.
|
|
659
|
+
trace_collection.onControlFlowEscape(self)
|
|
660
|
+
|
|
661
|
+
return (repr_node, None, None), escape_desc
|
|
662
|
+
|
|
663
|
+
def computeExpressionComparisonIn(self, in_node, value_node, trace_collection):
|
|
664
|
+
# Virtual method, pylint: disable=unused-argument
|
|
665
|
+
|
|
666
|
+
shape = self.getTypeShape()
|
|
667
|
+
|
|
668
|
+
assert shape is not None, self
|
|
669
|
+
|
|
670
|
+
if shape.hasShapeSlotContains() is False:
|
|
671
|
+
# An exception may be raised.
|
|
672
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
673
|
+
|
|
674
|
+
return makeRaiseTypeErrorExceptionReplacementFromTemplateAndValue(
|
|
675
|
+
template="argument of type '%s' object is not iterable",
|
|
676
|
+
operation="in",
|
|
677
|
+
original_node=in_node,
|
|
678
|
+
value_node=self,
|
|
679
|
+
)
|
|
680
|
+
|
|
681
|
+
# Any code could be run, note that.
|
|
682
|
+
trace_collection.onControlFlowEscape(in_node)
|
|
683
|
+
|
|
684
|
+
# Any exception may be raised.
|
|
685
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
686
|
+
|
|
687
|
+
return in_node, None, None
|
|
688
|
+
|
|
689
|
+
def computeExpressionDrop(self, statement, trace_collection):
|
|
690
|
+
if not self.mayHaveSideEffects():
|
|
691
|
+
return (
|
|
692
|
+
None,
|
|
693
|
+
"new_statements",
|
|
694
|
+
lambda: "Removed %s without effect." % self.getDescription(),
|
|
695
|
+
)
|
|
696
|
+
|
|
697
|
+
return statement, None, None
|
|
698
|
+
|
|
699
|
+
def computeExpressionBool(self, trace_collection):
|
|
700
|
+
if not self.mayRaiseException(BaseException) and self.mayRaiseExceptionBool(
|
|
701
|
+
BaseException
|
|
702
|
+
):
|
|
703
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
704
|
+
|
|
705
|
+
# None indicates no replacement action.
|
|
706
|
+
return None, None, None
|
|
707
|
+
|
|
708
|
+
@staticmethod
|
|
709
|
+
def onContentEscapes(trace_collection):
|
|
710
|
+
pass
|
|
711
|
+
|
|
712
|
+
@staticmethod
|
|
713
|
+
def onContentIteratedEscapes(trace_collection):
|
|
714
|
+
pass
|
|
715
|
+
|
|
716
|
+
@staticmethod
|
|
717
|
+
def mayRaiseExceptionBool(exception_type):
|
|
718
|
+
"""Unless we are told otherwise, everything may raise being checked."""
|
|
719
|
+
# Virtual method, pylint: disable=unused-argument
|
|
720
|
+
return True
|
|
721
|
+
|
|
722
|
+
@staticmethod
|
|
723
|
+
def mayRaiseExceptionAbs(exception_type):
|
|
724
|
+
"""Unless we are told otherwise, everything may raise in 'abs'."""
|
|
725
|
+
# Virtual method, pylint: disable=unused-argument
|
|
726
|
+
|
|
727
|
+
return True
|
|
728
|
+
|
|
729
|
+
@staticmethod
|
|
730
|
+
def mayRaiseExceptionInt(exception_type):
|
|
731
|
+
"""Unless we are told otherwise, everything may raise in __int__."""
|
|
732
|
+
# Virtual method, pylint: disable=unused-argument
|
|
733
|
+
|
|
734
|
+
return True
|
|
735
|
+
|
|
736
|
+
@staticmethod
|
|
737
|
+
def mayRaiseExceptionLong(exception_type):
|
|
738
|
+
"""Unless we are told otherwise, everything may raise in __long__."""
|
|
739
|
+
# Virtual method, pylint: disable=unused-argument
|
|
740
|
+
|
|
741
|
+
return True
|
|
742
|
+
|
|
743
|
+
@staticmethod
|
|
744
|
+
def mayRaiseExceptionFloat(exception_type):
|
|
745
|
+
"""Unless we are told otherwise, everything may raise in __float__."""
|
|
746
|
+
# Virtual method, pylint: disable=unused-argument
|
|
747
|
+
|
|
748
|
+
return True
|
|
749
|
+
|
|
750
|
+
@staticmethod
|
|
751
|
+
def mayRaiseExceptionBytes(exception_type):
|
|
752
|
+
"""Unless we are told otherwise, everything may raise in __bytes__."""
|
|
753
|
+
# Virtual method, pylint: disable=unused-argument
|
|
754
|
+
|
|
755
|
+
return True
|
|
756
|
+
|
|
757
|
+
@staticmethod
|
|
758
|
+
def mayRaiseExceptionIn(exception_type, checked_value):
|
|
759
|
+
"""Unless we are told otherwise, everything may raise being iterated."""
|
|
760
|
+
# Virtual method, pylint: disable=unused-argument
|
|
761
|
+
|
|
762
|
+
return True
|
|
763
|
+
|
|
764
|
+
@staticmethod
|
|
765
|
+
def mayRaiseExceptionAttributeLookup(exception_type, attribute_name):
|
|
766
|
+
"""Unless we are told otherwise, everything may raise for attribute access."""
|
|
767
|
+
# Virtual method, pylint: disable=unused-argument
|
|
768
|
+
|
|
769
|
+
return True
|
|
770
|
+
|
|
771
|
+
@staticmethod
|
|
772
|
+
def mayRaiseExceptionAttributeLookupSpecial(exception_type, attribute_name):
|
|
773
|
+
"""Unless we are told otherwise, everything may raise for attribute access."""
|
|
774
|
+
# Virtual method, pylint: disable=unused-argument
|
|
775
|
+
|
|
776
|
+
return True
|
|
777
|
+
|
|
778
|
+
@staticmethod
|
|
779
|
+
def mayRaiseExceptionAttributeLookupObject(exception_type, attribute):
|
|
780
|
+
"""Unless we are told otherwise, everything may raise for attribute access."""
|
|
781
|
+
# Virtual method, pylint: disable=unused-argument
|
|
782
|
+
|
|
783
|
+
return True
|
|
784
|
+
|
|
785
|
+
@staticmethod
|
|
786
|
+
def mayRaiseExceptionImportName(exception_type, import_name):
|
|
787
|
+
"""Unless we are told otherwise, everything may raise for name import."""
|
|
788
|
+
# Virtual method, pylint: disable=unused-argument
|
|
789
|
+
return True
|
|
790
|
+
|
|
791
|
+
@staticmethod
|
|
792
|
+
def mayHaveSideEffectsBool():
|
|
793
|
+
"""Unless we are told otherwise, everything may have a side effect for bool check."""
|
|
794
|
+
|
|
795
|
+
return True
|
|
796
|
+
|
|
797
|
+
@staticmethod
|
|
798
|
+
def mayHaveSideEffectsAbs():
|
|
799
|
+
"""Unless we are told otherwise, everything may have a side effect for abs check."""
|
|
800
|
+
|
|
801
|
+
# TODO: Bonus points for check type shapes that will be good
|
|
802
|
+
# for abs, i.e. number shapes like Int, Long, Float, Complex.
|
|
803
|
+
|
|
804
|
+
return True
|
|
805
|
+
|
|
806
|
+
def mayHaveSideEffectsNext(self):
|
|
807
|
+
"""The type shape tells us, if "next" may execute code."""
|
|
808
|
+
|
|
809
|
+
return self.getTypeShape().hasShapeSlotNextCode()
|
|
810
|
+
|
|
811
|
+
def hasShapeSlotLen(self):
|
|
812
|
+
"""The type shape tells us, if "len" is available."""
|
|
813
|
+
return self.getTypeShape().hasShapeSlotLen()
|
|
814
|
+
|
|
815
|
+
def hasShapeSlotIter(self):
|
|
816
|
+
"""The type shape tells us, if "iter" is available."""
|
|
817
|
+
return self.getTypeShape().hasShapeSlotIter()
|
|
818
|
+
|
|
819
|
+
def hasShapeSlotNext(self):
|
|
820
|
+
"""The type shape tells us, if "next" is available."""
|
|
821
|
+
return self.getTypeShape().hasShapeSlotNext()
|
|
822
|
+
|
|
823
|
+
# TODO: Maybe this is a shape slot thing.
|
|
824
|
+
@staticmethod
|
|
825
|
+
def isIndexable():
|
|
826
|
+
"""Unless we are told otherwise, it's not indexable."""
|
|
827
|
+
|
|
828
|
+
return False
|
|
829
|
+
|
|
830
|
+
# TODO: There ought to be a type shape check for that too.
|
|
831
|
+
@staticmethod
|
|
832
|
+
def getIntegerValue():
|
|
833
|
+
"""Node as integer value, if possible."""
|
|
834
|
+
|
|
835
|
+
return None
|
|
836
|
+
|
|
837
|
+
# TODO: There ought to be a type shape check for that too.
|
|
838
|
+
@staticmethod
|
|
839
|
+
def getIndexValue():
|
|
840
|
+
"""Node as index value, if possible.
|
|
841
|
+
|
|
842
|
+
This should only work for int, bool, and long values, but e.g. not floats.
|
|
843
|
+
"""
|
|
844
|
+
|
|
845
|
+
return None
|
|
846
|
+
|
|
847
|
+
@staticmethod
|
|
848
|
+
def getIntValue():
|
|
849
|
+
"""Value that "int" or "PyNumber_Int" (sp) would give, if known.
|
|
850
|
+
|
|
851
|
+
Otherwise it is "None" to indicate unknown. Users must not
|
|
852
|
+
forget to take side effects into account, when replacing a
|
|
853
|
+
node with its string value.
|
|
854
|
+
"""
|
|
855
|
+
return None
|
|
856
|
+
|
|
857
|
+
def getExpressionDictInConstant(self, value):
|
|
858
|
+
"""Value that the dict "in" operation would give, if known.
|
|
859
|
+
|
|
860
|
+
This is only called for values with known dict type shape. And those
|
|
861
|
+
nodes who are known to do it, have to overload it.
|
|
862
|
+
"""
|
|
863
|
+
|
|
864
|
+
# Virtual method, pylint: disable=unused-argument
|
|
865
|
+
|
|
866
|
+
# We want to have them all overloaded, so lets report cases where that
|
|
867
|
+
# has not been happening.
|
|
868
|
+
if Options.is_debug:
|
|
869
|
+
onMissingOverload(method_name="getExpressionDictInConstant", node=self)
|
|
870
|
+
|
|
871
|
+
return None
|
|
872
|
+
|
|
873
|
+
def hasShapeTrustedAttributes(self):
|
|
874
|
+
return self.getTypeShape().hasShapeTrustedAttributes()
|
|
875
|
+
|
|
876
|
+
def hasShapeTypeExact(self):
|
|
877
|
+
"""Does a node have exactly a 'type' shape."""
|
|
878
|
+
|
|
879
|
+
return self.getTypeShape() is tshape_type
|
|
880
|
+
|
|
881
|
+
def hasShapeListExact(self):
|
|
882
|
+
"""Does a node have exactly a list shape."""
|
|
883
|
+
|
|
884
|
+
return self.getTypeShape() is tshape_list
|
|
885
|
+
|
|
886
|
+
def hasShapeDictionaryExact(self):
|
|
887
|
+
"""Does a node have exactly a dictionary shape."""
|
|
888
|
+
|
|
889
|
+
return self.getTypeShape() is tshape_dict
|
|
890
|
+
|
|
891
|
+
def hasShapeStrExact(self):
|
|
892
|
+
"""Does an expression have exactly a string shape."""
|
|
893
|
+
return self.getTypeShape() is tshape_str
|
|
894
|
+
|
|
895
|
+
def hasShapeUnicodeExact(self):
|
|
896
|
+
"""Does an expression have exactly a unicode shape."""
|
|
897
|
+
return self.getTypeShape() is tshape_unicode
|
|
898
|
+
|
|
899
|
+
if str is bytes:
|
|
900
|
+
|
|
901
|
+
def hasShapeStrOrUnicodeExact(self):
|
|
902
|
+
return self.getTypeShape() in (tshape_str, tshape_unicode)
|
|
903
|
+
|
|
904
|
+
else:
|
|
905
|
+
|
|
906
|
+
def hasShapeStrOrUnicodeExact(self):
|
|
907
|
+
return self.getTypeShape() is tshape_str
|
|
908
|
+
|
|
909
|
+
def hasShapeBytesExact(self):
|
|
910
|
+
"""Does an expression have exactly a bytes shape."""
|
|
911
|
+
return self.getTypeShape() is tshape_bytes
|
|
912
|
+
|
|
913
|
+
def hasShapeBoolExact(self):
|
|
914
|
+
"""Does an expression have exactly a bool shape."""
|
|
915
|
+
return self.getTypeShape() is tshape_bool
|
|
916
|
+
|
|
917
|
+
@staticmethod
|
|
918
|
+
def hasVeryTrustedValue():
|
|
919
|
+
"""Trust that value will not be overwritten from the outside."""
|
|
920
|
+
return False
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
class ExpressionNoSideEffectsMixin(object):
|
|
924
|
+
__slots__ = ()
|
|
925
|
+
|
|
926
|
+
@staticmethod
|
|
927
|
+
def mayHaveSideEffects():
|
|
928
|
+
# Virtual method overload
|
|
929
|
+
return False
|
|
930
|
+
|
|
931
|
+
@staticmethod
|
|
932
|
+
def extractSideEffects():
|
|
933
|
+
# Virtual method overload, we said we have no effects.
|
|
934
|
+
return ()
|
|
935
|
+
|
|
936
|
+
def computeExpressionDrop(self, statement, trace_collection):
|
|
937
|
+
# Virtual method overload, pylint: disable=unused-argument
|
|
938
|
+
#
|
|
939
|
+
# We said we have no effects, so we can be removed.
|
|
940
|
+
return (
|
|
941
|
+
None,
|
|
942
|
+
"new_statements",
|
|
943
|
+
lambda: "Removed %s that never has an effect." % self.getDescription(),
|
|
944
|
+
)
|
|
945
|
+
|
|
946
|
+
@staticmethod
|
|
947
|
+
def mayRaiseException(exception_type):
|
|
948
|
+
# Virtual method overload, pylint: disable=unused-argument
|
|
949
|
+
|
|
950
|
+
# An exception would be considered a side effect too.
|
|
951
|
+
return False
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
class CompileTimeConstantExpressionBase(ExpressionNoSideEffectsMixin, ExpressionBase):
|
|
955
|
+
# TODO: Do this for all computations, do this in the base class of all
|
|
956
|
+
# nodes.
|
|
957
|
+
__slots__ = ("computed_attribute",)
|
|
958
|
+
|
|
959
|
+
def __init__(self, source_ref):
|
|
960
|
+
ExpressionBase.__init__(self, source_ref)
|
|
961
|
+
|
|
962
|
+
self.computed_attribute = None
|
|
963
|
+
|
|
964
|
+
@staticmethod
|
|
965
|
+
def isCompileTimeConstant():
|
|
966
|
+
"""Has a value that we can use at compile time.
|
|
967
|
+
|
|
968
|
+
Yes or no. If it has such a value, simulations can be applied at
|
|
969
|
+
compile time and e.g. operations or conditions, or even calls may
|
|
970
|
+
be executed against it.
|
|
971
|
+
"""
|
|
972
|
+
return True
|
|
973
|
+
|
|
974
|
+
def getTruthValue(self):
|
|
975
|
+
return bool(self.getCompileTimeConstant())
|
|
976
|
+
|
|
977
|
+
def getComparisonValue(self):
|
|
978
|
+
return True, self.getCompileTimeConstant()
|
|
979
|
+
|
|
980
|
+
@abstractmethod
|
|
981
|
+
def getCompileTimeConstant(self):
|
|
982
|
+
"""Return compile time constant.
|
|
983
|
+
|
|
984
|
+
Notes: Only available after passing "isCompileTimeConstant()".
|
|
985
|
+
|
|
986
|
+
"""
|
|
987
|
+
|
|
988
|
+
@staticmethod
|
|
989
|
+
def isMutable():
|
|
990
|
+
"""Return if compile time constant is mutable.
|
|
991
|
+
|
|
992
|
+
Notes: Only useful after passing "isCompileTimeConstant()".
|
|
993
|
+
"""
|
|
994
|
+
return False
|
|
995
|
+
|
|
996
|
+
@staticmethod
|
|
997
|
+
def hasShapeTrustedAttributes():
|
|
998
|
+
# All compile time constants must be fixed for attributes.
|
|
999
|
+
return True
|
|
1000
|
+
|
|
1001
|
+
@staticmethod
|
|
1002
|
+
def mayHaveSideEffectsBool():
|
|
1003
|
+
# Virtual method overload
|
|
1004
|
+
return False
|
|
1005
|
+
|
|
1006
|
+
@staticmethod
|
|
1007
|
+
def mayRaiseExceptionBool(exception_type):
|
|
1008
|
+
return False
|
|
1009
|
+
|
|
1010
|
+
def mayRaiseExceptionAttributeLookup(self, exception_type, attribute_name):
|
|
1011
|
+
# We remember it from our computation.
|
|
1012
|
+
return not self.computed_attribute
|
|
1013
|
+
|
|
1014
|
+
def mayRaiseExceptionAttributeLookupSpecial(self, exception_type, attribute_name):
|
|
1015
|
+
# We remember it from our computation.
|
|
1016
|
+
return not self.computed_attribute
|
|
1017
|
+
|
|
1018
|
+
def computeExpressionOperationNot(self, not_node, trace_collection):
|
|
1019
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1020
|
+
node=not_node,
|
|
1021
|
+
computation=lambda: not self.getCompileTimeConstant(),
|
|
1022
|
+
description="""\
|
|
1023
|
+
Compile time constant negation truth value pre-computed.""",
|
|
1024
|
+
)
|
|
1025
|
+
|
|
1026
|
+
def computeExpressionOperationRepr(self, repr_node, trace_collection):
|
|
1027
|
+
return (
|
|
1028
|
+
trace_collection.getCompileTimeComputationResult(
|
|
1029
|
+
node=repr_node,
|
|
1030
|
+
computation=lambda: repr(self.getCompileTimeConstant()),
|
|
1031
|
+
description="""\
|
|
1032
|
+
Compile time constant repr value pre-computed.""",
|
|
1033
|
+
),
|
|
1034
|
+
None,
|
|
1035
|
+
)
|
|
1036
|
+
|
|
1037
|
+
def computeExpressionLen(self, len_node, trace_collection):
|
|
1038
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1039
|
+
node=len_node,
|
|
1040
|
+
computation=lambda: len(self.getCompileTimeConstant()),
|
|
1041
|
+
description="""\
|
|
1042
|
+
Compile time constant len value pre-computed.""",
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
def computeExpressionAbs(self, abs_node, trace_collection):
|
|
1046
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1047
|
+
node=abs_node,
|
|
1048
|
+
computation=lambda: abs(self.getCompileTimeConstant()),
|
|
1049
|
+
description="""\
|
|
1050
|
+
Compile time constant abs value pre-computed.""",
|
|
1051
|
+
)
|
|
1052
|
+
|
|
1053
|
+
def computeExpressionInt(self, int_node, trace_collection):
|
|
1054
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1055
|
+
node=int_node,
|
|
1056
|
+
computation=lambda: int(self.getCompileTimeConstant()),
|
|
1057
|
+
description="""\
|
|
1058
|
+
Compile time constant int value pre-computed.""",
|
|
1059
|
+
)
|
|
1060
|
+
|
|
1061
|
+
def computeExpressionLong(self, long_node, trace_collection):
|
|
1062
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1063
|
+
node=long_node,
|
|
1064
|
+
computation=lambda: long(self.getCompileTimeConstant()),
|
|
1065
|
+
description="""\
|
|
1066
|
+
Compile time constant long value pre-computed.""",
|
|
1067
|
+
)
|
|
1068
|
+
|
|
1069
|
+
def computeExpressionFloat(self, float_node, trace_collection):
|
|
1070
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1071
|
+
node=float_node,
|
|
1072
|
+
computation=lambda: float(self.getCompileTimeConstant()),
|
|
1073
|
+
description="""\
|
|
1074
|
+
Compile time constant float value pre-computed.""",
|
|
1075
|
+
)
|
|
1076
|
+
|
|
1077
|
+
def computeExpressionBytes(self, bytes_node, trace_collection):
|
|
1078
|
+
constant_value = self.getCompileTimeConstant()
|
|
1079
|
+
|
|
1080
|
+
if type(constant_value) in (int, long):
|
|
1081
|
+
if constant_value > 1000:
|
|
1082
|
+
return bytes_node, None, None
|
|
1083
|
+
|
|
1084
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1085
|
+
node=bytes_node,
|
|
1086
|
+
computation=lambda: bytes(constant_value),
|
|
1087
|
+
description="""\
|
|
1088
|
+
Compile time constant bytes value pre-computed.""",
|
|
1089
|
+
)
|
|
1090
|
+
|
|
1091
|
+
def isKnownToHaveAttribute(self, attribute_name):
|
|
1092
|
+
if self.computed_attribute is None:
|
|
1093
|
+
self.computed_attribute = hasattr(
|
|
1094
|
+
self.getCompileTimeConstant(), attribute_name
|
|
1095
|
+
)
|
|
1096
|
+
|
|
1097
|
+
return self.computed_attribute
|
|
1098
|
+
|
|
1099
|
+
def getKnownAttributeValue(self, attribute_name):
|
|
1100
|
+
return getattr(self.getCompileTimeConstant(), attribute_name)
|
|
1101
|
+
|
|
1102
|
+
def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
|
|
1103
|
+
value = self.getCompileTimeConstant()
|
|
1104
|
+
|
|
1105
|
+
if self.computed_attribute is None:
|
|
1106
|
+
self.computed_attribute = hasattr(value, attribute_name)
|
|
1107
|
+
|
|
1108
|
+
# If it raises, or the attribute itself is a compile time constant,
|
|
1109
|
+
# then do execute it.
|
|
1110
|
+
if not self.computed_attribute or isCompileTimeConstantValue(
|
|
1111
|
+
getattr(value, attribute_name, None)
|
|
1112
|
+
):
|
|
1113
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1114
|
+
node=lookup_node,
|
|
1115
|
+
computation=lambda: getattr(value, attribute_name),
|
|
1116
|
+
description="Attribute '%s' pre-computed." % (attribute_name),
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
return lookup_node, None, None
|
|
1120
|
+
|
|
1121
|
+
def computeExpressionSubscript(self, lookup_node, subscript, trace_collection):
|
|
1122
|
+
if subscript.isCompileTimeConstant():
|
|
1123
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1124
|
+
node=lookup_node,
|
|
1125
|
+
computation=lambda: self.getCompileTimeConstant()[
|
|
1126
|
+
subscript.getCompileTimeConstant()
|
|
1127
|
+
],
|
|
1128
|
+
description="Subscript of constant with constant value.",
|
|
1129
|
+
)
|
|
1130
|
+
|
|
1131
|
+
# TODO: Look-up of subscript to index may happen.
|
|
1132
|
+
# Any code could be run due to that, note that.
|
|
1133
|
+
trace_collection.onControlFlowEscape(self)
|
|
1134
|
+
|
|
1135
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1136
|
+
|
|
1137
|
+
return lookup_node, None, None
|
|
1138
|
+
|
|
1139
|
+
def computeExpressionSlice(self, lookup_node, lower, upper, trace_collection):
|
|
1140
|
+
# TODO: Could be happy with predictable index values and not require
|
|
1141
|
+
# constants.
|
|
1142
|
+
if lower is not None:
|
|
1143
|
+
if upper is not None:
|
|
1144
|
+
if lower.isCompileTimeConstant() and upper.isCompileTimeConstant():
|
|
1145
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1146
|
+
node=lookup_node,
|
|
1147
|
+
computation=lambda: self.getCompileTimeConstant()[
|
|
1148
|
+
lower.getCompileTimeConstant() : upper.getCompileTimeConstant()
|
|
1149
|
+
],
|
|
1150
|
+
description="Slicing of constant with constant indexes.",
|
|
1151
|
+
user_provided=False,
|
|
1152
|
+
)
|
|
1153
|
+
else:
|
|
1154
|
+
if lower.isCompileTimeConstant():
|
|
1155
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1156
|
+
node=lookup_node,
|
|
1157
|
+
computation=lambda: self.getCompileTimeConstant()[
|
|
1158
|
+
lower.getCompileTimeConstant() :
|
|
1159
|
+
],
|
|
1160
|
+
description="Slicing of constant with constant lower index only.",
|
|
1161
|
+
user_provided=False,
|
|
1162
|
+
)
|
|
1163
|
+
else:
|
|
1164
|
+
if upper is not None:
|
|
1165
|
+
if upper.isCompileTimeConstant():
|
|
1166
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1167
|
+
node=lookup_node,
|
|
1168
|
+
computation=lambda: self.getCompileTimeConstant()[
|
|
1169
|
+
: upper.getCompileTimeConstant()
|
|
1170
|
+
],
|
|
1171
|
+
description="Slicing of constant with constant upper index only.",
|
|
1172
|
+
user_provided=False,
|
|
1173
|
+
)
|
|
1174
|
+
else:
|
|
1175
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1176
|
+
node=lookup_node,
|
|
1177
|
+
computation=lambda: self.getCompileTimeConstant()[:],
|
|
1178
|
+
description="Slicing of constant with no indexes.",
|
|
1179
|
+
user_provided=False,
|
|
1180
|
+
)
|
|
1181
|
+
|
|
1182
|
+
# Any exception might be raised, although it's not likely.
|
|
1183
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1184
|
+
|
|
1185
|
+
return lookup_node, None, None
|
|
1186
|
+
|
|
1187
|
+
def computeExpressionComparisonIn(self, in_node, value_node, trace_collection):
|
|
1188
|
+
if value_node.isCompileTimeConstant():
|
|
1189
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1190
|
+
node=in_node,
|
|
1191
|
+
computation=lambda: in_node.getSimulator()(
|
|
1192
|
+
value_node.getCompileTimeConstant(), self.getCompileTimeConstant()
|
|
1193
|
+
),
|
|
1194
|
+
description="""\
|
|
1195
|
+
Predicted '%s' on compiled time constant values."""
|
|
1196
|
+
% in_node.comparator,
|
|
1197
|
+
user_provided=False,
|
|
1198
|
+
)
|
|
1199
|
+
|
|
1200
|
+
# Look-up of __contains__ on compile time constants does mostly nothing.
|
|
1201
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1202
|
+
|
|
1203
|
+
return in_node, None, None
|
|
1204
|
+
|
|
1205
|
+
def computeExpressionBool(self, trace_collection):
|
|
1206
|
+
constant = self.getCompileTimeConstant()
|
|
1207
|
+
|
|
1208
|
+
# Dealt with through dedicated nodes.
|
|
1209
|
+
assert type(constant) is not bool
|
|
1210
|
+
truth_value = bool(constant)
|
|
1211
|
+
|
|
1212
|
+
result = makeConstantReplacementNode(
|
|
1213
|
+
constant=truth_value, node=self, user_provided=False
|
|
1214
|
+
)
|
|
1215
|
+
|
|
1216
|
+
return truth_value, result, "Predicted compile time constant truth value."
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
class ExpressionSpecBasedComputationMixin(object):
|
|
1220
|
+
# Mixins are not allowed to specify slots.
|
|
1221
|
+
__slots__ = ()
|
|
1222
|
+
|
|
1223
|
+
builtin_spec = None
|
|
1224
|
+
|
|
1225
|
+
def computeBuiltinSpec(self, trace_collection, given_values):
|
|
1226
|
+
assert self.builtin_spec is not None, self
|
|
1227
|
+
|
|
1228
|
+
if not self.builtin_spec.isCompileTimeComputable(given_values):
|
|
1229
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1230
|
+
|
|
1231
|
+
return self, None, None
|
|
1232
|
+
|
|
1233
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1234
|
+
node=self,
|
|
1235
|
+
computation=lambda: self.builtin_spec.simulateCall(given_values),
|
|
1236
|
+
description="Built-in call to '%s' pre-computed."
|
|
1237
|
+
% (self.builtin_spec.getName()),
|
|
1238
|
+
user_provided=self.builtin_spec.isUserProvided(given_values),
|
|
1239
|
+
)
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
class ExpressionSpecBasedComputationNoRaiseMixin(object):
|
|
1243
|
+
# Mixins are not allowed to specify slots.
|
|
1244
|
+
__slots__ = ()
|
|
1245
|
+
|
|
1246
|
+
builtin_spec = None
|
|
1247
|
+
|
|
1248
|
+
def computeBuiltinSpec(self, trace_collection, given_values):
|
|
1249
|
+
assert self.builtin_spec is not None, self
|
|
1250
|
+
|
|
1251
|
+
if not self.builtin_spec.isCompileTimeComputable(given_values):
|
|
1252
|
+
return self, None, None
|
|
1253
|
+
|
|
1254
|
+
return trace_collection.getCompileTimeComputationResult(
|
|
1255
|
+
node=self,
|
|
1256
|
+
computation=lambda: self.builtin_spec.simulateCall(given_values),
|
|
1257
|
+
description="Built-in call to '%s' pre-computed."
|
|
1258
|
+
% (self.builtin_spec.getName()),
|
|
1259
|
+
)
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
class ExpressionBuiltinSingleArgBase(
|
|
1263
|
+
ExpressionSpecBasedComputationMixin, ChildHavingValueMixin, ExpressionBase
|
|
1264
|
+
):
|
|
1265
|
+
named_children = ("value",)
|
|
1266
|
+
|
|
1267
|
+
def __init__(self, value, source_ref):
|
|
1268
|
+
ChildHavingValueMixin.__init__(self, value=value)
|
|
1269
|
+
|
|
1270
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1271
|
+
|
|
1272
|
+
def computeExpression(self, trace_collection):
|
|
1273
|
+
value = self.subnode_value
|
|
1274
|
+
|
|
1275
|
+
# TODO: Can this happen, where, and can we have a different base class then.
|
|
1276
|
+
assert value is not None
|
|
1277
|
+
|
|
1278
|
+
if value is None:
|
|
1279
|
+
return self.computeBuiltinSpec(
|
|
1280
|
+
trace_collection=trace_collection, given_values=()
|
|
1281
|
+
)
|
|
1282
|
+
else:
|
|
1283
|
+
return self.computeBuiltinSpec(
|
|
1284
|
+
trace_collection=trace_collection, given_values=(value,)
|
|
1285
|
+
)
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1289
|
+
# integrates with CPython, but also works on its own.
|
|
1290
|
+
#
|
|
1291
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1292
|
+
# you may not use this file except in compliance with the License.
|
|
1293
|
+
# You may obtain a copy of the License at
|
|
1294
|
+
#
|
|
1295
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1296
|
+
#
|
|
1297
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1298
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1299
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1300
|
+
# See the License for the specific language governing permissions and
|
|
1301
|
+
# limitations under the License.
|