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,1366 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Nodes related to importing modules or names.
|
|
5
|
+
|
|
6
|
+
Normally imports are mostly relatively static, but Nuitka also attempts to
|
|
7
|
+
cover the uses of "__import__" built-in and other import techniques, that
|
|
8
|
+
allow dynamic values.
|
|
9
|
+
|
|
10
|
+
If other optimizations make it possible to predict these, the compiler can go
|
|
11
|
+
deeper that what it normally could. The import expression node can lead to
|
|
12
|
+
modules being added. After optimization it will be asked about used modules.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import sys
|
|
16
|
+
|
|
17
|
+
from nuitka.__past__ import long, unicode, xrange
|
|
18
|
+
from nuitka.code_generation.Reports import onMissingTrust
|
|
19
|
+
from nuitka.HardImportRegistry import (
|
|
20
|
+
addModuleSingleAttributeNodeFactory,
|
|
21
|
+
hard_modules_aliases,
|
|
22
|
+
hard_modules_limited,
|
|
23
|
+
hard_modules_non_stdlib,
|
|
24
|
+
hard_modules_stdlib,
|
|
25
|
+
hard_modules_trust,
|
|
26
|
+
isHardModule,
|
|
27
|
+
isHardModuleWithoutSideEffect,
|
|
28
|
+
trust_constant,
|
|
29
|
+
trust_importable,
|
|
30
|
+
trust_may_exist,
|
|
31
|
+
trust_node,
|
|
32
|
+
trust_node_factory,
|
|
33
|
+
trust_undefined,
|
|
34
|
+
)
|
|
35
|
+
from nuitka.importing.Importing import (
|
|
36
|
+
isNonRaisingBuiltinModule,
|
|
37
|
+
isPackageDir,
|
|
38
|
+
isPackageModuleName,
|
|
39
|
+
locateModule,
|
|
40
|
+
makeModuleUsageAttempt,
|
|
41
|
+
makeParentModuleUsagesAttempts,
|
|
42
|
+
)
|
|
43
|
+
from nuitka.importing.ImportResolving import resolveModuleName
|
|
44
|
+
from nuitka.importing.Recursion import decideRecursion
|
|
45
|
+
from nuitka.importing.StandardLibrary import isStandardLibraryPath
|
|
46
|
+
from nuitka.Options import (
|
|
47
|
+
isExperimental,
|
|
48
|
+
isStandaloneMode,
|
|
49
|
+
shallMakeModule,
|
|
50
|
+
shallWarnUnusualCode,
|
|
51
|
+
)
|
|
52
|
+
from nuitka.plugins.Plugins import Plugins
|
|
53
|
+
from nuitka.PythonVersions import python_version
|
|
54
|
+
from nuitka.specs.BuiltinParameterSpecs import (
|
|
55
|
+
BuiltinParameterSpec,
|
|
56
|
+
extractBuiltinArgs,
|
|
57
|
+
)
|
|
58
|
+
from nuitka.Tracing import unusual_logger
|
|
59
|
+
from nuitka.utils.ModuleNames import ModuleName
|
|
60
|
+
|
|
61
|
+
from .ChildrenHavingMixins import (
|
|
62
|
+
ChildHavingModuleMixin,
|
|
63
|
+
ChildrenExpressionBuiltinImportMixin,
|
|
64
|
+
ChildrenExpressionImportlibImportModuleCallMixin,
|
|
65
|
+
)
|
|
66
|
+
from .ExpressionBases import ExpressionBase
|
|
67
|
+
from .ImportHardNodes import (
|
|
68
|
+
ExpressionImportHardBase,
|
|
69
|
+
ExpressionImportModuleNameHardExists,
|
|
70
|
+
ExpressionImportModuleNameHardExistsSpecificBase,
|
|
71
|
+
ExpressionImportModuleNameHardMaybeExists,
|
|
72
|
+
)
|
|
73
|
+
from .LocalsScopes import GlobalsDictHandle
|
|
74
|
+
from .NodeMakingHelpers import (
|
|
75
|
+
makeConstantReplacementNode,
|
|
76
|
+
makeRaiseExceptionReplacementExpression,
|
|
77
|
+
makeRaiseImportErrorReplacementExpression,
|
|
78
|
+
)
|
|
79
|
+
from .shapes.BuiltinTypeShapes import tshape_module, tshape_module_builtin
|
|
80
|
+
from .StatementBasesGenerated import StatementImportStarBase
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def makeExpressionImportModuleNameHard(
|
|
84
|
+
module_name, import_name, module_guaranteed, source_ref
|
|
85
|
+
):
|
|
86
|
+
if hard_modules_trust[module_name].get(import_name) is None:
|
|
87
|
+
return ExpressionImportModuleNameHardMaybeExists(
|
|
88
|
+
module_name=module_name,
|
|
89
|
+
import_name=import_name,
|
|
90
|
+
module_guaranteed=module_guaranteed,
|
|
91
|
+
source_ref=source_ref,
|
|
92
|
+
)
|
|
93
|
+
else:
|
|
94
|
+
return ExpressionImportModuleNameHardExists(
|
|
95
|
+
module_name=module_name,
|
|
96
|
+
import_name=import_name,
|
|
97
|
+
module_guaranteed=module_guaranteed,
|
|
98
|
+
source_ref=source_ref,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class ExpressionImportAllowanceMixin(object):
|
|
103
|
+
# Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
|
|
104
|
+
__slots__ = ()
|
|
105
|
+
|
|
106
|
+
def __init__(self, using_module_name):
|
|
107
|
+
self.using_module_name = using_module_name
|
|
108
|
+
|
|
109
|
+
if self.finding == "not-found":
|
|
110
|
+
self.allowed = False
|
|
111
|
+
elif self.finding == "built-in":
|
|
112
|
+
self.allowed = True
|
|
113
|
+
elif self.module_name in hard_modules_stdlib:
|
|
114
|
+
self.allowed = True
|
|
115
|
+
else:
|
|
116
|
+
self.allowed, _reason = decideRecursion(
|
|
117
|
+
using_module_name=self.using_module_name,
|
|
118
|
+
module_filename=self.module_filename,
|
|
119
|
+
module_name=self.module_name,
|
|
120
|
+
module_kind=self.module_kind,
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
# In case of hard imports, that are not forbidden explicitly, allow their use
|
|
124
|
+
# anyway.
|
|
125
|
+
if self.allowed is None and self.isExpressionImportModuleHard():
|
|
126
|
+
self.allowed = True
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class ExpressionImportModuleFixed(ExpressionBase):
|
|
130
|
+
"""Hard coded import names, that we know to exist."
|
|
131
|
+
|
|
132
|
+
These created as result of builtin imports and "importlib.import_module" calls
|
|
133
|
+
that were compile time resolved, and for known module names.
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
kind = "EXPRESSION_IMPORT_MODULE_FIXED"
|
|
137
|
+
|
|
138
|
+
__slots__ = (
|
|
139
|
+
"module_name",
|
|
140
|
+
"value_name",
|
|
141
|
+
"found_module_name",
|
|
142
|
+
"found_module_filename",
|
|
143
|
+
"module_kind",
|
|
144
|
+
"finding",
|
|
145
|
+
"module_usages",
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
def __init__(self, module_name, value_name, source_ref):
|
|
149
|
+
ExpressionBase.__init__(self, source_ref)
|
|
150
|
+
|
|
151
|
+
self.module_name = ModuleName(module_name)
|
|
152
|
+
self.value_name = ModuleName(value_name)
|
|
153
|
+
|
|
154
|
+
self.finding = None
|
|
155
|
+
|
|
156
|
+
# If not found, we import the package at least
|
|
157
|
+
(
|
|
158
|
+
self.found_module_name,
|
|
159
|
+
self.found_module_filename,
|
|
160
|
+
self.module_kind,
|
|
161
|
+
self.finding,
|
|
162
|
+
) = self._attemptFollow()
|
|
163
|
+
|
|
164
|
+
self.module_usages = makeParentModuleUsagesAttempts(
|
|
165
|
+
makeModuleUsageAttempt(
|
|
166
|
+
module_name=self.found_module_name,
|
|
167
|
+
filename=self.found_module_filename,
|
|
168
|
+
finding=self.finding,
|
|
169
|
+
module_kind=self.module_kind,
|
|
170
|
+
level=0,
|
|
171
|
+
source_ref=self.source_ref,
|
|
172
|
+
reason="import",
|
|
173
|
+
)
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# TODO: This is called in constructor only, is it, then inline it.
|
|
177
|
+
def _attemptFollow(self):
|
|
178
|
+
found_module_name, found_module_filename, module_kind, finding = locateModule(
|
|
179
|
+
module_name=self.module_name,
|
|
180
|
+
parent_package=None,
|
|
181
|
+
level=0,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
if self.finding == "not-found":
|
|
185
|
+
while True:
|
|
186
|
+
module_name = found_module_filename.getPackageName()
|
|
187
|
+
|
|
188
|
+
if module_name is None:
|
|
189
|
+
break
|
|
190
|
+
|
|
191
|
+
(
|
|
192
|
+
found_module_name,
|
|
193
|
+
found_module_filename,
|
|
194
|
+
module_kind,
|
|
195
|
+
finding,
|
|
196
|
+
) = locateModule(
|
|
197
|
+
module_name=module_name,
|
|
198
|
+
parent_package=None,
|
|
199
|
+
level=0,
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
if self.finding != "not-found":
|
|
203
|
+
break
|
|
204
|
+
|
|
205
|
+
return found_module_name, found_module_filename, module_kind, finding
|
|
206
|
+
|
|
207
|
+
def finalize(self):
|
|
208
|
+
del self.parent
|
|
209
|
+
|
|
210
|
+
def getDetails(self):
|
|
211
|
+
return {"module_name": self.module_name, "value_name": self.value_name}
|
|
212
|
+
|
|
213
|
+
def getModuleName(self):
|
|
214
|
+
return self.module_name
|
|
215
|
+
|
|
216
|
+
def getValueName(self):
|
|
217
|
+
return self.value_name
|
|
218
|
+
|
|
219
|
+
@staticmethod
|
|
220
|
+
def mayHaveSideEffects():
|
|
221
|
+
# TODO: For included modules, we might be able to tell, not not done now.
|
|
222
|
+
return True
|
|
223
|
+
|
|
224
|
+
@staticmethod
|
|
225
|
+
def mayRaiseException(exception_type):
|
|
226
|
+
# TODO: For included modules, we might be able to tell, not not done now.
|
|
227
|
+
return True
|
|
228
|
+
|
|
229
|
+
def getTypeShape(self):
|
|
230
|
+
# TODO: This ought to be dead code, built-in modules have their own nodes now
|
|
231
|
+
# and may only be hard imports, but not this.
|
|
232
|
+
if self.module_name in sys.builtin_module_names:
|
|
233
|
+
return tshape_module_builtin
|
|
234
|
+
else:
|
|
235
|
+
return tshape_module
|
|
236
|
+
|
|
237
|
+
def getModuleUsageAttempts(self):
|
|
238
|
+
return self.module_usages
|
|
239
|
+
|
|
240
|
+
def computeExpressionRaw(self, trace_collection):
|
|
241
|
+
if self.mayRaiseException(BaseException):
|
|
242
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
243
|
+
|
|
244
|
+
# Trace the module usage attempt.
|
|
245
|
+
trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
|
|
246
|
+
|
|
247
|
+
# Nothing to do about it.
|
|
248
|
+
return self, None, None
|
|
249
|
+
|
|
250
|
+
def computeExpressionImportName(self, import_node, import_name, trace_collection):
|
|
251
|
+
# TODO: For include modules, something might be possible here, consider self.allowance
|
|
252
|
+
# when that is implemented.
|
|
253
|
+
return self.computeExpressionAttribute(
|
|
254
|
+
lookup_node=import_node,
|
|
255
|
+
attribute_name=import_name,
|
|
256
|
+
trace_collection=trace_collection,
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
class ExpressionImportModuleBuiltin(ExpressionBase):
|
|
261
|
+
"""Hard coded import names, that we know to exist."
|
|
262
|
+
|
|
263
|
+
These created as result of builtin imports and "importlib.import_module" calls
|
|
264
|
+
that were compile time resolved, and for known module names.
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
kind = "EXPRESSION_IMPORT_MODULE_BUILTIN"
|
|
268
|
+
|
|
269
|
+
__slots__ = (
|
|
270
|
+
"module_name",
|
|
271
|
+
"value_name",
|
|
272
|
+
"module_kind",
|
|
273
|
+
"builtin_module",
|
|
274
|
+
"module_usages",
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
def __init__(self, module_name, value_name, source_ref):
|
|
278
|
+
ExpressionBase.__init__(self, source_ref)
|
|
279
|
+
|
|
280
|
+
self.module_name = ModuleName(module_name)
|
|
281
|
+
self.value_name = ModuleName(value_name)
|
|
282
|
+
|
|
283
|
+
self.builtin_module = __import__(module_name.asString())
|
|
284
|
+
|
|
285
|
+
# If not found, we import the package at least
|
|
286
|
+
_module_name, _module_filename, _module_kind, _finding = locateModule(
|
|
287
|
+
module_name=self.module_name,
|
|
288
|
+
parent_package=None,
|
|
289
|
+
level=0,
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
assert _module_name == self.module_name, _module_name
|
|
293
|
+
assert _finding == "built-in", _finding
|
|
294
|
+
assert _module_kind is None, _module_kind
|
|
295
|
+
|
|
296
|
+
self.module_usages = makeParentModuleUsagesAttempts(
|
|
297
|
+
makeModuleUsageAttempt(
|
|
298
|
+
module_name=self.module_name,
|
|
299
|
+
filename=None,
|
|
300
|
+
finding="built-in",
|
|
301
|
+
module_kind=None,
|
|
302
|
+
level=0,
|
|
303
|
+
source_ref=self.source_ref,
|
|
304
|
+
reason="import",
|
|
305
|
+
)
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
@staticmethod
|
|
309
|
+
def getTypeShape():
|
|
310
|
+
return tshape_module_builtin
|
|
311
|
+
|
|
312
|
+
def mayRaiseExceptionImportName(self, exception_type, import_name):
|
|
313
|
+
return not hasattr(self.builtin_module, import_name)
|
|
314
|
+
|
|
315
|
+
def finalize(self):
|
|
316
|
+
del self.parent
|
|
317
|
+
|
|
318
|
+
def getDetails(self):
|
|
319
|
+
return {"module_name": self.module_name, "value_name": self.value_name}
|
|
320
|
+
|
|
321
|
+
def getModuleName(self):
|
|
322
|
+
return self.module_name
|
|
323
|
+
|
|
324
|
+
def getValueName(self):
|
|
325
|
+
return self.value_name
|
|
326
|
+
|
|
327
|
+
@staticmethod
|
|
328
|
+
def mayHaveSideEffects():
|
|
329
|
+
return True
|
|
330
|
+
|
|
331
|
+
def mayRaiseException(self, exception_type):
|
|
332
|
+
return isNonRaisingBuiltinModule(self.module_name) is not False
|
|
333
|
+
|
|
334
|
+
def getModuleUsageAttempts(self):
|
|
335
|
+
return self.module_usages
|
|
336
|
+
|
|
337
|
+
def computeExpressionRaw(self, trace_collection):
|
|
338
|
+
if self.mayRaiseException(BaseException):
|
|
339
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
340
|
+
|
|
341
|
+
# Trace the module usage attempt.
|
|
342
|
+
trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
|
|
343
|
+
|
|
344
|
+
# Nothing to do about it.
|
|
345
|
+
return self, None, None
|
|
346
|
+
|
|
347
|
+
def computeExpressionImportName(self, import_node, import_name, trace_collection):
|
|
348
|
+
# TODO: For include modules, something might be possible here, consider self.allowance
|
|
349
|
+
# when that is implemented.
|
|
350
|
+
return self.computeExpressionAttribute(
|
|
351
|
+
lookup_node=import_node,
|
|
352
|
+
attribute_name=import_name,
|
|
353
|
+
trace_collection=trace_collection,
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
class ExpressionImportModuleHard(
|
|
358
|
+
ExpressionImportAllowanceMixin, ExpressionImportHardBase
|
|
359
|
+
):
|
|
360
|
+
"""Hard coded import names, e.g. of "__future__"
|
|
361
|
+
|
|
362
|
+
These are directly created for some Python mechanics, but also due to
|
|
363
|
+
compile time optimization for imports of statically known modules.
|
|
364
|
+
"""
|
|
365
|
+
|
|
366
|
+
kind = "EXPRESSION_IMPORT_MODULE_HARD"
|
|
367
|
+
|
|
368
|
+
__slots__ = (
|
|
369
|
+
"using_module_name",
|
|
370
|
+
"module",
|
|
371
|
+
"allowed",
|
|
372
|
+
"guaranteed",
|
|
373
|
+
"value_name",
|
|
374
|
+
"is_package",
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
def __init__(self, using_module_name, module_name, value_name, source_ref):
|
|
378
|
+
ExpressionImportHardBase.__init__(
|
|
379
|
+
self, module_name=module_name, source_ref=source_ref
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
self.value_name = value_name
|
|
383
|
+
|
|
384
|
+
ExpressionImportAllowanceMixin.__init__(
|
|
385
|
+
self, using_module_name=using_module_name
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
if self.finding != "not-found" and isHardModuleWithoutSideEffect(
|
|
389
|
+
self.module_name
|
|
390
|
+
):
|
|
391
|
+
__import__(self.module_name.asString())
|
|
392
|
+
self.module = sys.modules[self.value_name]
|
|
393
|
+
|
|
394
|
+
self.is_package = hasattr(self.module, "__path__")
|
|
395
|
+
else:
|
|
396
|
+
self.module = None
|
|
397
|
+
|
|
398
|
+
# TODO: This is actually wrong for many packages, but for scipy, we
|
|
399
|
+
# use it to make it work for a hotfix, before taking the resolution
|
|
400
|
+
# to a new code base.
|
|
401
|
+
self.is_package = self.module_name.hasNamespace(
|
|
402
|
+
"scipy"
|
|
403
|
+
) and isPackageModuleName(self.module_name)
|
|
404
|
+
|
|
405
|
+
self.guaranteed = self.allowed and (
|
|
406
|
+
not shallMakeModule() or self.module_name not in hard_modules_non_stdlib
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
@staticmethod
|
|
410
|
+
def isExpressionImportModuleHard():
|
|
411
|
+
return True
|
|
412
|
+
|
|
413
|
+
@staticmethod
|
|
414
|
+
def hasVeryTrustedValue():
|
|
415
|
+
return True
|
|
416
|
+
|
|
417
|
+
def finalize(self):
|
|
418
|
+
del self.parent
|
|
419
|
+
|
|
420
|
+
def getDetails(self):
|
|
421
|
+
return {
|
|
422
|
+
"using_module_name": self.using_module_name,
|
|
423
|
+
"module_name": self.module_name,
|
|
424
|
+
"value_name": self.value_name,
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
def getModuleName(self):
|
|
428
|
+
return self.module_name
|
|
429
|
+
|
|
430
|
+
def getValueName(self):
|
|
431
|
+
return self.value_name
|
|
432
|
+
|
|
433
|
+
def mayHaveSideEffects(self):
|
|
434
|
+
return self.module is None or not self.guaranteed
|
|
435
|
+
|
|
436
|
+
def mayRaiseException(self, exception_type):
|
|
437
|
+
return not self.allowed or self.mayHaveSideEffects()
|
|
438
|
+
|
|
439
|
+
def getTypeShape(self):
|
|
440
|
+
if self.module_name in sys.builtin_module_names:
|
|
441
|
+
return tshape_module_builtin
|
|
442
|
+
else:
|
|
443
|
+
return tshape_module
|
|
444
|
+
|
|
445
|
+
def computeExpressionRaw(self, trace_collection):
|
|
446
|
+
if self.mayRaiseException(BaseException):
|
|
447
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
448
|
+
|
|
449
|
+
# Trace the module usage attempt.
|
|
450
|
+
trace_collection.onModuleUsageAttempts(self.getModuleUsageAttempts())
|
|
451
|
+
|
|
452
|
+
return self, None, None
|
|
453
|
+
|
|
454
|
+
def computeExpressionImportName(self, import_node, import_name, trace_collection):
|
|
455
|
+
return self._computeExpressionAttribute(
|
|
456
|
+
lookup_node=import_node,
|
|
457
|
+
attribute_name=import_name,
|
|
458
|
+
trace_collection=trace_collection,
|
|
459
|
+
is_import=True,
|
|
460
|
+
)
|
|
461
|
+
|
|
462
|
+
@staticmethod
|
|
463
|
+
def _getImportNameErrorString(module, module_name, name):
|
|
464
|
+
if python_version < 0x300:
|
|
465
|
+
return "cannot import name %s" % name
|
|
466
|
+
elif python_version < 0x370:
|
|
467
|
+
return "cannot import name %r" % name
|
|
468
|
+
elif isStandaloneMode():
|
|
469
|
+
return "cannot import name %r from %r" % (name, module_name)
|
|
470
|
+
else:
|
|
471
|
+
return "cannot import name %r from %r (%s)" % (
|
|
472
|
+
name,
|
|
473
|
+
module_name,
|
|
474
|
+
module.__file__ if hasattr(module, "__file__") else "unknown location",
|
|
475
|
+
)
|
|
476
|
+
|
|
477
|
+
def _makeRaiseExceptionReplacementExpression(
|
|
478
|
+
self, lookup_node, attribute_name, is_import
|
|
479
|
+
):
|
|
480
|
+
if is_import:
|
|
481
|
+
return makeRaiseExceptionReplacementExpression(
|
|
482
|
+
expression=lookup_node,
|
|
483
|
+
exception_type="ImportError",
|
|
484
|
+
exception_value=self._getImportNameErrorString(
|
|
485
|
+
self.module, self.value_name, attribute_name
|
|
486
|
+
),
|
|
487
|
+
)
|
|
488
|
+
else:
|
|
489
|
+
return makeRaiseExceptionReplacementExpression(
|
|
490
|
+
expression=lookup_node,
|
|
491
|
+
exception_type="AttributeError",
|
|
492
|
+
# TODO: Not the right error message
|
|
493
|
+
exception_value=self._getImportNameErrorString(
|
|
494
|
+
self.module, self.value_name, attribute_name
|
|
495
|
+
),
|
|
496
|
+
)
|
|
497
|
+
|
|
498
|
+
def _computeExpressionAttribute(
|
|
499
|
+
self, lookup_node, attribute_name, trace_collection, is_import
|
|
500
|
+
):
|
|
501
|
+
# Return driven handling of many cases
|
|
502
|
+
# pylint: disable=too-many-branches,too-many-return-statements
|
|
503
|
+
|
|
504
|
+
if self.allowed:
|
|
505
|
+
full_name = self.value_name.getChildNamed(attribute_name)
|
|
506
|
+
full_name = ModuleName(hard_modules_aliases.get(full_name, full_name))
|
|
507
|
+
|
|
508
|
+
if isHardModule(full_name):
|
|
509
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
510
|
+
|
|
511
|
+
new_node = ExpressionImportModuleHard(
|
|
512
|
+
using_module_name=self.using_module_name,
|
|
513
|
+
module_name=full_name,
|
|
514
|
+
value_name=full_name,
|
|
515
|
+
source_ref=lookup_node.source_ref,
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
return (
|
|
519
|
+
new_node,
|
|
520
|
+
"new_expression",
|
|
521
|
+
"Hard module '%s' submodule '%s' pre-computed."
|
|
522
|
+
% (self.value_name, attribute_name),
|
|
523
|
+
)
|
|
524
|
+
|
|
525
|
+
if self.value_name in hard_modules_trust:
|
|
526
|
+
trust = hard_modules_trust[self.value_name].get(
|
|
527
|
+
attribute_name, trust_undefined
|
|
528
|
+
)
|
|
529
|
+
else:
|
|
530
|
+
trust = trust_undefined
|
|
531
|
+
|
|
532
|
+
if trust is trust_importable:
|
|
533
|
+
# TODO: Change this is a hard module import itself, currently these are not all trusted
|
|
534
|
+
# themselves yet. We do not have to indicate exception, but it makes no sense to annotate
|
|
535
|
+
# that here at this point.
|
|
536
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
537
|
+
elif trust is trust_may_exist:
|
|
538
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
539
|
+
elif (
|
|
540
|
+
trust is not trust_undefined
|
|
541
|
+
and self.module is not None
|
|
542
|
+
and not hasattr(self.module, attribute_name)
|
|
543
|
+
):
|
|
544
|
+
# TODO: Unify with below branches.
|
|
545
|
+
trace_collection.onExceptionRaiseExit(ImportError)
|
|
546
|
+
|
|
547
|
+
new_node = self._makeRaiseExceptionReplacementExpression(
|
|
548
|
+
lookup_node=lookup_node,
|
|
549
|
+
attribute_name=attribute_name,
|
|
550
|
+
is_import=is_import,
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
return (
|
|
554
|
+
new_node,
|
|
555
|
+
"new_raise",
|
|
556
|
+
"Hard module '%s' attribute missing '%s* pre-computed."
|
|
557
|
+
% (self.value_name, attribute_name),
|
|
558
|
+
)
|
|
559
|
+
else:
|
|
560
|
+
if trust is trust_undefined:
|
|
561
|
+
# Need to attempt module imports if this is for an import
|
|
562
|
+
# lookup of code like "from value_name import attribute_name".
|
|
563
|
+
if self.is_package:
|
|
564
|
+
full_name = self.value_name.getChildNamed(attribute_name)
|
|
565
|
+
|
|
566
|
+
(
|
|
567
|
+
_sub_module_name,
|
|
568
|
+
_sub_module_filename,
|
|
569
|
+
_sub_module_kind,
|
|
570
|
+
finding,
|
|
571
|
+
) = locateModule(
|
|
572
|
+
module_name=full_name,
|
|
573
|
+
parent_package=None,
|
|
574
|
+
level=0,
|
|
575
|
+
)
|
|
576
|
+
|
|
577
|
+
if finding != "not-found":
|
|
578
|
+
trace_collection.onExceptionRaiseExit(ImportError)
|
|
579
|
+
|
|
580
|
+
result = makeExpressionImportModuleFixed(
|
|
581
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
582
|
+
module_name=full_name,
|
|
583
|
+
value_name=full_name,
|
|
584
|
+
source_ref=lookup_node.getSourceReference(),
|
|
585
|
+
)
|
|
586
|
+
|
|
587
|
+
return (
|
|
588
|
+
result,
|
|
589
|
+
"new_expression",
|
|
590
|
+
"Attribute lookup '%s' of hard module '%s' becomes hard module name import."
|
|
591
|
+
% (self.value_name, attribute_name),
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
trace_collection.onExceptionRaiseExit(ImportError)
|
|
595
|
+
|
|
596
|
+
onMissingTrust(
|
|
597
|
+
"Hard module '%s' attribute '%s' missing trust config for existing value.",
|
|
598
|
+
lookup_node.getSourceReference(),
|
|
599
|
+
self.value_name,
|
|
600
|
+
attribute_name,
|
|
601
|
+
)
|
|
602
|
+
elif trust is trust_constant and self.module is not None:
|
|
603
|
+
# Make sure it's actually there, and not becoming the getattr default by accident.
|
|
604
|
+
assert hasattr(self.module, attribute_name), self
|
|
605
|
+
|
|
606
|
+
return (
|
|
607
|
+
makeConstantReplacementNode(
|
|
608
|
+
constant=getattr(self.module, attribute_name),
|
|
609
|
+
node=lookup_node,
|
|
610
|
+
user_provided=True,
|
|
611
|
+
),
|
|
612
|
+
"new_constant",
|
|
613
|
+
"Hard module '%s' imported '%s' pre-computed to constant value."
|
|
614
|
+
% (self.value_name, attribute_name),
|
|
615
|
+
)
|
|
616
|
+
elif trust is trust_node:
|
|
617
|
+
# TODO: Unify with other branches.
|
|
618
|
+
trace_collection.onExceptionRaiseExit(ImportError)
|
|
619
|
+
|
|
620
|
+
result = trust_node_factory[self.value_name, attribute_name](
|
|
621
|
+
source_ref=lookup_node.source_ref
|
|
622
|
+
)
|
|
623
|
+
|
|
624
|
+
return (
|
|
625
|
+
result,
|
|
626
|
+
"new_expression",
|
|
627
|
+
"Attribute lookup '%s' of hard module '%s' becomes node '%s'."
|
|
628
|
+
% (self.value_name, attribute_name, result.kind),
|
|
629
|
+
)
|
|
630
|
+
else:
|
|
631
|
+
result = makeExpressionImportModuleNameHard(
|
|
632
|
+
module_name=self.value_name,
|
|
633
|
+
import_name=attribute_name,
|
|
634
|
+
module_guaranteed=self.guaranteed,
|
|
635
|
+
source_ref=lookup_node.getSourceReference(),
|
|
636
|
+
)
|
|
637
|
+
|
|
638
|
+
return (
|
|
639
|
+
result,
|
|
640
|
+
"new_expression",
|
|
641
|
+
"Attribute lookup '%s' of hard module '%s' becomes hard module name import."
|
|
642
|
+
% (self.value_name, attribute_name),
|
|
643
|
+
)
|
|
644
|
+
|
|
645
|
+
else:
|
|
646
|
+
# Nothing can be known, but lets not do control flow escape, that is just
|
|
647
|
+
# too unlikely.
|
|
648
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
649
|
+
|
|
650
|
+
return lookup_node, None, None
|
|
651
|
+
|
|
652
|
+
def computeExpressionAttribute(self, lookup_node, attribute_name, trace_collection):
|
|
653
|
+
return self._computeExpressionAttribute(
|
|
654
|
+
lookup_node=lookup_node,
|
|
655
|
+
attribute_name=attribute_name,
|
|
656
|
+
trace_collection=trace_collection,
|
|
657
|
+
is_import=False,
|
|
658
|
+
)
|
|
659
|
+
|
|
660
|
+
def hasShapeTrustedAttributes(self):
|
|
661
|
+
return True
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
importlib_import_module_spec = BuiltinParameterSpec(
|
|
665
|
+
"importlib.import_module", ("name", "package"), default_count=1
|
|
666
|
+
)
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
class ExpressionImportlibImportModuleRef(
|
|
670
|
+
ExpressionImportModuleNameHardExistsSpecificBase
|
|
671
|
+
):
|
|
672
|
+
kind = "EXPRESSION_IMPORTLIB_IMPORT_MODULE_REF"
|
|
673
|
+
|
|
674
|
+
def __init__(self, source_ref):
|
|
675
|
+
ExpressionImportModuleNameHardExistsSpecificBase.__init__(
|
|
676
|
+
self,
|
|
677
|
+
module_name="importlib",
|
|
678
|
+
import_name="import_module",
|
|
679
|
+
module_guaranteed=True,
|
|
680
|
+
source_ref=source_ref,
|
|
681
|
+
)
|
|
682
|
+
|
|
683
|
+
@staticmethod
|
|
684
|
+
def getDetails():
|
|
685
|
+
return {}
|
|
686
|
+
|
|
687
|
+
def computeExpressionCall(self, call_node, call_args, call_kw, trace_collection):
|
|
688
|
+
# Anything may happen. On next pass, if replaced, we might be better
|
|
689
|
+
# but not now.
|
|
690
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
691
|
+
|
|
692
|
+
result = extractBuiltinArgs(
|
|
693
|
+
node=call_node,
|
|
694
|
+
builtin_class=ExpressionImportlibImportModuleCall,
|
|
695
|
+
builtin_spec=importlib_import_module_spec,
|
|
696
|
+
)
|
|
697
|
+
|
|
698
|
+
return result, "new_expression", "Call of 'importlib.import_module' recognized."
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
def _getImportNameAsStr(value):
|
|
702
|
+
if value is None:
|
|
703
|
+
result = None
|
|
704
|
+
else:
|
|
705
|
+
result = value.getCompileTimeConstant()
|
|
706
|
+
|
|
707
|
+
if type(result) in (str, unicode):
|
|
708
|
+
# TODO: This is not handling decoding errors all that well.
|
|
709
|
+
if str is not unicode and type(result) is unicode:
|
|
710
|
+
result = str(result)
|
|
711
|
+
|
|
712
|
+
return result
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
class ExpressionImportlibImportModuleCall(
|
|
716
|
+
ChildrenExpressionImportlibImportModuleCallMixin, ExpressionBase
|
|
717
|
+
):
|
|
718
|
+
"""Call to "importlib.import_module" """
|
|
719
|
+
|
|
720
|
+
kind = "EXPRESSION_IMPORTLIB_IMPORT_MODULE_CALL"
|
|
721
|
+
|
|
722
|
+
named_children = "name", "package|optional"
|
|
723
|
+
|
|
724
|
+
def __init__(self, name, package, source_ref):
|
|
725
|
+
ChildrenExpressionImportlibImportModuleCallMixin.__init__(
|
|
726
|
+
self,
|
|
727
|
+
name=name,
|
|
728
|
+
package=package,
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
ExpressionBase.__init__(self, source_ref)
|
|
732
|
+
|
|
733
|
+
@staticmethod
|
|
734
|
+
def _resolveImportLibArgs(module_name, package_name):
|
|
735
|
+
# Relative imports need to be resolved by package name.
|
|
736
|
+
if module_name.startswith("."):
|
|
737
|
+
if not package_name:
|
|
738
|
+
return None
|
|
739
|
+
|
|
740
|
+
# TODO: Static exception should be created and warned about, Python2/Python3 differ
|
|
741
|
+
# raise TypeError("relative imports require the 'package' argument")
|
|
742
|
+
# msg = ("the 'package' argument is required to perform a relative import for {!r}")
|
|
743
|
+
# raise TypeError(msg.format(name))
|
|
744
|
+
|
|
745
|
+
level = 0
|
|
746
|
+
for character in module_name:
|
|
747
|
+
if character != ".":
|
|
748
|
+
break
|
|
749
|
+
level += 1
|
|
750
|
+
module_name = module_name[level:]
|
|
751
|
+
|
|
752
|
+
dot = len(package_name)
|
|
753
|
+
for _i in xrange(level, 1, -1):
|
|
754
|
+
try:
|
|
755
|
+
dot = package_name.rindex(".", 0, dot)
|
|
756
|
+
except ValueError:
|
|
757
|
+
return None
|
|
758
|
+
# TODO: Static exception should be created and warned about.
|
|
759
|
+
# raise ValueError("attempted relative import beyond top-level package")
|
|
760
|
+
|
|
761
|
+
package_name = package_name[:dot]
|
|
762
|
+
if module_name == "":
|
|
763
|
+
return package_name
|
|
764
|
+
else:
|
|
765
|
+
return "%s.%s" % (package_name, module_name)
|
|
766
|
+
|
|
767
|
+
return module_name
|
|
768
|
+
|
|
769
|
+
def computeExpression(self, trace_collection):
|
|
770
|
+
module_name = self.subnode_name
|
|
771
|
+
package_name = self.subnode_package
|
|
772
|
+
|
|
773
|
+
if (
|
|
774
|
+
package_name is None or package_name.isCompileTimeConstant()
|
|
775
|
+
) and module_name.isCompileTimeConstant():
|
|
776
|
+
imported_module_name = _getImportNameAsStr(module_name)
|
|
777
|
+
imported_package_name = _getImportNameAsStr(package_name)
|
|
778
|
+
|
|
779
|
+
if (
|
|
780
|
+
imported_package_name is None or type(imported_package_name) is str
|
|
781
|
+
) and type(imported_module_name) is str:
|
|
782
|
+
resolved_module_name = self._resolveImportLibArgs(
|
|
783
|
+
imported_module_name, imported_package_name
|
|
784
|
+
)
|
|
785
|
+
|
|
786
|
+
if resolved_module_name is not None:
|
|
787
|
+
# Importing may raise an exception obviously, unless we know it will
|
|
788
|
+
# not.
|
|
789
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
790
|
+
|
|
791
|
+
result = makeExpressionImportModuleFixed(
|
|
792
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
793
|
+
module_name=resolved_module_name,
|
|
794
|
+
value_name=resolved_module_name,
|
|
795
|
+
source_ref=self.source_ref,
|
|
796
|
+
)
|
|
797
|
+
|
|
798
|
+
return (
|
|
799
|
+
result,
|
|
800
|
+
"new_expression",
|
|
801
|
+
"Resolved importlib.import_module call to import of '%s'."
|
|
802
|
+
% resolved_module_name,
|
|
803
|
+
)
|
|
804
|
+
|
|
805
|
+
# TODO: This is special for this node, need to support for for call base of hard imports
|
|
806
|
+
|
|
807
|
+
# Any code could be run, note that.
|
|
808
|
+
trace_collection.onControlFlowEscape(self)
|
|
809
|
+
|
|
810
|
+
# Importing may raise an exception obviously, unless we know it will
|
|
811
|
+
# not.
|
|
812
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
813
|
+
|
|
814
|
+
# TODO: May return a module or module variable reference of some sort in
|
|
815
|
+
# the future with embedded modules.
|
|
816
|
+
return self, None, None
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
addModuleSingleAttributeNodeFactory(
|
|
820
|
+
"importlib", "import_module", ExpressionImportlibImportModuleRef
|
|
821
|
+
)
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
def _makeParentImportModuleUsages(module_name, source_ref):
|
|
825
|
+
for parent_package_name in module_name.getParentPackageNames():
|
|
826
|
+
(
|
|
827
|
+
_parent_package_name,
|
|
828
|
+
parent_module_filename,
|
|
829
|
+
parent_module_kind,
|
|
830
|
+
parent_module_finding,
|
|
831
|
+
) = locateModule(
|
|
832
|
+
module_name=parent_package_name,
|
|
833
|
+
parent_package=None,
|
|
834
|
+
level=0,
|
|
835
|
+
)
|
|
836
|
+
|
|
837
|
+
yield makeModuleUsageAttempt(
|
|
838
|
+
module_name=parent_package_name,
|
|
839
|
+
filename=parent_module_filename,
|
|
840
|
+
finding=parent_module_finding,
|
|
841
|
+
module_kind=parent_module_kind,
|
|
842
|
+
level=0,
|
|
843
|
+
source_ref=source_ref,
|
|
844
|
+
reason="import path parent",
|
|
845
|
+
)
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
class ExpressionBuiltinImport(ChildrenExpressionBuiltinImportMixin, ExpressionBase):
|
|
849
|
+
__slots__ = (
|
|
850
|
+
"follow_attempted",
|
|
851
|
+
"finding",
|
|
852
|
+
"used_modules",
|
|
853
|
+
)
|
|
854
|
+
|
|
855
|
+
kind = "EXPRESSION_BUILTIN_IMPORT"
|
|
856
|
+
|
|
857
|
+
named_children = (
|
|
858
|
+
"name|setter",
|
|
859
|
+
"globals_arg|optional",
|
|
860
|
+
"locals_arg|optional",
|
|
861
|
+
"fromlist|optional",
|
|
862
|
+
"level|optional",
|
|
863
|
+
)
|
|
864
|
+
|
|
865
|
+
def __init__(self, name, globals_arg, locals_arg, fromlist, level, source_ref):
|
|
866
|
+
ChildrenExpressionBuiltinImportMixin.__init__(
|
|
867
|
+
self,
|
|
868
|
+
name=name,
|
|
869
|
+
globals_arg=globals_arg,
|
|
870
|
+
locals_arg=locals_arg,
|
|
871
|
+
fromlist=fromlist,
|
|
872
|
+
level=level,
|
|
873
|
+
)
|
|
874
|
+
|
|
875
|
+
ExpressionBase.__init__(self, source_ref)
|
|
876
|
+
|
|
877
|
+
self.follow_attempted = False
|
|
878
|
+
|
|
879
|
+
# The modules actually referenced in that import if it can be detected. Name
|
|
880
|
+
# imports are considered too.
|
|
881
|
+
self.used_modules = []
|
|
882
|
+
|
|
883
|
+
self.finding = None
|
|
884
|
+
|
|
885
|
+
def _getLevelValue(self):
|
|
886
|
+
parent_module = self.getParentModule()
|
|
887
|
+
level = self.subnode_level
|
|
888
|
+
|
|
889
|
+
if level is None:
|
|
890
|
+
return 0 if parent_module.getFutureSpec().isAbsoluteImport() else -1
|
|
891
|
+
elif not level.isCompileTimeConstant():
|
|
892
|
+
return None
|
|
893
|
+
else:
|
|
894
|
+
level_value = level.getCompileTimeConstant()
|
|
895
|
+
|
|
896
|
+
# TODO: Catch this as a static error maybe.
|
|
897
|
+
if type(level_value) not in (int, long):
|
|
898
|
+
return None
|
|
899
|
+
|
|
900
|
+
return level_value
|
|
901
|
+
|
|
902
|
+
def _attemptFollow(self, module_name):
|
|
903
|
+
# Complex stuff, pylint: disable=too-many-branches
|
|
904
|
+
|
|
905
|
+
# Without the level value, we don't know what it is.
|
|
906
|
+
level_value = self._getLevelValue()
|
|
907
|
+
if level_value is None:
|
|
908
|
+
return
|
|
909
|
+
|
|
910
|
+
parent_module = self.getParentModule()
|
|
911
|
+
|
|
912
|
+
if level_value != 0:
|
|
913
|
+
parent_package = parent_module.getFullName()
|
|
914
|
+
if not parent_module.isCompiledPythonPackage():
|
|
915
|
+
parent_package = parent_package.getPackageName()
|
|
916
|
+
else:
|
|
917
|
+
parent_package = None
|
|
918
|
+
|
|
919
|
+
module_name_resolved = resolveModuleName(module_name)
|
|
920
|
+
if module_name_resolved != module_name:
|
|
921
|
+
module_name = module_name_resolved
|
|
922
|
+
|
|
923
|
+
self.setChildName(
|
|
924
|
+
makeConstantReplacementNode(
|
|
925
|
+
constant=module_name.asString(),
|
|
926
|
+
node=self.subnode_name,
|
|
927
|
+
user_provided=True,
|
|
928
|
+
)
|
|
929
|
+
)
|
|
930
|
+
|
|
931
|
+
module_name = ModuleName(module_name)
|
|
932
|
+
module_name_found, module_filename, module_kind, self.finding = locateModule(
|
|
933
|
+
module_name=ModuleName(module_name),
|
|
934
|
+
parent_package=parent_package,
|
|
935
|
+
level=level_value,
|
|
936
|
+
)
|
|
937
|
+
|
|
938
|
+
# Allow for the import look ahead, to change what modules are
|
|
939
|
+
# considered hard imports.
|
|
940
|
+
Plugins.onModuleUsageLookAhead(
|
|
941
|
+
module_name=module_name_found,
|
|
942
|
+
module_filename=module_filename,
|
|
943
|
+
module_kind=module_kind,
|
|
944
|
+
)
|
|
945
|
+
|
|
946
|
+
self.used_modules = makeParentModuleUsagesAttempts(
|
|
947
|
+
makeModuleUsageAttempt(
|
|
948
|
+
module_name=module_name_found,
|
|
949
|
+
filename=module_filename,
|
|
950
|
+
module_kind=module_kind,
|
|
951
|
+
finding=self.finding,
|
|
952
|
+
level=level_value,
|
|
953
|
+
source_ref=self.source_ref,
|
|
954
|
+
reason="import",
|
|
955
|
+
)
|
|
956
|
+
)
|
|
957
|
+
|
|
958
|
+
if self.finding != "not-found":
|
|
959
|
+
module_name = module_name_found
|
|
960
|
+
|
|
961
|
+
import_list = self.subnode_fromlist
|
|
962
|
+
|
|
963
|
+
if import_list is not None:
|
|
964
|
+
if import_list.isCompileTimeConstant():
|
|
965
|
+
import_list = import_list.getCompileTimeConstant()
|
|
966
|
+
|
|
967
|
+
if type(import_list) not in (tuple, list):
|
|
968
|
+
import_list = None
|
|
969
|
+
|
|
970
|
+
if (
|
|
971
|
+
module_filename is not None
|
|
972
|
+
and import_list
|
|
973
|
+
and isPackageDir(module_filename)
|
|
974
|
+
):
|
|
975
|
+
for import_item in import_list:
|
|
976
|
+
if import_item == "*":
|
|
977
|
+
continue
|
|
978
|
+
|
|
979
|
+
(
|
|
980
|
+
name_import_module_name,
|
|
981
|
+
name_import_module_filename,
|
|
982
|
+
name_import_module_kind,
|
|
983
|
+
name_import_finding,
|
|
984
|
+
) = locateModule(
|
|
985
|
+
module_name=ModuleName(import_item),
|
|
986
|
+
parent_package=module_name,
|
|
987
|
+
level=1, # Relative import
|
|
988
|
+
)
|
|
989
|
+
|
|
990
|
+
self.used_modules = list(self.used_modules)
|
|
991
|
+
|
|
992
|
+
self.used_modules.append(
|
|
993
|
+
makeModuleUsageAttempt(
|
|
994
|
+
module_name=name_import_module_name,
|
|
995
|
+
filename=name_import_module_filename,
|
|
996
|
+
module_kind=name_import_module_kind,
|
|
997
|
+
finding=name_import_finding,
|
|
998
|
+
level=1,
|
|
999
|
+
source_ref=self.source_ref,
|
|
1000
|
+
reason="import fromlist",
|
|
1001
|
+
)
|
|
1002
|
+
)
|
|
1003
|
+
|
|
1004
|
+
self.used_modules = tuple(self.used_modules)
|
|
1005
|
+
|
|
1006
|
+
return module_filename
|
|
1007
|
+
else:
|
|
1008
|
+
return None
|
|
1009
|
+
|
|
1010
|
+
def _getImportedValueName(self, imported_module_name):
|
|
1011
|
+
from_list_truth = (
|
|
1012
|
+
self.subnode_fromlist is not None and self.subnode_fromlist.getTruthValue()
|
|
1013
|
+
)
|
|
1014
|
+
|
|
1015
|
+
if from_list_truth is True:
|
|
1016
|
+
return imported_module_name
|
|
1017
|
+
else:
|
|
1018
|
+
return imported_module_name.getTopLevelPackageName()
|
|
1019
|
+
|
|
1020
|
+
def computeExpression(self, trace_collection):
|
|
1021
|
+
# Attempt to recurse if not already done, many cases to consider and its
|
|
1022
|
+
# return driven, pylint: disable=too-many-branches,too-many-return-statements
|
|
1023
|
+
if self.follow_attempted:
|
|
1024
|
+
if self.finding == "not-found":
|
|
1025
|
+
# Importing and not finding, may raise an exception obviously.
|
|
1026
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1027
|
+
else:
|
|
1028
|
+
# If we know it exists, only RuntimeError shall occur.
|
|
1029
|
+
trace_collection.onExceptionRaiseExit(RuntimeError)
|
|
1030
|
+
|
|
1031
|
+
# Trace the module usage attempts.
|
|
1032
|
+
trace_collection.onModuleUsageAttempts(self.used_modules)
|
|
1033
|
+
|
|
1034
|
+
# We stay here.
|
|
1035
|
+
return self, None, None
|
|
1036
|
+
|
|
1037
|
+
# Importing may raise an exception obviously, unless we know it will
|
|
1038
|
+
# not.
|
|
1039
|
+
if self.finding != "built-in":
|
|
1040
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1041
|
+
|
|
1042
|
+
module_name = self.subnode_name
|
|
1043
|
+
|
|
1044
|
+
if module_name.isCompileTimeConstant():
|
|
1045
|
+
imported_module_name = module_name.getCompileTimeConstant()
|
|
1046
|
+
|
|
1047
|
+
module_filename = self._attemptFollow(module_name=imported_module_name)
|
|
1048
|
+
self.follow_attempted = True
|
|
1049
|
+
|
|
1050
|
+
# Trace the module usage attempts.
|
|
1051
|
+
for module_usage_attempt in self.used_modules:
|
|
1052
|
+
trace_collection.onModuleUsageAttempt(module_usage_attempt)
|
|
1053
|
+
|
|
1054
|
+
if type(imported_module_name) in (str, unicode):
|
|
1055
|
+
if self.finding == "relative":
|
|
1056
|
+
parent_module = self.getParentModule()
|
|
1057
|
+
|
|
1058
|
+
parent_package = parent_module.getFullName()
|
|
1059
|
+
if not parent_module.isCompiledPythonPackage():
|
|
1060
|
+
parent_package = parent_package.getPackageName()
|
|
1061
|
+
|
|
1062
|
+
level_value = abs(self._getLevelValue())
|
|
1063
|
+
level_value -= 1
|
|
1064
|
+
|
|
1065
|
+
while level_value > 0:
|
|
1066
|
+
parent_package = parent_package.getPackageName()
|
|
1067
|
+
level_value -= 1
|
|
1068
|
+
|
|
1069
|
+
if imported_module_name != "":
|
|
1070
|
+
candidate_module_name = parent_package.getChildNamed(
|
|
1071
|
+
imported_module_name
|
|
1072
|
+
)
|
|
1073
|
+
else:
|
|
1074
|
+
candidate_module_name = parent_package
|
|
1075
|
+
|
|
1076
|
+
if (
|
|
1077
|
+
candidate_module_name in hard_modules_non_stdlib
|
|
1078
|
+
or module_filename is None
|
|
1079
|
+
or isStandardLibraryPath(module_filename)
|
|
1080
|
+
):
|
|
1081
|
+
result = ExpressionImportModuleHard(
|
|
1082
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
1083
|
+
module_name=candidate_module_name,
|
|
1084
|
+
value_name=self._getImportedValueName(
|
|
1085
|
+
candidate_module_name
|
|
1086
|
+
),
|
|
1087
|
+
source_ref=self.source_ref,
|
|
1088
|
+
)
|
|
1089
|
+
|
|
1090
|
+
return (
|
|
1091
|
+
result,
|
|
1092
|
+
"new_expression",
|
|
1093
|
+
"Lowered import %s module '%s' to hard import."
|
|
1094
|
+
% (
|
|
1095
|
+
(
|
|
1096
|
+
"hard import"
|
|
1097
|
+
if candidate_module_name in hard_modules_non_stdlib
|
|
1098
|
+
else "standard library"
|
|
1099
|
+
),
|
|
1100
|
+
candidate_module_name.asString(),
|
|
1101
|
+
),
|
|
1102
|
+
)
|
|
1103
|
+
|
|
1104
|
+
imported_module_name = resolveModuleName(imported_module_name)
|
|
1105
|
+
|
|
1106
|
+
if self.finding == "absolute" and isHardModule(imported_module_name):
|
|
1107
|
+
if (
|
|
1108
|
+
imported_module_name in hard_modules_non_stdlib
|
|
1109
|
+
or module_filename is None
|
|
1110
|
+
or isStandardLibraryPath(module_filename)
|
|
1111
|
+
):
|
|
1112
|
+
result = ExpressionImportModuleHard(
|
|
1113
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
1114
|
+
module_name=imported_module_name,
|
|
1115
|
+
value_name=self._getImportedValueName(imported_module_name),
|
|
1116
|
+
source_ref=self.source_ref,
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
return (
|
|
1120
|
+
result,
|
|
1121
|
+
"new_expression",
|
|
1122
|
+
"Lowered import %s module '%s' to hard import."
|
|
1123
|
+
% (
|
|
1124
|
+
(
|
|
1125
|
+
"hard import"
|
|
1126
|
+
if imported_module_name in hard_modules_non_stdlib
|
|
1127
|
+
else "standard library"
|
|
1128
|
+
),
|
|
1129
|
+
imported_module_name.asString(),
|
|
1130
|
+
),
|
|
1131
|
+
)
|
|
1132
|
+
elif shallWarnUnusualCode():
|
|
1133
|
+
unusual_logger.warning(
|
|
1134
|
+
"%s: Standard library module '%s' used from outside path %r."
|
|
1135
|
+
% (
|
|
1136
|
+
self.source_ref.getAsString(),
|
|
1137
|
+
imported_module_name.asString(),
|
|
1138
|
+
self.module_filename,
|
|
1139
|
+
)
|
|
1140
|
+
)
|
|
1141
|
+
|
|
1142
|
+
# Built-in module imports can be specialized right away.
|
|
1143
|
+
|
|
1144
|
+
if self.finding == "built-in":
|
|
1145
|
+
result = makeExpressionImportModuleBuiltin(
|
|
1146
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
1147
|
+
module_name=imported_module_name,
|
|
1148
|
+
value_name=self._getImportedValueName(imported_module_name),
|
|
1149
|
+
source_ref=self.source_ref,
|
|
1150
|
+
)
|
|
1151
|
+
|
|
1152
|
+
# TODO: This ought to preserve side effects from arguments
|
|
1153
|
+
# for full compatibility with strange uses of __import__
|
|
1154
|
+
return (
|
|
1155
|
+
result,
|
|
1156
|
+
"new_expression",
|
|
1157
|
+
"Lowered import of built-in module '%s' to hard import."
|
|
1158
|
+
% imported_module_name.asString(),
|
|
1159
|
+
)
|
|
1160
|
+
|
|
1161
|
+
if self.finding == "not-found":
|
|
1162
|
+
if imported_module_name in hard_modules_limited:
|
|
1163
|
+
result = makeRaiseImportErrorReplacementExpression(
|
|
1164
|
+
expression=self, module_name=imported_module_name
|
|
1165
|
+
)
|
|
1166
|
+
|
|
1167
|
+
return (
|
|
1168
|
+
result,
|
|
1169
|
+
"new_raise",
|
|
1170
|
+
"Lowered import of missing standard library module '%s' to hard import."
|
|
1171
|
+
% imported_module_name.asString(),
|
|
1172
|
+
)
|
|
1173
|
+
|
|
1174
|
+
elif (
|
|
1175
|
+
isStandaloneMode()
|
|
1176
|
+
and self.used_modules
|
|
1177
|
+
and isExperimental("standalone-imports")
|
|
1178
|
+
):
|
|
1179
|
+
result = makeExpressionImportModuleFixed(
|
|
1180
|
+
using_module_name=self.getParentModule().getFullName(),
|
|
1181
|
+
module_name=self.used_modules[0].module_name,
|
|
1182
|
+
value_name=self._getImportedValueName(
|
|
1183
|
+
self.used_modules[0].module_name
|
|
1184
|
+
),
|
|
1185
|
+
source_ref=self.source_ref,
|
|
1186
|
+
)
|
|
1187
|
+
|
|
1188
|
+
return (
|
|
1189
|
+
result,
|
|
1190
|
+
"new_expression",
|
|
1191
|
+
"Lowered import of module '%s' to fixed import."
|
|
1192
|
+
% imported_module_name.asString(),
|
|
1193
|
+
)
|
|
1194
|
+
else:
|
|
1195
|
+
# TODO: This doesn't preserve side effects.
|
|
1196
|
+
|
|
1197
|
+
# Non-strings is going to raise an error.
|
|
1198
|
+
(
|
|
1199
|
+
new_node,
|
|
1200
|
+
change_tags,
|
|
1201
|
+
message,
|
|
1202
|
+
) = trace_collection.getCompileTimeComputationResult(
|
|
1203
|
+
node=self,
|
|
1204
|
+
computation=lambda: __import__(
|
|
1205
|
+
module_name.getCompileTimeConstant()
|
|
1206
|
+
),
|
|
1207
|
+
description="Replaced '__import__' call with non-string module name argument.",
|
|
1208
|
+
)
|
|
1209
|
+
|
|
1210
|
+
# Must fail, must not go on when it doesn't.
|
|
1211
|
+
assert change_tags == "new_raise", module_name
|
|
1212
|
+
|
|
1213
|
+
return new_node, change_tags, message
|
|
1214
|
+
|
|
1215
|
+
# Trace the module usage attempts, doing it twice will not harm, this
|
|
1216
|
+
# becomes a set.
|
|
1217
|
+
for module_usage_attempt in self.used_modules:
|
|
1218
|
+
trace_collection.onModuleUsageAttempt(module_usage_attempt)
|
|
1219
|
+
|
|
1220
|
+
# TODO: May return a module or module variable reference of some sort in
|
|
1221
|
+
# the future with embedded modules.
|
|
1222
|
+
return self, None, None
|
|
1223
|
+
|
|
1224
|
+
# TODO: Add computeExpressionImportName
|
|
1225
|
+
|
|
1226
|
+
def mayRaiseException(self, exception_type):
|
|
1227
|
+
return self.finding != "built-in"
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
class StatementImportStar(StatementImportStarBase):
|
|
1231
|
+
kind = "STATEMENT_IMPORT_STAR"
|
|
1232
|
+
|
|
1233
|
+
named_children = ("module",)
|
|
1234
|
+
node_attributes = ("target_scope",)
|
|
1235
|
+
auto_compute_handling = "post_init,operation"
|
|
1236
|
+
|
|
1237
|
+
def postInitNode(self):
|
|
1238
|
+
# TODO: Abstract these things in some better way, and do not make it permanent.
|
|
1239
|
+
if type(self.target_scope) is GlobalsDictHandle:
|
|
1240
|
+
self.target_scope.markAsEscaped()
|
|
1241
|
+
|
|
1242
|
+
def getTargetDictScope(self):
|
|
1243
|
+
return self.target_scope
|
|
1244
|
+
|
|
1245
|
+
def computeStatementOperation(self, trace_collection):
|
|
1246
|
+
trace_collection.onLocalsDictEscaped(self.target_scope)
|
|
1247
|
+
|
|
1248
|
+
# Need to invalidate everything, and everything could be assigned to
|
|
1249
|
+
# something else now.
|
|
1250
|
+
trace_collection.removeAllKnowledge()
|
|
1251
|
+
|
|
1252
|
+
# We could always encounter that __all__ is a strange beast and causes
|
|
1253
|
+
# the exception.
|
|
1254
|
+
trace_collection.onExceptionRaiseExit(BaseException)
|
|
1255
|
+
|
|
1256
|
+
return self, None, None
|
|
1257
|
+
|
|
1258
|
+
@staticmethod
|
|
1259
|
+
def mayRaiseException(exception_type):
|
|
1260
|
+
# Not done. TODO: Later we can try and check for "__all__" if it
|
|
1261
|
+
# really can be that way.
|
|
1262
|
+
return True
|
|
1263
|
+
|
|
1264
|
+
@staticmethod
|
|
1265
|
+
def getStatementNiceName():
|
|
1266
|
+
return "star import statement"
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
class ExpressionImportName(ChildHavingModuleMixin, ExpressionBase):
|
|
1270
|
+
kind = "EXPRESSION_IMPORT_NAME"
|
|
1271
|
+
|
|
1272
|
+
named_children = ("module",)
|
|
1273
|
+
|
|
1274
|
+
__slots__ = ("import_name", "level")
|
|
1275
|
+
|
|
1276
|
+
def __init__(self, module, import_name, level, source_ref):
|
|
1277
|
+
ChildHavingModuleMixin.__init__(self, module=module)
|
|
1278
|
+
|
|
1279
|
+
ExpressionBase.__init__(self, source_ref)
|
|
1280
|
+
|
|
1281
|
+
self.import_name = import_name
|
|
1282
|
+
self.level = level
|
|
1283
|
+
|
|
1284
|
+
# Not allowed.
|
|
1285
|
+
assert level is not None
|
|
1286
|
+
|
|
1287
|
+
assert module is not None
|
|
1288
|
+
|
|
1289
|
+
def getImportName(self):
|
|
1290
|
+
return self.import_name
|
|
1291
|
+
|
|
1292
|
+
def getImportLevel(self):
|
|
1293
|
+
return self.level
|
|
1294
|
+
|
|
1295
|
+
def getDetails(self):
|
|
1296
|
+
return {"import_name": self.import_name, "level": self.level}
|
|
1297
|
+
|
|
1298
|
+
def computeExpression(self, trace_collection):
|
|
1299
|
+
return self.subnode_module.computeExpressionImportName(
|
|
1300
|
+
import_node=self,
|
|
1301
|
+
import_name=self.import_name,
|
|
1302
|
+
trace_collection=trace_collection,
|
|
1303
|
+
)
|
|
1304
|
+
|
|
1305
|
+
def mayRaiseException(self, exception_type):
|
|
1306
|
+
return self.subnode_module.mayRaiseExceptionImportName(
|
|
1307
|
+
exception_type=exception_type, import_name=self.import_name
|
|
1308
|
+
)
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
def makeExpressionImportModuleFixed(
|
|
1312
|
+
using_module_name, module_name, value_name, source_ref
|
|
1313
|
+
):
|
|
1314
|
+
module_name = resolveModuleName(module_name)
|
|
1315
|
+
value_name = resolveModuleName(value_name)
|
|
1316
|
+
|
|
1317
|
+
if isHardModule(module_name):
|
|
1318
|
+
return ExpressionImportModuleHard(
|
|
1319
|
+
using_module_name=using_module_name,
|
|
1320
|
+
module_name=module_name,
|
|
1321
|
+
value_name=value_name,
|
|
1322
|
+
source_ref=source_ref,
|
|
1323
|
+
)
|
|
1324
|
+
else:
|
|
1325
|
+
return ExpressionImportModuleFixed(
|
|
1326
|
+
module_name=module_name,
|
|
1327
|
+
value_name=value_name,
|
|
1328
|
+
source_ref=source_ref,
|
|
1329
|
+
)
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
def makeExpressionImportModuleBuiltin(
|
|
1333
|
+
using_module_name, module_name, value_name, source_ref
|
|
1334
|
+
):
|
|
1335
|
+
module_name = resolveModuleName(module_name)
|
|
1336
|
+
value_name = resolveModuleName(value_name)
|
|
1337
|
+
|
|
1338
|
+
if isHardModule(module_name):
|
|
1339
|
+
return ExpressionImportModuleHard(
|
|
1340
|
+
using_module_name=using_module_name,
|
|
1341
|
+
module_name=module_name,
|
|
1342
|
+
value_name=value_name,
|
|
1343
|
+
source_ref=source_ref,
|
|
1344
|
+
)
|
|
1345
|
+
else:
|
|
1346
|
+
return ExpressionImportModuleBuiltin(
|
|
1347
|
+
module_name=module_name,
|
|
1348
|
+
value_name=value_name,
|
|
1349
|
+
source_ref=source_ref,
|
|
1350
|
+
)
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1354
|
+
# integrates with CPython, but also works on its own.
|
|
1355
|
+
#
|
|
1356
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1357
|
+
# you may not use this file except in compliance with the License.
|
|
1358
|
+
# You may obtain a copy of the License at
|
|
1359
|
+
#
|
|
1360
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1361
|
+
#
|
|
1362
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1363
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1364
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1365
|
+
# See the License for the specific language governing permissions and
|
|
1366
|
+
# limitations under the License.
|