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,2103 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# We are not avoiding these in generated code at all
|
|
5
|
+
# pylint: disable=I0021,line-too-long,too-many-instance-attributes,too-many-lines
|
|
6
|
+
# pylint: disable=I0021,too-many-arguments,too-many-return-statements,too-many-statements
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
"""Children having expression bases
|
|
10
|
+
|
|
11
|
+
WARNING, this code is GENERATED. Modify the template ChildrenHavingMixin.py.j2 instead!
|
|
12
|
+
|
|
13
|
+
spell-checker: ignore __prepare__ append args autograph capitalize casefold center chars
|
|
14
|
+
spell-checker: ignore clear copy count decode default delete dist distribution_name encode
|
|
15
|
+
spell-checker: ignore encoding end endswith errors exit_code expandtabs
|
|
16
|
+
spell-checker: ignore experimental_attributes experimental_autograph_options
|
|
17
|
+
spell-checker: ignore experimental_compile experimental_follow_type_hints
|
|
18
|
+
spell-checker: ignore experimental_implements experimental_relax_shapes extend fillchar
|
|
19
|
+
spell-checker: ignore find format format_map formatmap fromkeys func get group handle
|
|
20
|
+
spell-checker: ignore has_key haskey index input_signature insert isalnum isalpha isascii
|
|
21
|
+
spell-checker: ignore isdecimal isdigit isidentifier islower isnumeric isprintable isspace
|
|
22
|
+
spell-checker: ignore istitle isupper item items iterable iteritems iterkeys itervalues
|
|
23
|
+
spell-checker: ignore jit_compile join keepends key keys kwargs ljust lower lstrip
|
|
24
|
+
spell-checker: ignore maketrans maxsplit mode name new old p package
|
|
25
|
+
spell-checker: ignore package_or_requirement pairs partition path pop popitem prefix
|
|
26
|
+
spell-checker: ignore prepare reduce_retracing remove replace resource resource_name
|
|
27
|
+
spell-checker: ignore reverse rfind rindex rjust rpartition rsplit rstrip s sep setdefault
|
|
28
|
+
spell-checker: ignore sort split splitlines start startswith stop strip sub suffix
|
|
29
|
+
spell-checker: ignore swapcase table tabsize title translate update upper use_errno
|
|
30
|
+
spell-checker: ignore use_last_error value values viewitems viewkeys viewvalues width
|
|
31
|
+
spell-checker: ignore winmode zfill
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# Loop unrolling over child names, pylint: disable=too-many-branches
|
|
36
|
+
|
|
37
|
+
from abc import abstractmethod
|
|
38
|
+
|
|
39
|
+
from .ExpressionBases import ExpressionBase
|
|
40
|
+
from .NodeMakingHelpers import wrapExpressionWithSideEffects
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class NoChildHavingFinalNoRaiseMixin(ExpressionBase):
|
|
44
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
45
|
+
__slots__ = ()
|
|
46
|
+
|
|
47
|
+
# This is generated for use in
|
|
48
|
+
# ExpressionImportlibMetadataBackportEntryPointValueRef
|
|
49
|
+
# ExpressionImportlibMetadataEntryPointValueRef
|
|
50
|
+
|
|
51
|
+
def finalize(self):
|
|
52
|
+
del self.parent
|
|
53
|
+
|
|
54
|
+
def computeExpressionRaw(self, trace_collection):
|
|
55
|
+
"""Compute an expression.
|
|
56
|
+
|
|
57
|
+
Default behavior is to just visit the child expressions first, and
|
|
58
|
+
then the node "computeExpression". For a few cases this needs to
|
|
59
|
+
be overloaded, e.g. conditional expressions.
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
return self, None, None
|
|
63
|
+
|
|
64
|
+
@staticmethod
|
|
65
|
+
def mayRaiseExceptionOperation():
|
|
66
|
+
return False
|
|
67
|
+
|
|
68
|
+
@staticmethod
|
|
69
|
+
def mayRaiseException(exception_type):
|
|
70
|
+
return False
|
|
71
|
+
|
|
72
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
73
|
+
"""Collect variable reads and writes of child nodes."""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# Assign the names that are easier to import with a stable name.
|
|
77
|
+
ExpressionImportlibMetadataBackportEntryPointValueRefBase = (
|
|
78
|
+
NoChildHavingFinalNoRaiseMixin
|
|
79
|
+
)
|
|
80
|
+
ExpressionImportlibMetadataEntryPointValueRefBase = NoChildHavingFinalNoRaiseMixin
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class NoChildHavingFinalNoRaiseNameMixin(ExpressionBase):
|
|
84
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
85
|
+
__slots__ = ()
|
|
86
|
+
|
|
87
|
+
# This is generated for use in
|
|
88
|
+
# ExpressionTypeVariable
|
|
89
|
+
|
|
90
|
+
def __init__(self, name, source_ref):
|
|
91
|
+
self.name = name
|
|
92
|
+
|
|
93
|
+
ExpressionBase.__init__(self, source_ref)
|
|
94
|
+
|
|
95
|
+
def getDetails(self):
|
|
96
|
+
return {
|
|
97
|
+
"name": self.name,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
def getVisitableNodes(self):
|
|
101
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
102
|
+
|
|
103
|
+
return ()
|
|
104
|
+
|
|
105
|
+
def getVisitableNodesNamed(self):
|
|
106
|
+
"""Named children dictionary.
|
|
107
|
+
|
|
108
|
+
For use in cloning nodes, debugging and XML output.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
return ()
|
|
112
|
+
|
|
113
|
+
def replaceChild(self, old_node, new_node):
|
|
114
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
115
|
+
|
|
116
|
+
def getCloneArgs(self):
|
|
117
|
+
"""Get clones of all children to pass for a new node.
|
|
118
|
+
|
|
119
|
+
Needs to make clones of child nodes too.
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
values = {}
|
|
123
|
+
|
|
124
|
+
values.update(self.getDetails())
|
|
125
|
+
|
|
126
|
+
return values
|
|
127
|
+
|
|
128
|
+
def finalize(self):
|
|
129
|
+
del self.parent
|
|
130
|
+
|
|
131
|
+
def computeExpressionRaw(self, trace_collection):
|
|
132
|
+
"""Compute an expression.
|
|
133
|
+
|
|
134
|
+
Default behavior is to just visit the child expressions first, and
|
|
135
|
+
then the node "computeExpression". For a few cases this needs to
|
|
136
|
+
be overloaded, e.g. conditional expressions.
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
return self, None, None
|
|
140
|
+
|
|
141
|
+
@staticmethod
|
|
142
|
+
def mayRaiseExceptionOperation():
|
|
143
|
+
return False
|
|
144
|
+
|
|
145
|
+
@staticmethod
|
|
146
|
+
def mayRaiseException(exception_type):
|
|
147
|
+
return False
|
|
148
|
+
|
|
149
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
150
|
+
"""Collect variable reads and writes of child nodes."""
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Assign the names that are easier to import with a stable name.
|
|
154
|
+
ExpressionTypeVariableBase = NoChildHavingFinalNoRaiseNameMixin
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class ChildHavingArgsTupleFinalNoRaiseMixin(ExpressionBase):
|
|
158
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
159
|
+
__slots__ = ()
|
|
160
|
+
|
|
161
|
+
# This is generated for use in
|
|
162
|
+
# ExpressionBuiltinMakeException
|
|
163
|
+
|
|
164
|
+
def __init__(self, args, source_ref):
|
|
165
|
+
assert type(args) is tuple
|
|
166
|
+
|
|
167
|
+
for val in args:
|
|
168
|
+
val.parent = self
|
|
169
|
+
|
|
170
|
+
self.subnode_args = args
|
|
171
|
+
|
|
172
|
+
ExpressionBase.__init__(self, source_ref)
|
|
173
|
+
|
|
174
|
+
def getVisitableNodes(self):
|
|
175
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
176
|
+
|
|
177
|
+
return self.subnode_args
|
|
178
|
+
|
|
179
|
+
def getVisitableNodesNamed(self):
|
|
180
|
+
"""Named children dictionary.
|
|
181
|
+
|
|
182
|
+
For use in cloning nodes, debugging and XML output.
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
return (("args", self.subnode_args),)
|
|
186
|
+
|
|
187
|
+
def replaceChild(self, old_node, new_node):
|
|
188
|
+
value = self.subnode_args
|
|
189
|
+
if old_node in value:
|
|
190
|
+
if new_node is not None:
|
|
191
|
+
new_node.parent = self
|
|
192
|
+
|
|
193
|
+
self.subnode_args = tuple(
|
|
194
|
+
(val if val is not old_node else new_node) for val in value
|
|
195
|
+
)
|
|
196
|
+
else:
|
|
197
|
+
self.subnode_args = tuple(val for val in value if val is not old_node)
|
|
198
|
+
|
|
199
|
+
return
|
|
200
|
+
|
|
201
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
202
|
+
|
|
203
|
+
def getCloneArgs(self):
|
|
204
|
+
"""Get clones of all children to pass for a new node.
|
|
205
|
+
|
|
206
|
+
Needs to make clones of child nodes too.
|
|
207
|
+
"""
|
|
208
|
+
|
|
209
|
+
values = {
|
|
210
|
+
"args": tuple(v.makeClone() for v in self.subnode_args),
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
values.update(self.getDetails())
|
|
214
|
+
|
|
215
|
+
return values
|
|
216
|
+
|
|
217
|
+
def finalize(self):
|
|
218
|
+
del self.parent
|
|
219
|
+
|
|
220
|
+
for c in self.subnode_args:
|
|
221
|
+
c.finalize()
|
|
222
|
+
del self.subnode_args
|
|
223
|
+
|
|
224
|
+
def computeExpressionRaw(self, trace_collection):
|
|
225
|
+
"""Compute an expression.
|
|
226
|
+
|
|
227
|
+
Default behavior is to just visit the child expressions first, and
|
|
228
|
+
then the node "computeExpression". For a few cases this needs to
|
|
229
|
+
be overloaded, e.g. conditional expressions.
|
|
230
|
+
"""
|
|
231
|
+
|
|
232
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
233
|
+
# the actual operation.
|
|
234
|
+
old_subnode_args = self.subnode_args
|
|
235
|
+
|
|
236
|
+
for sub_expression in old_subnode_args:
|
|
237
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
238
|
+
|
|
239
|
+
if expression.willRaiseAnyException():
|
|
240
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
241
|
+
side_effects=self.subnode_args[
|
|
242
|
+
: old_subnode_args.index(sub_expression)
|
|
243
|
+
],
|
|
244
|
+
old_node=sub_expression,
|
|
245
|
+
new_node=expression,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
return (
|
|
249
|
+
wrapped_expression,
|
|
250
|
+
"new_raise",
|
|
251
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
252
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
return self, None, None
|
|
256
|
+
|
|
257
|
+
@staticmethod
|
|
258
|
+
def mayRaiseExceptionOperation():
|
|
259
|
+
return False
|
|
260
|
+
|
|
261
|
+
def mayRaiseException(self, exception_type):
|
|
262
|
+
return any(
|
|
263
|
+
value.mayRaiseException(exception_type) for value in self.subnode_args
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
267
|
+
"""Collect variable reads and writes of child nodes."""
|
|
268
|
+
|
|
269
|
+
for element in self.subnode_args:
|
|
270
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
# Assign the names that are easier to import with a stable name.
|
|
274
|
+
ExpressionBuiltinMakeExceptionBase = ChildHavingArgsTupleFinalNoRaiseMixin
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class ChildrenHavingArgsTupleNameOptionalObjOptionalFinalNoRaiseForRaiseMixin(
|
|
278
|
+
ExpressionBase
|
|
279
|
+
):
|
|
280
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
281
|
+
__slots__ = ()
|
|
282
|
+
|
|
283
|
+
# This is generated for use in
|
|
284
|
+
# ExpressionBuiltinMakeExceptionAttributeError
|
|
285
|
+
|
|
286
|
+
def __init__(self, args, name, obj, for_raise, source_ref):
|
|
287
|
+
assert type(args) is tuple
|
|
288
|
+
|
|
289
|
+
for val in args:
|
|
290
|
+
val.parent = self
|
|
291
|
+
|
|
292
|
+
self.subnode_args = args
|
|
293
|
+
|
|
294
|
+
if name is not None:
|
|
295
|
+
name.parent = self
|
|
296
|
+
|
|
297
|
+
self.subnode_name = name
|
|
298
|
+
|
|
299
|
+
if obj is not None:
|
|
300
|
+
obj.parent = self
|
|
301
|
+
|
|
302
|
+
self.subnode_obj = obj
|
|
303
|
+
|
|
304
|
+
self.for_raise = for_raise
|
|
305
|
+
|
|
306
|
+
ExpressionBase.__init__(self, source_ref)
|
|
307
|
+
|
|
308
|
+
def getDetails(self):
|
|
309
|
+
return {
|
|
310
|
+
"for_raise": self.for_raise,
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
def getVisitableNodes(self):
|
|
314
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
315
|
+
|
|
316
|
+
result = []
|
|
317
|
+
result.extend(self.subnode_args)
|
|
318
|
+
value = self.subnode_name
|
|
319
|
+
if value is None:
|
|
320
|
+
pass
|
|
321
|
+
else:
|
|
322
|
+
result.append(value)
|
|
323
|
+
value = self.subnode_obj
|
|
324
|
+
if value is None:
|
|
325
|
+
pass
|
|
326
|
+
else:
|
|
327
|
+
result.append(value)
|
|
328
|
+
return tuple(result)
|
|
329
|
+
|
|
330
|
+
def getVisitableNodesNamed(self):
|
|
331
|
+
"""Named children dictionary.
|
|
332
|
+
|
|
333
|
+
For use in cloning nodes, debugging and XML output.
|
|
334
|
+
"""
|
|
335
|
+
|
|
336
|
+
return (
|
|
337
|
+
("args", self.subnode_args),
|
|
338
|
+
("name", self.subnode_name),
|
|
339
|
+
("obj", self.subnode_obj),
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
def replaceChild(self, old_node, new_node):
|
|
343
|
+
value = self.subnode_args
|
|
344
|
+
if old_node in value:
|
|
345
|
+
if new_node is not None:
|
|
346
|
+
new_node.parent = self
|
|
347
|
+
|
|
348
|
+
self.subnode_args = tuple(
|
|
349
|
+
(val if val is not old_node else new_node) for val in value
|
|
350
|
+
)
|
|
351
|
+
else:
|
|
352
|
+
self.subnode_args = tuple(val for val in value if val is not old_node)
|
|
353
|
+
|
|
354
|
+
return
|
|
355
|
+
|
|
356
|
+
value = self.subnode_name
|
|
357
|
+
if old_node is value:
|
|
358
|
+
if new_node is not None:
|
|
359
|
+
new_node.parent = self
|
|
360
|
+
|
|
361
|
+
self.subnode_name = new_node
|
|
362
|
+
|
|
363
|
+
return
|
|
364
|
+
|
|
365
|
+
value = self.subnode_obj
|
|
366
|
+
if old_node is value:
|
|
367
|
+
if new_node is not None:
|
|
368
|
+
new_node.parent = self
|
|
369
|
+
|
|
370
|
+
self.subnode_obj = new_node
|
|
371
|
+
|
|
372
|
+
return
|
|
373
|
+
|
|
374
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
375
|
+
|
|
376
|
+
def getCloneArgs(self):
|
|
377
|
+
"""Get clones of all children to pass for a new node.
|
|
378
|
+
|
|
379
|
+
Needs to make clones of child nodes too.
|
|
380
|
+
"""
|
|
381
|
+
|
|
382
|
+
values = {
|
|
383
|
+
"args": tuple(v.makeClone() for v in self.subnode_args),
|
|
384
|
+
"name": (
|
|
385
|
+
self.subnode_name.makeClone() if self.subnode_name is not None else None
|
|
386
|
+
),
|
|
387
|
+
"obj": (
|
|
388
|
+
self.subnode_obj.makeClone() if self.subnode_obj is not None else None
|
|
389
|
+
),
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
values.update(self.getDetails())
|
|
393
|
+
|
|
394
|
+
return values
|
|
395
|
+
|
|
396
|
+
def finalize(self):
|
|
397
|
+
del self.parent
|
|
398
|
+
|
|
399
|
+
for c in self.subnode_args:
|
|
400
|
+
c.finalize()
|
|
401
|
+
del self.subnode_args
|
|
402
|
+
if self.subnode_name is not None:
|
|
403
|
+
self.subnode_name.finalize()
|
|
404
|
+
del self.subnode_name
|
|
405
|
+
if self.subnode_obj is not None:
|
|
406
|
+
self.subnode_obj.finalize()
|
|
407
|
+
del self.subnode_obj
|
|
408
|
+
|
|
409
|
+
def computeExpressionRaw(self, trace_collection):
|
|
410
|
+
"""Compute an expression.
|
|
411
|
+
|
|
412
|
+
Default behavior is to just visit the child expressions first, and
|
|
413
|
+
then the node "computeExpression". For a few cases this needs to
|
|
414
|
+
be overloaded, e.g. conditional expressions.
|
|
415
|
+
"""
|
|
416
|
+
|
|
417
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
418
|
+
# the actual operation.
|
|
419
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
420
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
421
|
+
|
|
422
|
+
if expression.willRaiseAnyException():
|
|
423
|
+
sub_expressions = self.getVisitableNodes()
|
|
424
|
+
|
|
425
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
426
|
+
side_effects=sub_expressions[:count],
|
|
427
|
+
old_node=sub_expression,
|
|
428
|
+
new_node=expression,
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
return (
|
|
432
|
+
wrapped_expression,
|
|
433
|
+
"new_raise",
|
|
434
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
435
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
return self, None, None
|
|
439
|
+
|
|
440
|
+
@staticmethod
|
|
441
|
+
def mayRaiseExceptionOperation():
|
|
442
|
+
return False
|
|
443
|
+
|
|
444
|
+
def mayRaiseException(self, exception_type):
|
|
445
|
+
return (
|
|
446
|
+
any(value.mayRaiseException(exception_type) for value in self.subnode_args)
|
|
447
|
+
or (
|
|
448
|
+
self.subnode_name is not None
|
|
449
|
+
and self.subnode_name.mayRaiseException(exception_type)
|
|
450
|
+
)
|
|
451
|
+
or (
|
|
452
|
+
self.subnode_obj is not None
|
|
453
|
+
and self.subnode_obj.mayRaiseException(exception_type)
|
|
454
|
+
)
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
458
|
+
"""Collect variable reads and writes of child nodes."""
|
|
459
|
+
|
|
460
|
+
for element in self.subnode_args:
|
|
461
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
462
|
+
subnode_name = self.subnode_name
|
|
463
|
+
|
|
464
|
+
if subnode_name is not None:
|
|
465
|
+
self.subnode_name.collectVariableAccesses(emit_read, emit_write)
|
|
466
|
+
subnode_obj = self.subnode_obj
|
|
467
|
+
|
|
468
|
+
if subnode_obj is not None:
|
|
469
|
+
self.subnode_obj.collectVariableAccesses(emit_read, emit_write)
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
# Assign the names that are easier to import with a stable name.
|
|
473
|
+
ExpressionBuiltinMakeExceptionAttributeErrorBase = (
|
|
474
|
+
ChildrenHavingArgsTupleNameOptionalObjOptionalFinalNoRaiseForRaiseMixin
|
|
475
|
+
)
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
class ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin(
|
|
479
|
+
ExpressionBase
|
|
480
|
+
):
|
|
481
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
482
|
+
__slots__ = ()
|
|
483
|
+
|
|
484
|
+
# This is generated for use in
|
|
485
|
+
# ExpressionBuiltinMakeExceptionImportError
|
|
486
|
+
# ExpressionBuiltinMakeExceptionModuleNotFoundError
|
|
487
|
+
|
|
488
|
+
def __init__(self, args, name, path, for_raise, source_ref):
|
|
489
|
+
assert type(args) is tuple
|
|
490
|
+
|
|
491
|
+
for val in args:
|
|
492
|
+
val.parent = self
|
|
493
|
+
|
|
494
|
+
self.subnode_args = args
|
|
495
|
+
|
|
496
|
+
if name is not None:
|
|
497
|
+
name.parent = self
|
|
498
|
+
|
|
499
|
+
self.subnode_name = name
|
|
500
|
+
|
|
501
|
+
if path is not None:
|
|
502
|
+
path.parent = self
|
|
503
|
+
|
|
504
|
+
self.subnode_path = path
|
|
505
|
+
|
|
506
|
+
self.for_raise = for_raise
|
|
507
|
+
|
|
508
|
+
ExpressionBase.__init__(self, source_ref)
|
|
509
|
+
|
|
510
|
+
def getDetails(self):
|
|
511
|
+
return {
|
|
512
|
+
"for_raise": self.for_raise,
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
def getVisitableNodes(self):
|
|
516
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
517
|
+
|
|
518
|
+
result = []
|
|
519
|
+
result.extend(self.subnode_args)
|
|
520
|
+
value = self.subnode_name
|
|
521
|
+
if value is None:
|
|
522
|
+
pass
|
|
523
|
+
else:
|
|
524
|
+
result.append(value)
|
|
525
|
+
value = self.subnode_path
|
|
526
|
+
if value is None:
|
|
527
|
+
pass
|
|
528
|
+
else:
|
|
529
|
+
result.append(value)
|
|
530
|
+
return tuple(result)
|
|
531
|
+
|
|
532
|
+
def getVisitableNodesNamed(self):
|
|
533
|
+
"""Named children dictionary.
|
|
534
|
+
|
|
535
|
+
For use in cloning nodes, debugging and XML output.
|
|
536
|
+
"""
|
|
537
|
+
|
|
538
|
+
return (
|
|
539
|
+
("args", self.subnode_args),
|
|
540
|
+
("name", self.subnode_name),
|
|
541
|
+
("path", self.subnode_path),
|
|
542
|
+
)
|
|
543
|
+
|
|
544
|
+
def replaceChild(self, old_node, new_node):
|
|
545
|
+
value = self.subnode_args
|
|
546
|
+
if old_node in value:
|
|
547
|
+
if new_node is not None:
|
|
548
|
+
new_node.parent = self
|
|
549
|
+
|
|
550
|
+
self.subnode_args = tuple(
|
|
551
|
+
(val if val is not old_node else new_node) for val in value
|
|
552
|
+
)
|
|
553
|
+
else:
|
|
554
|
+
self.subnode_args = tuple(val for val in value if val is not old_node)
|
|
555
|
+
|
|
556
|
+
return
|
|
557
|
+
|
|
558
|
+
value = self.subnode_name
|
|
559
|
+
if old_node is value:
|
|
560
|
+
if new_node is not None:
|
|
561
|
+
new_node.parent = self
|
|
562
|
+
|
|
563
|
+
self.subnode_name = new_node
|
|
564
|
+
|
|
565
|
+
return
|
|
566
|
+
|
|
567
|
+
value = self.subnode_path
|
|
568
|
+
if old_node is value:
|
|
569
|
+
if new_node is not None:
|
|
570
|
+
new_node.parent = self
|
|
571
|
+
|
|
572
|
+
self.subnode_path = new_node
|
|
573
|
+
|
|
574
|
+
return
|
|
575
|
+
|
|
576
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
577
|
+
|
|
578
|
+
def getCloneArgs(self):
|
|
579
|
+
"""Get clones of all children to pass for a new node.
|
|
580
|
+
|
|
581
|
+
Needs to make clones of child nodes too.
|
|
582
|
+
"""
|
|
583
|
+
|
|
584
|
+
values = {
|
|
585
|
+
"args": tuple(v.makeClone() for v in self.subnode_args),
|
|
586
|
+
"name": (
|
|
587
|
+
self.subnode_name.makeClone() if self.subnode_name is not None else None
|
|
588
|
+
),
|
|
589
|
+
"path": (
|
|
590
|
+
self.subnode_path.makeClone() if self.subnode_path is not None else None
|
|
591
|
+
),
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
values.update(self.getDetails())
|
|
595
|
+
|
|
596
|
+
return values
|
|
597
|
+
|
|
598
|
+
def finalize(self):
|
|
599
|
+
del self.parent
|
|
600
|
+
|
|
601
|
+
for c in self.subnode_args:
|
|
602
|
+
c.finalize()
|
|
603
|
+
del self.subnode_args
|
|
604
|
+
if self.subnode_name is not None:
|
|
605
|
+
self.subnode_name.finalize()
|
|
606
|
+
del self.subnode_name
|
|
607
|
+
if self.subnode_path is not None:
|
|
608
|
+
self.subnode_path.finalize()
|
|
609
|
+
del self.subnode_path
|
|
610
|
+
|
|
611
|
+
def computeExpressionRaw(self, trace_collection):
|
|
612
|
+
"""Compute an expression.
|
|
613
|
+
|
|
614
|
+
Default behavior is to just visit the child expressions first, and
|
|
615
|
+
then the node "computeExpression". For a few cases this needs to
|
|
616
|
+
be overloaded, e.g. conditional expressions.
|
|
617
|
+
"""
|
|
618
|
+
|
|
619
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
620
|
+
# the actual operation.
|
|
621
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
622
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
623
|
+
|
|
624
|
+
if expression.willRaiseAnyException():
|
|
625
|
+
sub_expressions = self.getVisitableNodes()
|
|
626
|
+
|
|
627
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
628
|
+
side_effects=sub_expressions[:count],
|
|
629
|
+
old_node=sub_expression,
|
|
630
|
+
new_node=expression,
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
return (
|
|
634
|
+
wrapped_expression,
|
|
635
|
+
"new_raise",
|
|
636
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
637
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
return self, None, None
|
|
641
|
+
|
|
642
|
+
@staticmethod
|
|
643
|
+
def mayRaiseExceptionOperation():
|
|
644
|
+
return False
|
|
645
|
+
|
|
646
|
+
def mayRaiseException(self, exception_type):
|
|
647
|
+
return (
|
|
648
|
+
any(value.mayRaiseException(exception_type) for value in self.subnode_args)
|
|
649
|
+
or (
|
|
650
|
+
self.subnode_name is not None
|
|
651
|
+
and self.subnode_name.mayRaiseException(exception_type)
|
|
652
|
+
)
|
|
653
|
+
or (
|
|
654
|
+
self.subnode_path is not None
|
|
655
|
+
and self.subnode_path.mayRaiseException(exception_type)
|
|
656
|
+
)
|
|
657
|
+
)
|
|
658
|
+
|
|
659
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
660
|
+
"""Collect variable reads and writes of child nodes."""
|
|
661
|
+
|
|
662
|
+
for element in self.subnode_args:
|
|
663
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
664
|
+
subnode_name = self.subnode_name
|
|
665
|
+
|
|
666
|
+
if subnode_name is not None:
|
|
667
|
+
self.subnode_name.collectVariableAccesses(emit_read, emit_write)
|
|
668
|
+
subnode_path = self.subnode_path
|
|
669
|
+
|
|
670
|
+
if subnode_path is not None:
|
|
671
|
+
self.subnode_path.collectVariableAccesses(emit_read, emit_write)
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
# Assign the names that are easier to import with a stable name.
|
|
675
|
+
ExpressionBuiltinMakeExceptionImportErrorBase = (
|
|
676
|
+
ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin
|
|
677
|
+
)
|
|
678
|
+
ExpressionBuiltinMakeExceptionModuleNotFoundErrorBase = (
|
|
679
|
+
ChildrenHavingArgsTupleNameOptionalPathOptionalFinalNoRaiseForRaiseMixin
|
|
680
|
+
)
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
class ChildrenHavingCallableArgSentinelFinalMixin(ExpressionBase):
|
|
684
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
685
|
+
__slots__ = ()
|
|
686
|
+
|
|
687
|
+
# This is generated for use in
|
|
688
|
+
# ExpressionBuiltinIter2
|
|
689
|
+
|
|
690
|
+
def __init__(self, callable_arg, sentinel, source_ref):
|
|
691
|
+
callable_arg.parent = self
|
|
692
|
+
|
|
693
|
+
self.subnode_callable_arg = callable_arg
|
|
694
|
+
|
|
695
|
+
sentinel.parent = self
|
|
696
|
+
|
|
697
|
+
self.subnode_sentinel = sentinel
|
|
698
|
+
|
|
699
|
+
ExpressionBase.__init__(self, source_ref)
|
|
700
|
+
|
|
701
|
+
def getVisitableNodes(self):
|
|
702
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
703
|
+
|
|
704
|
+
return (
|
|
705
|
+
self.subnode_callable_arg,
|
|
706
|
+
self.subnode_sentinel,
|
|
707
|
+
)
|
|
708
|
+
|
|
709
|
+
def getVisitableNodesNamed(self):
|
|
710
|
+
"""Named children dictionary.
|
|
711
|
+
|
|
712
|
+
For use in cloning nodes, debugging and XML output.
|
|
713
|
+
"""
|
|
714
|
+
|
|
715
|
+
return (
|
|
716
|
+
("callable_arg", self.subnode_callable_arg),
|
|
717
|
+
("sentinel", self.subnode_sentinel),
|
|
718
|
+
)
|
|
719
|
+
|
|
720
|
+
def replaceChild(self, old_node, new_node):
|
|
721
|
+
value = self.subnode_callable_arg
|
|
722
|
+
if old_node is value:
|
|
723
|
+
new_node.parent = self
|
|
724
|
+
|
|
725
|
+
self.subnode_callable_arg = new_node
|
|
726
|
+
|
|
727
|
+
return
|
|
728
|
+
|
|
729
|
+
value = self.subnode_sentinel
|
|
730
|
+
if old_node is value:
|
|
731
|
+
new_node.parent = self
|
|
732
|
+
|
|
733
|
+
self.subnode_sentinel = new_node
|
|
734
|
+
|
|
735
|
+
return
|
|
736
|
+
|
|
737
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
738
|
+
|
|
739
|
+
def getCloneArgs(self):
|
|
740
|
+
"""Get clones of all children to pass for a new node.
|
|
741
|
+
|
|
742
|
+
Needs to make clones of child nodes too.
|
|
743
|
+
"""
|
|
744
|
+
|
|
745
|
+
values = {
|
|
746
|
+
"callable_arg": self.subnode_callable_arg.makeClone(),
|
|
747
|
+
"sentinel": self.subnode_sentinel.makeClone(),
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
values.update(self.getDetails())
|
|
751
|
+
|
|
752
|
+
return values
|
|
753
|
+
|
|
754
|
+
def finalize(self):
|
|
755
|
+
del self.parent
|
|
756
|
+
|
|
757
|
+
self.subnode_callable_arg.finalize()
|
|
758
|
+
del self.subnode_callable_arg
|
|
759
|
+
self.subnode_sentinel.finalize()
|
|
760
|
+
del self.subnode_sentinel
|
|
761
|
+
|
|
762
|
+
def computeExpressionRaw(self, trace_collection):
|
|
763
|
+
"""Compute an expression.
|
|
764
|
+
|
|
765
|
+
Default behavior is to just visit the child expressions first, and
|
|
766
|
+
then the node "computeExpression". For a few cases this needs to
|
|
767
|
+
be overloaded, e.g. conditional expressions.
|
|
768
|
+
"""
|
|
769
|
+
|
|
770
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
771
|
+
# the actual operation.
|
|
772
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
773
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
774
|
+
|
|
775
|
+
if expression.willRaiseAnyException():
|
|
776
|
+
sub_expressions = self.getVisitableNodes()
|
|
777
|
+
|
|
778
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
779
|
+
side_effects=sub_expressions[:count],
|
|
780
|
+
old_node=sub_expression,
|
|
781
|
+
new_node=expression,
|
|
782
|
+
)
|
|
783
|
+
|
|
784
|
+
return (
|
|
785
|
+
wrapped_expression,
|
|
786
|
+
"new_raise",
|
|
787
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
788
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
792
|
+
return self, None, None
|
|
793
|
+
|
|
794
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
795
|
+
"""Collect variable reads and writes of child nodes."""
|
|
796
|
+
|
|
797
|
+
self.subnode_callable_arg.collectVariableAccesses(emit_read, emit_write)
|
|
798
|
+
self.subnode_sentinel.collectVariableAccesses(emit_read, emit_write)
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
# Assign the names that are easier to import with a stable name.
|
|
802
|
+
ExpressionBuiltinIter2Base = ChildrenHavingCallableArgSentinelFinalMixin
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
class ChildHavingDistributionNameFinalChildrenMixin(ExpressionBase):
|
|
806
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
807
|
+
__slots__ = ()
|
|
808
|
+
|
|
809
|
+
# This is generated for use in
|
|
810
|
+
# ExpressionImportlibMetadataBackportDistributionFailedCall
|
|
811
|
+
# ExpressionImportlibMetadataDistributionFailedCall
|
|
812
|
+
|
|
813
|
+
def __init__(self, distribution_name, source_ref):
|
|
814
|
+
distribution_name.parent = self
|
|
815
|
+
|
|
816
|
+
self.subnode_distribution_name = distribution_name
|
|
817
|
+
|
|
818
|
+
ExpressionBase.__init__(self, source_ref)
|
|
819
|
+
|
|
820
|
+
def getVisitableNodes(self):
|
|
821
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
822
|
+
|
|
823
|
+
return (self.subnode_distribution_name,)
|
|
824
|
+
|
|
825
|
+
def getVisitableNodesNamed(self):
|
|
826
|
+
"""Named children dictionary.
|
|
827
|
+
|
|
828
|
+
For use in cloning nodes, debugging and XML output.
|
|
829
|
+
"""
|
|
830
|
+
|
|
831
|
+
return (("distribution_name", self.subnode_distribution_name),)
|
|
832
|
+
|
|
833
|
+
def replaceChild(self, old_node, new_node):
|
|
834
|
+
value = self.subnode_distribution_name
|
|
835
|
+
if old_node is value:
|
|
836
|
+
new_node.parent = self
|
|
837
|
+
|
|
838
|
+
self.subnode_distribution_name = new_node
|
|
839
|
+
|
|
840
|
+
return
|
|
841
|
+
|
|
842
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
843
|
+
|
|
844
|
+
def getCloneArgs(self):
|
|
845
|
+
"""Get clones of all children to pass for a new node.
|
|
846
|
+
|
|
847
|
+
Needs to make clones of child nodes too.
|
|
848
|
+
"""
|
|
849
|
+
|
|
850
|
+
values = {
|
|
851
|
+
"distribution_name": self.subnode_distribution_name.makeClone(),
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
values.update(self.getDetails())
|
|
855
|
+
|
|
856
|
+
return values
|
|
857
|
+
|
|
858
|
+
def finalize(self):
|
|
859
|
+
del self.parent
|
|
860
|
+
|
|
861
|
+
self.subnode_distribution_name.finalize()
|
|
862
|
+
del self.subnode_distribution_name
|
|
863
|
+
|
|
864
|
+
def computeExpressionRaw(self, trace_collection):
|
|
865
|
+
"""Compute an expression.
|
|
866
|
+
|
|
867
|
+
Default behavior is to just visit the child expressions first, and
|
|
868
|
+
then the node "computeExpression". For a few cases this needs to
|
|
869
|
+
be overloaded, e.g. conditional expressions.
|
|
870
|
+
"""
|
|
871
|
+
|
|
872
|
+
# Then ask ourselves to work on it.
|
|
873
|
+
return self.computeExpression(trace_collection)
|
|
874
|
+
|
|
875
|
+
@abstractmethod
|
|
876
|
+
def computeExpression(self, trace_collection):
|
|
877
|
+
"""Must be overloaded for non-final node."""
|
|
878
|
+
|
|
879
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
880
|
+
"""Collect variable reads and writes of child nodes."""
|
|
881
|
+
|
|
882
|
+
self.subnode_distribution_name.collectVariableAccesses(emit_read, emit_write)
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
# Assign the names that are easier to import with a stable name.
|
|
886
|
+
ExpressionImportlibMetadataBackportDistributionFailedCallBase = (
|
|
887
|
+
ChildHavingDistributionNameFinalChildrenMixin
|
|
888
|
+
)
|
|
889
|
+
ExpressionImportlibMetadataDistributionFailedCallBase = (
|
|
890
|
+
ChildHavingDistributionNameFinalChildrenMixin
|
|
891
|
+
)
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
class ChildHavingElementsTupleFinalNoRaiseMixin(ExpressionBase):
|
|
895
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
896
|
+
__slots__ = ()
|
|
897
|
+
|
|
898
|
+
# This is generated for use in
|
|
899
|
+
# ExpressionImportlibMetadataBackportEntryPointsValueRef
|
|
900
|
+
# ExpressionImportlibMetadataEntryPointsValueRef
|
|
901
|
+
|
|
902
|
+
def __init__(self, elements, source_ref):
|
|
903
|
+
assert type(elements) is tuple
|
|
904
|
+
|
|
905
|
+
for val in elements:
|
|
906
|
+
val.parent = self
|
|
907
|
+
|
|
908
|
+
self.subnode_elements = elements
|
|
909
|
+
|
|
910
|
+
ExpressionBase.__init__(self, source_ref)
|
|
911
|
+
|
|
912
|
+
def getVisitableNodes(self):
|
|
913
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
914
|
+
|
|
915
|
+
return self.subnode_elements
|
|
916
|
+
|
|
917
|
+
def getVisitableNodesNamed(self):
|
|
918
|
+
"""Named children dictionary.
|
|
919
|
+
|
|
920
|
+
For use in cloning nodes, debugging and XML output.
|
|
921
|
+
"""
|
|
922
|
+
|
|
923
|
+
return (("elements", self.subnode_elements),)
|
|
924
|
+
|
|
925
|
+
def replaceChild(self, old_node, new_node):
|
|
926
|
+
value = self.subnode_elements
|
|
927
|
+
if old_node in value:
|
|
928
|
+
if new_node is not None:
|
|
929
|
+
new_node.parent = self
|
|
930
|
+
|
|
931
|
+
self.subnode_elements = tuple(
|
|
932
|
+
(val if val is not old_node else new_node) for val in value
|
|
933
|
+
)
|
|
934
|
+
else:
|
|
935
|
+
self.subnode_elements = tuple(
|
|
936
|
+
val for val in value if val is not old_node
|
|
937
|
+
)
|
|
938
|
+
|
|
939
|
+
return
|
|
940
|
+
|
|
941
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
942
|
+
|
|
943
|
+
def getCloneArgs(self):
|
|
944
|
+
"""Get clones of all children to pass for a new node.
|
|
945
|
+
|
|
946
|
+
Needs to make clones of child nodes too.
|
|
947
|
+
"""
|
|
948
|
+
|
|
949
|
+
values = {
|
|
950
|
+
"elements": tuple(v.makeClone() for v in self.subnode_elements),
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
values.update(self.getDetails())
|
|
954
|
+
|
|
955
|
+
return values
|
|
956
|
+
|
|
957
|
+
def finalize(self):
|
|
958
|
+
del self.parent
|
|
959
|
+
|
|
960
|
+
for c in self.subnode_elements:
|
|
961
|
+
c.finalize()
|
|
962
|
+
del self.subnode_elements
|
|
963
|
+
|
|
964
|
+
def computeExpressionRaw(self, trace_collection):
|
|
965
|
+
"""Compute an expression.
|
|
966
|
+
|
|
967
|
+
Default behavior is to just visit the child expressions first, and
|
|
968
|
+
then the node "computeExpression". For a few cases this needs to
|
|
969
|
+
be overloaded, e.g. conditional expressions.
|
|
970
|
+
"""
|
|
971
|
+
|
|
972
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
973
|
+
# the actual operation.
|
|
974
|
+
old_subnode_elements = self.subnode_elements
|
|
975
|
+
|
|
976
|
+
for sub_expression in old_subnode_elements:
|
|
977
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
978
|
+
|
|
979
|
+
if expression.willRaiseAnyException():
|
|
980
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
981
|
+
side_effects=self.subnode_elements[
|
|
982
|
+
: old_subnode_elements.index(sub_expression)
|
|
983
|
+
],
|
|
984
|
+
old_node=sub_expression,
|
|
985
|
+
new_node=expression,
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
return (
|
|
989
|
+
wrapped_expression,
|
|
990
|
+
"new_raise",
|
|
991
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
992
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
993
|
+
)
|
|
994
|
+
|
|
995
|
+
return self, None, None
|
|
996
|
+
|
|
997
|
+
@staticmethod
|
|
998
|
+
def mayRaiseExceptionOperation():
|
|
999
|
+
return False
|
|
1000
|
+
|
|
1001
|
+
def mayRaiseException(self, exception_type):
|
|
1002
|
+
return any(
|
|
1003
|
+
value.mayRaiseException(exception_type) for value in self.subnode_elements
|
|
1004
|
+
)
|
|
1005
|
+
|
|
1006
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1007
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1008
|
+
|
|
1009
|
+
for element in self.subnode_elements:
|
|
1010
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
# Assign the names that are easier to import with a stable name.
|
|
1014
|
+
ExpressionImportlibMetadataBackportEntryPointsValueRefBase = (
|
|
1015
|
+
ChildHavingElementsTupleFinalNoRaiseMixin
|
|
1016
|
+
)
|
|
1017
|
+
ExpressionImportlibMetadataEntryPointsValueRefBase = (
|
|
1018
|
+
ChildHavingElementsTupleFinalNoRaiseMixin
|
|
1019
|
+
)
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
class ChildHavingExpressionAttributeNameMixin(ExpressionBase):
|
|
1023
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1024
|
+
__slots__ = ()
|
|
1025
|
+
|
|
1026
|
+
# This is generated for use in
|
|
1027
|
+
# ExpressionAttributeLookup
|
|
1028
|
+
# ExpressionAttributeLookupSpecial
|
|
1029
|
+
|
|
1030
|
+
def __init__(self, expression, attribute_name, source_ref):
|
|
1031
|
+
expression.parent = self
|
|
1032
|
+
|
|
1033
|
+
self.subnode_expression = expression
|
|
1034
|
+
|
|
1035
|
+
self.attribute_name = attribute_name
|
|
1036
|
+
|
|
1037
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1038
|
+
|
|
1039
|
+
def getDetails(self):
|
|
1040
|
+
return {
|
|
1041
|
+
"attribute_name": self.attribute_name,
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
def getVisitableNodes(self):
|
|
1045
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1046
|
+
|
|
1047
|
+
return (self.subnode_expression,)
|
|
1048
|
+
|
|
1049
|
+
def getVisitableNodesNamed(self):
|
|
1050
|
+
"""Named children dictionary.
|
|
1051
|
+
|
|
1052
|
+
For use in cloning nodes, debugging and XML output.
|
|
1053
|
+
"""
|
|
1054
|
+
|
|
1055
|
+
return (("expression", self.subnode_expression),)
|
|
1056
|
+
|
|
1057
|
+
def replaceChild(self, old_node, new_node):
|
|
1058
|
+
value = self.subnode_expression
|
|
1059
|
+
if old_node is value:
|
|
1060
|
+
new_node.parent = self
|
|
1061
|
+
|
|
1062
|
+
self.subnode_expression = new_node
|
|
1063
|
+
|
|
1064
|
+
return
|
|
1065
|
+
|
|
1066
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1067
|
+
|
|
1068
|
+
def getCloneArgs(self):
|
|
1069
|
+
"""Get clones of all children to pass for a new node.
|
|
1070
|
+
|
|
1071
|
+
Needs to make clones of child nodes too.
|
|
1072
|
+
"""
|
|
1073
|
+
|
|
1074
|
+
values = {
|
|
1075
|
+
"expression": self.subnode_expression.makeClone(),
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
values.update(self.getDetails())
|
|
1079
|
+
|
|
1080
|
+
return values
|
|
1081
|
+
|
|
1082
|
+
def finalize(self):
|
|
1083
|
+
del self.parent
|
|
1084
|
+
|
|
1085
|
+
self.subnode_expression.finalize()
|
|
1086
|
+
del self.subnode_expression
|
|
1087
|
+
|
|
1088
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1089
|
+
"""Compute an expression.
|
|
1090
|
+
|
|
1091
|
+
Default behavior is to just visit the child expressions first, and
|
|
1092
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1093
|
+
be overloaded, e.g. conditional expressions.
|
|
1094
|
+
"""
|
|
1095
|
+
|
|
1096
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
1097
|
+
expression = trace_collection.onExpression(self.subnode_expression)
|
|
1098
|
+
|
|
1099
|
+
if expression.willRaiseAnyException():
|
|
1100
|
+
return (
|
|
1101
|
+
expression,
|
|
1102
|
+
"new_raise",
|
|
1103
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1104
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1105
|
+
)
|
|
1106
|
+
|
|
1107
|
+
# Then ask ourselves to work on it.
|
|
1108
|
+
return self.computeExpression(trace_collection)
|
|
1109
|
+
|
|
1110
|
+
@abstractmethod
|
|
1111
|
+
def computeExpression(self, trace_collection):
|
|
1112
|
+
"""Must be overloaded for non-final node."""
|
|
1113
|
+
|
|
1114
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1115
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1116
|
+
|
|
1117
|
+
self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
# Assign the names that are easier to import with a stable name.
|
|
1121
|
+
ExpressionAttributeLookupBase = ChildHavingExpressionAttributeNameMixin
|
|
1122
|
+
ExpressionAttributeLookupSpecialBase = ChildHavingExpressionAttributeNameMixin
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
class ChildrenHavingExpressionNameRaiseWaitConstantNameMixin(ExpressionBase):
|
|
1126
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1127
|
+
__slots__ = ()
|
|
1128
|
+
|
|
1129
|
+
# This is generated for use in
|
|
1130
|
+
# ExpressionBuiltinHasattr
|
|
1131
|
+
|
|
1132
|
+
def __init__(self, expression, name, source_ref):
|
|
1133
|
+
expression.parent = self
|
|
1134
|
+
|
|
1135
|
+
self.subnode_expression = expression
|
|
1136
|
+
|
|
1137
|
+
name.parent = self
|
|
1138
|
+
|
|
1139
|
+
self.subnode_name = name
|
|
1140
|
+
|
|
1141
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1142
|
+
|
|
1143
|
+
def getVisitableNodes(self):
|
|
1144
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1145
|
+
|
|
1146
|
+
return (
|
|
1147
|
+
self.subnode_expression,
|
|
1148
|
+
self.subnode_name,
|
|
1149
|
+
)
|
|
1150
|
+
|
|
1151
|
+
def getVisitableNodesNamed(self):
|
|
1152
|
+
"""Named children dictionary.
|
|
1153
|
+
|
|
1154
|
+
For use in cloning nodes, debugging and XML output.
|
|
1155
|
+
"""
|
|
1156
|
+
|
|
1157
|
+
return (
|
|
1158
|
+
("expression", self.subnode_expression),
|
|
1159
|
+
("name", self.subnode_name),
|
|
1160
|
+
)
|
|
1161
|
+
|
|
1162
|
+
def replaceChild(self, old_node, new_node):
|
|
1163
|
+
value = self.subnode_expression
|
|
1164
|
+
if old_node is value:
|
|
1165
|
+
new_node.parent = self
|
|
1166
|
+
|
|
1167
|
+
self.subnode_expression = new_node
|
|
1168
|
+
|
|
1169
|
+
return
|
|
1170
|
+
|
|
1171
|
+
value = self.subnode_name
|
|
1172
|
+
if old_node is value:
|
|
1173
|
+
new_node.parent = self
|
|
1174
|
+
|
|
1175
|
+
self.subnode_name = new_node
|
|
1176
|
+
|
|
1177
|
+
return
|
|
1178
|
+
|
|
1179
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1180
|
+
|
|
1181
|
+
def getCloneArgs(self):
|
|
1182
|
+
"""Get clones of all children to pass for a new node.
|
|
1183
|
+
|
|
1184
|
+
Needs to make clones of child nodes too.
|
|
1185
|
+
"""
|
|
1186
|
+
|
|
1187
|
+
values = {
|
|
1188
|
+
"expression": self.subnode_expression.makeClone(),
|
|
1189
|
+
"name": self.subnode_name.makeClone(),
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
values.update(self.getDetails())
|
|
1193
|
+
|
|
1194
|
+
return values
|
|
1195
|
+
|
|
1196
|
+
def finalize(self):
|
|
1197
|
+
del self.parent
|
|
1198
|
+
|
|
1199
|
+
self.subnode_expression.finalize()
|
|
1200
|
+
del self.subnode_expression
|
|
1201
|
+
self.subnode_name.finalize()
|
|
1202
|
+
del self.subnode_name
|
|
1203
|
+
|
|
1204
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1205
|
+
"""Compute an expression.
|
|
1206
|
+
|
|
1207
|
+
Default behavior is to just visit the child expressions first, and
|
|
1208
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1209
|
+
be overloaded, e.g. conditional expressions.
|
|
1210
|
+
"""
|
|
1211
|
+
|
|
1212
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
1213
|
+
# the actual operation.
|
|
1214
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
1215
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
1216
|
+
|
|
1217
|
+
if expression.willRaiseAnyException():
|
|
1218
|
+
sub_expressions = self.getVisitableNodes()
|
|
1219
|
+
|
|
1220
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
1221
|
+
side_effects=sub_expressions[:count],
|
|
1222
|
+
old_node=sub_expression,
|
|
1223
|
+
new_node=expression,
|
|
1224
|
+
)
|
|
1225
|
+
|
|
1226
|
+
return (
|
|
1227
|
+
wrapped_expression,
|
|
1228
|
+
"new_raise",
|
|
1229
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1230
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1231
|
+
)
|
|
1232
|
+
|
|
1233
|
+
if self.subnode_name.isCompileTimeConstant():
|
|
1234
|
+
try:
|
|
1235
|
+
return self.computeExpressionConstantName(trace_collection)
|
|
1236
|
+
finally:
|
|
1237
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1238
|
+
|
|
1239
|
+
# Then ask ourselves to work on it.
|
|
1240
|
+
return self.computeExpression(trace_collection)
|
|
1241
|
+
|
|
1242
|
+
@abstractmethod
|
|
1243
|
+
def computeExpression(self, trace_collection):
|
|
1244
|
+
"""Must be overloaded for non-final node."""
|
|
1245
|
+
|
|
1246
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1247
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1248
|
+
|
|
1249
|
+
self.subnode_expression.collectVariableAccesses(emit_read, emit_write)
|
|
1250
|
+
self.subnode_name.collectVariableAccesses(emit_read, emit_write)
|
|
1251
|
+
|
|
1252
|
+
@abstractmethod
|
|
1253
|
+
def computeExpressionConstantName(self, trace_collection):
|
|
1254
|
+
"""Called when attribute name is constant."""
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
# Assign the names that are easier to import with a stable name.
|
|
1258
|
+
ExpressionBuiltinHasattrBase = ChildrenHavingExpressionNameRaiseWaitConstantNameMixin
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
class ChildrenHavingLeftRightFinalNoRaiseMixin(ExpressionBase):
|
|
1262
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1263
|
+
__slots__ = ()
|
|
1264
|
+
|
|
1265
|
+
# This is generated for use in
|
|
1266
|
+
# ExpressionSubtypeCheck
|
|
1267
|
+
|
|
1268
|
+
def __init__(self, left, right, source_ref):
|
|
1269
|
+
left.parent = self
|
|
1270
|
+
|
|
1271
|
+
self.subnode_left = left
|
|
1272
|
+
|
|
1273
|
+
right.parent = self
|
|
1274
|
+
|
|
1275
|
+
self.subnode_right = right
|
|
1276
|
+
|
|
1277
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1278
|
+
|
|
1279
|
+
def getVisitableNodes(self):
|
|
1280
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1281
|
+
|
|
1282
|
+
return (
|
|
1283
|
+
self.subnode_left,
|
|
1284
|
+
self.subnode_right,
|
|
1285
|
+
)
|
|
1286
|
+
|
|
1287
|
+
def getVisitableNodesNamed(self):
|
|
1288
|
+
"""Named children dictionary.
|
|
1289
|
+
|
|
1290
|
+
For use in cloning nodes, debugging and XML output.
|
|
1291
|
+
"""
|
|
1292
|
+
|
|
1293
|
+
return (
|
|
1294
|
+
("left", self.subnode_left),
|
|
1295
|
+
("right", self.subnode_right),
|
|
1296
|
+
)
|
|
1297
|
+
|
|
1298
|
+
def replaceChild(self, old_node, new_node):
|
|
1299
|
+
value = self.subnode_left
|
|
1300
|
+
if old_node is value:
|
|
1301
|
+
new_node.parent = self
|
|
1302
|
+
|
|
1303
|
+
self.subnode_left = new_node
|
|
1304
|
+
|
|
1305
|
+
return
|
|
1306
|
+
|
|
1307
|
+
value = self.subnode_right
|
|
1308
|
+
if old_node is value:
|
|
1309
|
+
new_node.parent = self
|
|
1310
|
+
|
|
1311
|
+
self.subnode_right = new_node
|
|
1312
|
+
|
|
1313
|
+
return
|
|
1314
|
+
|
|
1315
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1316
|
+
|
|
1317
|
+
def getCloneArgs(self):
|
|
1318
|
+
"""Get clones of all children to pass for a new node.
|
|
1319
|
+
|
|
1320
|
+
Needs to make clones of child nodes too.
|
|
1321
|
+
"""
|
|
1322
|
+
|
|
1323
|
+
values = {
|
|
1324
|
+
"left": self.subnode_left.makeClone(),
|
|
1325
|
+
"right": self.subnode_right.makeClone(),
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
values.update(self.getDetails())
|
|
1329
|
+
|
|
1330
|
+
return values
|
|
1331
|
+
|
|
1332
|
+
def finalize(self):
|
|
1333
|
+
del self.parent
|
|
1334
|
+
|
|
1335
|
+
self.subnode_left.finalize()
|
|
1336
|
+
del self.subnode_left
|
|
1337
|
+
self.subnode_right.finalize()
|
|
1338
|
+
del self.subnode_right
|
|
1339
|
+
|
|
1340
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1341
|
+
"""Compute an expression.
|
|
1342
|
+
|
|
1343
|
+
Default behavior is to just visit the child expressions first, and
|
|
1344
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1345
|
+
be overloaded, e.g. conditional expressions.
|
|
1346
|
+
"""
|
|
1347
|
+
|
|
1348
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
1349
|
+
# the actual operation.
|
|
1350
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
1351
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
1352
|
+
|
|
1353
|
+
if expression.willRaiseAnyException():
|
|
1354
|
+
sub_expressions = self.getVisitableNodes()
|
|
1355
|
+
|
|
1356
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
1357
|
+
side_effects=sub_expressions[:count],
|
|
1358
|
+
old_node=sub_expression,
|
|
1359
|
+
new_node=expression,
|
|
1360
|
+
)
|
|
1361
|
+
|
|
1362
|
+
return (
|
|
1363
|
+
wrapped_expression,
|
|
1364
|
+
"new_raise",
|
|
1365
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1366
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1367
|
+
)
|
|
1368
|
+
|
|
1369
|
+
return self, None, None
|
|
1370
|
+
|
|
1371
|
+
@staticmethod
|
|
1372
|
+
def mayRaiseExceptionOperation():
|
|
1373
|
+
return False
|
|
1374
|
+
|
|
1375
|
+
def mayRaiseException(self, exception_type):
|
|
1376
|
+
return self.subnode_left.mayRaiseException(
|
|
1377
|
+
exception_type
|
|
1378
|
+
) or self.subnode_right.mayRaiseException(exception_type)
|
|
1379
|
+
|
|
1380
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1381
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1382
|
+
|
|
1383
|
+
self.subnode_left.collectVariableAccesses(emit_read, emit_write)
|
|
1384
|
+
self.subnode_right.collectVariableAccesses(emit_read, emit_write)
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
# Assign the names that are easier to import with a stable name.
|
|
1388
|
+
ExpressionSubtypeCheckBase = ChildrenHavingLeftRightFinalNoRaiseMixin
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
class ChildHavingListArgNoRaiseMixin(ExpressionBase):
|
|
1392
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1393
|
+
__slots__ = ()
|
|
1394
|
+
|
|
1395
|
+
# This is generated for use in
|
|
1396
|
+
# ExpressionListOperationClear
|
|
1397
|
+
# ExpressionListOperationReverse
|
|
1398
|
+
|
|
1399
|
+
def __init__(self, list_arg, source_ref):
|
|
1400
|
+
list_arg.parent = self
|
|
1401
|
+
|
|
1402
|
+
self.subnode_list_arg = list_arg
|
|
1403
|
+
|
|
1404
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1405
|
+
|
|
1406
|
+
def getVisitableNodes(self):
|
|
1407
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1408
|
+
|
|
1409
|
+
return (self.subnode_list_arg,)
|
|
1410
|
+
|
|
1411
|
+
def getVisitableNodesNamed(self):
|
|
1412
|
+
"""Named children dictionary.
|
|
1413
|
+
|
|
1414
|
+
For use in cloning nodes, debugging and XML output.
|
|
1415
|
+
"""
|
|
1416
|
+
|
|
1417
|
+
return (("list_arg", self.subnode_list_arg),)
|
|
1418
|
+
|
|
1419
|
+
def replaceChild(self, old_node, new_node):
|
|
1420
|
+
value = self.subnode_list_arg
|
|
1421
|
+
if old_node is value:
|
|
1422
|
+
new_node.parent = self
|
|
1423
|
+
|
|
1424
|
+
self.subnode_list_arg = new_node
|
|
1425
|
+
|
|
1426
|
+
return
|
|
1427
|
+
|
|
1428
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1429
|
+
|
|
1430
|
+
def getCloneArgs(self):
|
|
1431
|
+
"""Get clones of all children to pass for a new node.
|
|
1432
|
+
|
|
1433
|
+
Needs to make clones of child nodes too.
|
|
1434
|
+
"""
|
|
1435
|
+
|
|
1436
|
+
values = {
|
|
1437
|
+
"list_arg": self.subnode_list_arg.makeClone(),
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
values.update(self.getDetails())
|
|
1441
|
+
|
|
1442
|
+
return values
|
|
1443
|
+
|
|
1444
|
+
def finalize(self):
|
|
1445
|
+
del self.parent
|
|
1446
|
+
|
|
1447
|
+
self.subnode_list_arg.finalize()
|
|
1448
|
+
del self.subnode_list_arg
|
|
1449
|
+
|
|
1450
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1451
|
+
"""Compute an expression.
|
|
1452
|
+
|
|
1453
|
+
Default behavior is to just visit the child expressions first, and
|
|
1454
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1455
|
+
be overloaded, e.g. conditional expressions.
|
|
1456
|
+
"""
|
|
1457
|
+
|
|
1458
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
1459
|
+
expression = trace_collection.onExpression(self.subnode_list_arg)
|
|
1460
|
+
|
|
1461
|
+
if expression.willRaiseAnyException():
|
|
1462
|
+
return (
|
|
1463
|
+
expression,
|
|
1464
|
+
"new_raise",
|
|
1465
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1466
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1467
|
+
)
|
|
1468
|
+
|
|
1469
|
+
# Then ask ourselves to work on it.
|
|
1470
|
+
return self.computeExpression(trace_collection)
|
|
1471
|
+
|
|
1472
|
+
@staticmethod
|
|
1473
|
+
def mayRaiseExceptionOperation():
|
|
1474
|
+
return False
|
|
1475
|
+
|
|
1476
|
+
def mayRaiseException(self, exception_type):
|
|
1477
|
+
return self.subnode_list_arg.mayRaiseException(exception_type)
|
|
1478
|
+
|
|
1479
|
+
@abstractmethod
|
|
1480
|
+
def computeExpression(self, trace_collection):
|
|
1481
|
+
"""Must be overloaded for non-final node."""
|
|
1482
|
+
|
|
1483
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1484
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1485
|
+
|
|
1486
|
+
self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
# Assign the names that are easier to import with a stable name.
|
|
1490
|
+
ExpressionListOperationClearBase = ChildHavingListArgNoRaiseMixin
|
|
1491
|
+
ExpressionListOperationReverseBase = ChildHavingListArgNoRaiseMixin
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
class ChildrenHavingListArgItemNoRaiseMixin(ExpressionBase):
|
|
1495
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1496
|
+
__slots__ = ()
|
|
1497
|
+
|
|
1498
|
+
# This is generated for use in
|
|
1499
|
+
# ExpressionListOperationAppend
|
|
1500
|
+
|
|
1501
|
+
def __init__(self, list_arg, item, source_ref):
|
|
1502
|
+
list_arg.parent = self
|
|
1503
|
+
|
|
1504
|
+
self.subnode_list_arg = list_arg
|
|
1505
|
+
|
|
1506
|
+
item.parent = self
|
|
1507
|
+
|
|
1508
|
+
self.subnode_item = item
|
|
1509
|
+
|
|
1510
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1511
|
+
|
|
1512
|
+
def getVisitableNodes(self):
|
|
1513
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1514
|
+
|
|
1515
|
+
return (
|
|
1516
|
+
self.subnode_list_arg,
|
|
1517
|
+
self.subnode_item,
|
|
1518
|
+
)
|
|
1519
|
+
|
|
1520
|
+
def getVisitableNodesNamed(self):
|
|
1521
|
+
"""Named children dictionary.
|
|
1522
|
+
|
|
1523
|
+
For use in cloning nodes, debugging and XML output.
|
|
1524
|
+
"""
|
|
1525
|
+
|
|
1526
|
+
return (
|
|
1527
|
+
("list_arg", self.subnode_list_arg),
|
|
1528
|
+
("item", self.subnode_item),
|
|
1529
|
+
)
|
|
1530
|
+
|
|
1531
|
+
def replaceChild(self, old_node, new_node):
|
|
1532
|
+
value = self.subnode_list_arg
|
|
1533
|
+
if old_node is value:
|
|
1534
|
+
new_node.parent = self
|
|
1535
|
+
|
|
1536
|
+
self.subnode_list_arg = new_node
|
|
1537
|
+
|
|
1538
|
+
return
|
|
1539
|
+
|
|
1540
|
+
value = self.subnode_item
|
|
1541
|
+
if old_node is value:
|
|
1542
|
+
new_node.parent = self
|
|
1543
|
+
|
|
1544
|
+
self.subnode_item = new_node
|
|
1545
|
+
|
|
1546
|
+
return
|
|
1547
|
+
|
|
1548
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1549
|
+
|
|
1550
|
+
def getCloneArgs(self):
|
|
1551
|
+
"""Get clones of all children to pass for a new node.
|
|
1552
|
+
|
|
1553
|
+
Needs to make clones of child nodes too.
|
|
1554
|
+
"""
|
|
1555
|
+
|
|
1556
|
+
values = {
|
|
1557
|
+
"list_arg": self.subnode_list_arg.makeClone(),
|
|
1558
|
+
"item": self.subnode_item.makeClone(),
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
values.update(self.getDetails())
|
|
1562
|
+
|
|
1563
|
+
return values
|
|
1564
|
+
|
|
1565
|
+
def finalize(self):
|
|
1566
|
+
del self.parent
|
|
1567
|
+
|
|
1568
|
+
self.subnode_list_arg.finalize()
|
|
1569
|
+
del self.subnode_list_arg
|
|
1570
|
+
self.subnode_item.finalize()
|
|
1571
|
+
del self.subnode_item
|
|
1572
|
+
|
|
1573
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1574
|
+
"""Compute an expression.
|
|
1575
|
+
|
|
1576
|
+
Default behavior is to just visit the child expressions first, and
|
|
1577
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1578
|
+
be overloaded, e.g. conditional expressions.
|
|
1579
|
+
"""
|
|
1580
|
+
|
|
1581
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
1582
|
+
# the actual operation.
|
|
1583
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
1584
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
1585
|
+
|
|
1586
|
+
if expression.willRaiseAnyException():
|
|
1587
|
+
sub_expressions = self.getVisitableNodes()
|
|
1588
|
+
|
|
1589
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
1590
|
+
side_effects=sub_expressions[:count],
|
|
1591
|
+
old_node=sub_expression,
|
|
1592
|
+
new_node=expression,
|
|
1593
|
+
)
|
|
1594
|
+
|
|
1595
|
+
return (
|
|
1596
|
+
wrapped_expression,
|
|
1597
|
+
"new_raise",
|
|
1598
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1599
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1600
|
+
)
|
|
1601
|
+
|
|
1602
|
+
# Then ask ourselves to work on it.
|
|
1603
|
+
return self.computeExpression(trace_collection)
|
|
1604
|
+
|
|
1605
|
+
@staticmethod
|
|
1606
|
+
def mayRaiseExceptionOperation():
|
|
1607
|
+
return False
|
|
1608
|
+
|
|
1609
|
+
def mayRaiseException(self, exception_type):
|
|
1610
|
+
return self.subnode_list_arg.mayRaiseException(
|
|
1611
|
+
exception_type
|
|
1612
|
+
) or self.subnode_item.mayRaiseException(exception_type)
|
|
1613
|
+
|
|
1614
|
+
@abstractmethod
|
|
1615
|
+
def computeExpression(self, trace_collection):
|
|
1616
|
+
"""Must be overloaded for non-final node."""
|
|
1617
|
+
|
|
1618
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1619
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1620
|
+
|
|
1621
|
+
self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
|
|
1622
|
+
self.subnode_item.collectVariableAccesses(emit_read, emit_write)
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
# Assign the names that are easier to import with a stable name.
|
|
1626
|
+
ExpressionListOperationAppendBase = ChildrenHavingListArgItemNoRaiseMixin
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
class ChildrenHavingListArgValueFinalNoRaiseMixin(ExpressionBase):
|
|
1630
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1631
|
+
__slots__ = ()
|
|
1632
|
+
|
|
1633
|
+
# This is generated for use in
|
|
1634
|
+
# ExpressionListOperationCount
|
|
1635
|
+
|
|
1636
|
+
def __init__(self, list_arg, value, source_ref):
|
|
1637
|
+
list_arg.parent = self
|
|
1638
|
+
|
|
1639
|
+
self.subnode_list_arg = list_arg
|
|
1640
|
+
|
|
1641
|
+
value.parent = self
|
|
1642
|
+
|
|
1643
|
+
self.subnode_value = value
|
|
1644
|
+
|
|
1645
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1646
|
+
|
|
1647
|
+
def getVisitableNodes(self):
|
|
1648
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1649
|
+
|
|
1650
|
+
return (
|
|
1651
|
+
self.subnode_list_arg,
|
|
1652
|
+
self.subnode_value,
|
|
1653
|
+
)
|
|
1654
|
+
|
|
1655
|
+
def getVisitableNodesNamed(self):
|
|
1656
|
+
"""Named children dictionary.
|
|
1657
|
+
|
|
1658
|
+
For use in cloning nodes, debugging and XML output.
|
|
1659
|
+
"""
|
|
1660
|
+
|
|
1661
|
+
return (
|
|
1662
|
+
("list_arg", self.subnode_list_arg),
|
|
1663
|
+
("value", self.subnode_value),
|
|
1664
|
+
)
|
|
1665
|
+
|
|
1666
|
+
def replaceChild(self, old_node, new_node):
|
|
1667
|
+
value = self.subnode_list_arg
|
|
1668
|
+
if old_node is value:
|
|
1669
|
+
new_node.parent = self
|
|
1670
|
+
|
|
1671
|
+
self.subnode_list_arg = new_node
|
|
1672
|
+
|
|
1673
|
+
return
|
|
1674
|
+
|
|
1675
|
+
value = self.subnode_value
|
|
1676
|
+
if old_node is value:
|
|
1677
|
+
new_node.parent = self
|
|
1678
|
+
|
|
1679
|
+
self.subnode_value = new_node
|
|
1680
|
+
|
|
1681
|
+
return
|
|
1682
|
+
|
|
1683
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1684
|
+
|
|
1685
|
+
def getCloneArgs(self):
|
|
1686
|
+
"""Get clones of all children to pass for a new node.
|
|
1687
|
+
|
|
1688
|
+
Needs to make clones of child nodes too.
|
|
1689
|
+
"""
|
|
1690
|
+
|
|
1691
|
+
values = {
|
|
1692
|
+
"list_arg": self.subnode_list_arg.makeClone(),
|
|
1693
|
+
"value": self.subnode_value.makeClone(),
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
values.update(self.getDetails())
|
|
1697
|
+
|
|
1698
|
+
return values
|
|
1699
|
+
|
|
1700
|
+
def finalize(self):
|
|
1701
|
+
del self.parent
|
|
1702
|
+
|
|
1703
|
+
self.subnode_list_arg.finalize()
|
|
1704
|
+
del self.subnode_list_arg
|
|
1705
|
+
self.subnode_value.finalize()
|
|
1706
|
+
del self.subnode_value
|
|
1707
|
+
|
|
1708
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1709
|
+
"""Compute an expression.
|
|
1710
|
+
|
|
1711
|
+
Default behavior is to just visit the child expressions first, and
|
|
1712
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1713
|
+
be overloaded, e.g. conditional expressions.
|
|
1714
|
+
"""
|
|
1715
|
+
|
|
1716
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
1717
|
+
# the actual operation.
|
|
1718
|
+
for count, sub_expression in enumerate(self.getVisitableNodes()):
|
|
1719
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
1720
|
+
|
|
1721
|
+
if expression.willRaiseAnyException():
|
|
1722
|
+
sub_expressions = self.getVisitableNodes()
|
|
1723
|
+
|
|
1724
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
1725
|
+
side_effects=sub_expressions[:count],
|
|
1726
|
+
old_node=sub_expression,
|
|
1727
|
+
new_node=expression,
|
|
1728
|
+
)
|
|
1729
|
+
|
|
1730
|
+
return (
|
|
1731
|
+
wrapped_expression,
|
|
1732
|
+
"new_raise",
|
|
1733
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1734
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1735
|
+
)
|
|
1736
|
+
|
|
1737
|
+
return self, None, None
|
|
1738
|
+
|
|
1739
|
+
@staticmethod
|
|
1740
|
+
def mayRaiseExceptionOperation():
|
|
1741
|
+
return False
|
|
1742
|
+
|
|
1743
|
+
def mayRaiseException(self, exception_type):
|
|
1744
|
+
return self.subnode_list_arg.mayRaiseException(
|
|
1745
|
+
exception_type
|
|
1746
|
+
) or self.subnode_value.mayRaiseException(exception_type)
|
|
1747
|
+
|
|
1748
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1749
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1750
|
+
|
|
1751
|
+
self.subnode_list_arg.collectVariableAccesses(emit_read, emit_write)
|
|
1752
|
+
self.subnode_value.collectVariableAccesses(emit_read, emit_write)
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
# Assign the names that are easier to import with a stable name.
|
|
1756
|
+
ExpressionListOperationCountBase = ChildrenHavingListArgValueFinalNoRaiseMixin
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
class ChildHavingPairsTupleFinalNoRaiseMixin(ExpressionBase):
|
|
1760
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1761
|
+
__slots__ = ()
|
|
1762
|
+
|
|
1763
|
+
# This is generated for use in
|
|
1764
|
+
# ExpressionImportlibMetadataBackportSelectableGroupsValueRef
|
|
1765
|
+
# ExpressionImportlibMetadataSelectableGroupsValueRef
|
|
1766
|
+
|
|
1767
|
+
def __init__(self, pairs, source_ref):
|
|
1768
|
+
assert type(pairs) is tuple
|
|
1769
|
+
|
|
1770
|
+
for val in pairs:
|
|
1771
|
+
val.parent = self
|
|
1772
|
+
|
|
1773
|
+
self.subnode_pairs = pairs
|
|
1774
|
+
|
|
1775
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1776
|
+
|
|
1777
|
+
def getVisitableNodes(self):
|
|
1778
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1779
|
+
|
|
1780
|
+
return self.subnode_pairs
|
|
1781
|
+
|
|
1782
|
+
def getVisitableNodesNamed(self):
|
|
1783
|
+
"""Named children dictionary.
|
|
1784
|
+
|
|
1785
|
+
For use in cloning nodes, debugging and XML output.
|
|
1786
|
+
"""
|
|
1787
|
+
|
|
1788
|
+
return (("pairs", self.subnode_pairs),)
|
|
1789
|
+
|
|
1790
|
+
def replaceChild(self, old_node, new_node):
|
|
1791
|
+
value = self.subnode_pairs
|
|
1792
|
+
if old_node in value:
|
|
1793
|
+
if new_node is not None:
|
|
1794
|
+
new_node.parent = self
|
|
1795
|
+
|
|
1796
|
+
self.subnode_pairs = tuple(
|
|
1797
|
+
(val if val is not old_node else new_node) for val in value
|
|
1798
|
+
)
|
|
1799
|
+
else:
|
|
1800
|
+
self.subnode_pairs = tuple(val for val in value if val is not old_node)
|
|
1801
|
+
|
|
1802
|
+
return
|
|
1803
|
+
|
|
1804
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1805
|
+
|
|
1806
|
+
def getCloneArgs(self):
|
|
1807
|
+
"""Get clones of all children to pass for a new node.
|
|
1808
|
+
|
|
1809
|
+
Needs to make clones of child nodes too.
|
|
1810
|
+
"""
|
|
1811
|
+
|
|
1812
|
+
values = {
|
|
1813
|
+
"pairs": tuple(v.makeClone() for v in self.subnode_pairs),
|
|
1814
|
+
}
|
|
1815
|
+
|
|
1816
|
+
values.update(self.getDetails())
|
|
1817
|
+
|
|
1818
|
+
return values
|
|
1819
|
+
|
|
1820
|
+
def finalize(self):
|
|
1821
|
+
del self.parent
|
|
1822
|
+
|
|
1823
|
+
for c in self.subnode_pairs:
|
|
1824
|
+
c.finalize()
|
|
1825
|
+
del self.subnode_pairs
|
|
1826
|
+
|
|
1827
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1828
|
+
"""Compute an expression.
|
|
1829
|
+
|
|
1830
|
+
Default behavior is to just visit the child expressions first, and
|
|
1831
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1832
|
+
be overloaded, e.g. conditional expressions.
|
|
1833
|
+
"""
|
|
1834
|
+
|
|
1835
|
+
# First apply the sub-expressions, as they are evaluated before
|
|
1836
|
+
# the actual operation.
|
|
1837
|
+
old_subnode_pairs = self.subnode_pairs
|
|
1838
|
+
|
|
1839
|
+
for sub_expression in old_subnode_pairs:
|
|
1840
|
+
expression = trace_collection.onExpression(sub_expression)
|
|
1841
|
+
|
|
1842
|
+
if expression.willRaiseAnyException():
|
|
1843
|
+
wrapped_expression = wrapExpressionWithSideEffects(
|
|
1844
|
+
side_effects=self.subnode_pairs[
|
|
1845
|
+
: old_subnode_pairs.index(sub_expression)
|
|
1846
|
+
],
|
|
1847
|
+
old_node=sub_expression,
|
|
1848
|
+
new_node=expression,
|
|
1849
|
+
)
|
|
1850
|
+
|
|
1851
|
+
return (
|
|
1852
|
+
wrapped_expression,
|
|
1853
|
+
"new_raise",
|
|
1854
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1855
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1856
|
+
)
|
|
1857
|
+
|
|
1858
|
+
return self, None, None
|
|
1859
|
+
|
|
1860
|
+
@staticmethod
|
|
1861
|
+
def mayRaiseExceptionOperation():
|
|
1862
|
+
return False
|
|
1863
|
+
|
|
1864
|
+
def mayRaiseException(self, exception_type):
|
|
1865
|
+
return any(
|
|
1866
|
+
value.mayRaiseException(exception_type) for value in self.subnode_pairs
|
|
1867
|
+
)
|
|
1868
|
+
|
|
1869
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1870
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1871
|
+
|
|
1872
|
+
for element in self.subnode_pairs:
|
|
1873
|
+
element.collectVariableAccesses(emit_read, emit_write)
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
# Assign the names that are easier to import with a stable name.
|
|
1877
|
+
ExpressionImportlibMetadataBackportSelectableGroupsValueRefBase = (
|
|
1878
|
+
ChildHavingPairsTupleFinalNoRaiseMixin
|
|
1879
|
+
)
|
|
1880
|
+
ExpressionImportlibMetadataSelectableGroupsValueRefBase = (
|
|
1881
|
+
ChildHavingPairsTupleFinalNoRaiseMixin
|
|
1882
|
+
)
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
class ChildHavingPromptOptionalFinalMixin(ExpressionBase):
|
|
1886
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1887
|
+
__slots__ = ()
|
|
1888
|
+
|
|
1889
|
+
# This is generated for use in
|
|
1890
|
+
# ExpressionBuiltinInput
|
|
1891
|
+
|
|
1892
|
+
def __init__(self, prompt, source_ref):
|
|
1893
|
+
if prompt is not None:
|
|
1894
|
+
prompt.parent = self
|
|
1895
|
+
|
|
1896
|
+
self.subnode_prompt = prompt
|
|
1897
|
+
|
|
1898
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1899
|
+
|
|
1900
|
+
def getVisitableNodes(self):
|
|
1901
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
1902
|
+
|
|
1903
|
+
value = self.subnode_prompt
|
|
1904
|
+
|
|
1905
|
+
if value is None:
|
|
1906
|
+
return ()
|
|
1907
|
+
else:
|
|
1908
|
+
return (value,)
|
|
1909
|
+
|
|
1910
|
+
def getVisitableNodesNamed(self):
|
|
1911
|
+
"""Named children dictionary.
|
|
1912
|
+
|
|
1913
|
+
For use in cloning nodes, debugging and XML output.
|
|
1914
|
+
"""
|
|
1915
|
+
|
|
1916
|
+
return (("prompt", self.subnode_prompt),)
|
|
1917
|
+
|
|
1918
|
+
def replaceChild(self, old_node, new_node):
|
|
1919
|
+
value = self.subnode_prompt
|
|
1920
|
+
if old_node is value:
|
|
1921
|
+
if new_node is not None:
|
|
1922
|
+
new_node.parent = self
|
|
1923
|
+
|
|
1924
|
+
self.subnode_prompt = new_node
|
|
1925
|
+
|
|
1926
|
+
return
|
|
1927
|
+
|
|
1928
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
1929
|
+
|
|
1930
|
+
def getCloneArgs(self):
|
|
1931
|
+
"""Get clones of all children to pass for a new node.
|
|
1932
|
+
|
|
1933
|
+
Needs to make clones of child nodes too.
|
|
1934
|
+
"""
|
|
1935
|
+
|
|
1936
|
+
values = {
|
|
1937
|
+
"prompt": (
|
|
1938
|
+
self.subnode_prompt.makeClone()
|
|
1939
|
+
if self.subnode_prompt is not None
|
|
1940
|
+
else None
|
|
1941
|
+
),
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
values.update(self.getDetails())
|
|
1945
|
+
|
|
1946
|
+
return values
|
|
1947
|
+
|
|
1948
|
+
def finalize(self):
|
|
1949
|
+
del self.parent
|
|
1950
|
+
|
|
1951
|
+
if self.subnode_prompt is not None:
|
|
1952
|
+
self.subnode_prompt.finalize()
|
|
1953
|
+
del self.subnode_prompt
|
|
1954
|
+
|
|
1955
|
+
def computeExpressionRaw(self, trace_collection):
|
|
1956
|
+
"""Compute an expression.
|
|
1957
|
+
|
|
1958
|
+
Default behavior is to just visit the child expressions first, and
|
|
1959
|
+
then the node "computeExpression". For a few cases this needs to
|
|
1960
|
+
be overloaded, e.g. conditional expressions.
|
|
1961
|
+
"""
|
|
1962
|
+
|
|
1963
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
1964
|
+
expression = self.subnode_prompt
|
|
1965
|
+
|
|
1966
|
+
if expression is not None:
|
|
1967
|
+
expression = trace_collection.onExpression(expression)
|
|
1968
|
+
|
|
1969
|
+
if expression.willRaiseAnyException():
|
|
1970
|
+
return (
|
|
1971
|
+
expression,
|
|
1972
|
+
"new_raise",
|
|
1973
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
1974
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
1975
|
+
)
|
|
1976
|
+
|
|
1977
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1978
|
+
return self, None, None
|
|
1979
|
+
|
|
1980
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
1981
|
+
"""Collect variable reads and writes of child nodes."""
|
|
1982
|
+
|
|
1983
|
+
subnode_prompt = self.subnode_prompt
|
|
1984
|
+
|
|
1985
|
+
if subnode_prompt is not None:
|
|
1986
|
+
self.subnode_prompt.collectVariableAccesses(emit_read, emit_write)
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
# Assign the names that are easier to import with a stable name.
|
|
1990
|
+
ExpressionBuiltinInputBase = ChildHavingPromptOptionalFinalMixin
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
class ChildHavingValueFinalNoRaiseMixin(ExpressionBase):
|
|
1994
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
1995
|
+
__slots__ = ()
|
|
1996
|
+
|
|
1997
|
+
# This is generated for use in
|
|
1998
|
+
# ExpressionBuiltinClassmethod
|
|
1999
|
+
# ExpressionBuiltinStaticmethod
|
|
2000
|
+
|
|
2001
|
+
def __init__(self, value, source_ref):
|
|
2002
|
+
value.parent = self
|
|
2003
|
+
|
|
2004
|
+
self.subnode_value = value
|
|
2005
|
+
|
|
2006
|
+
ExpressionBase.__init__(self, source_ref)
|
|
2007
|
+
|
|
2008
|
+
def getVisitableNodes(self):
|
|
2009
|
+
"""The visitable nodes, with tuple values flattened."""
|
|
2010
|
+
|
|
2011
|
+
return (self.subnode_value,)
|
|
2012
|
+
|
|
2013
|
+
def getVisitableNodesNamed(self):
|
|
2014
|
+
"""Named children dictionary.
|
|
2015
|
+
|
|
2016
|
+
For use in cloning nodes, debugging and XML output.
|
|
2017
|
+
"""
|
|
2018
|
+
|
|
2019
|
+
return (("value", self.subnode_value),)
|
|
2020
|
+
|
|
2021
|
+
def replaceChild(self, old_node, new_node):
|
|
2022
|
+
value = self.subnode_value
|
|
2023
|
+
if old_node is value:
|
|
2024
|
+
new_node.parent = self
|
|
2025
|
+
|
|
2026
|
+
self.subnode_value = new_node
|
|
2027
|
+
|
|
2028
|
+
return
|
|
2029
|
+
|
|
2030
|
+
raise AssertionError("Didn't find child", old_node, "in", self)
|
|
2031
|
+
|
|
2032
|
+
def getCloneArgs(self):
|
|
2033
|
+
"""Get clones of all children to pass for a new node.
|
|
2034
|
+
|
|
2035
|
+
Needs to make clones of child nodes too.
|
|
2036
|
+
"""
|
|
2037
|
+
|
|
2038
|
+
values = {
|
|
2039
|
+
"value": self.subnode_value.makeClone(),
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
values.update(self.getDetails())
|
|
2043
|
+
|
|
2044
|
+
return values
|
|
2045
|
+
|
|
2046
|
+
def finalize(self):
|
|
2047
|
+
del self.parent
|
|
2048
|
+
|
|
2049
|
+
self.subnode_value.finalize()
|
|
2050
|
+
del self.subnode_value
|
|
2051
|
+
|
|
2052
|
+
def computeExpressionRaw(self, trace_collection):
|
|
2053
|
+
"""Compute an expression.
|
|
2054
|
+
|
|
2055
|
+
Default behavior is to just visit the child expressions first, and
|
|
2056
|
+
then the node "computeExpression". For a few cases this needs to
|
|
2057
|
+
be overloaded, e.g. conditional expressions.
|
|
2058
|
+
"""
|
|
2059
|
+
|
|
2060
|
+
# First apply the sub-expression, as they it's evaluated before.
|
|
2061
|
+
expression = trace_collection.onExpression(self.subnode_value)
|
|
2062
|
+
|
|
2063
|
+
if expression.willRaiseAnyException():
|
|
2064
|
+
return (
|
|
2065
|
+
expression,
|
|
2066
|
+
"new_raise",
|
|
2067
|
+
lambda: "For '%s' the child expression '%s' will raise."
|
|
2068
|
+
% (self.getChildNameNice(), expression.getChildNameNice()),
|
|
2069
|
+
)
|
|
2070
|
+
|
|
2071
|
+
return self, None, None
|
|
2072
|
+
|
|
2073
|
+
@staticmethod
|
|
2074
|
+
def mayRaiseExceptionOperation():
|
|
2075
|
+
return False
|
|
2076
|
+
|
|
2077
|
+
def mayRaiseException(self, exception_type):
|
|
2078
|
+
return self.subnode_value.mayRaiseException(exception_type)
|
|
2079
|
+
|
|
2080
|
+
def collectVariableAccesses(self, emit_read, emit_write):
|
|
2081
|
+
"""Collect variable reads and writes of child nodes."""
|
|
2082
|
+
|
|
2083
|
+
self.subnode_value.collectVariableAccesses(emit_read, emit_write)
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
# Assign the names that are easier to import with a stable name.
|
|
2087
|
+
ExpressionBuiltinClassmethodBase = ChildHavingValueFinalNoRaiseMixin
|
|
2088
|
+
ExpressionBuiltinStaticmethodBase = ChildHavingValueFinalNoRaiseMixin
|
|
2089
|
+
|
|
2090
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
2091
|
+
# integrates with CPython, but also works on its own.
|
|
2092
|
+
#
|
|
2093
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
2094
|
+
# you may not use this file except in compliance with the License.
|
|
2095
|
+
# You may obtain a copy of the License at
|
|
2096
|
+
#
|
|
2097
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
2098
|
+
#
|
|
2099
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
2100
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
2101
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2102
|
+
# See the License for the specific language governing permissions and
|
|
2103
|
+
# limitations under the License.
|