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
nuitka/tree/Building.py
ADDED
|
@@ -0,0 +1,1459 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Build the internal node tree from source code.
|
|
5
|
+
|
|
6
|
+
Does all the Python parsing and puts it into a tree structure for use in later
|
|
7
|
+
stages of the compilation process.
|
|
8
|
+
|
|
9
|
+
In the "nuitka.tree.TreeHelpers" module, the dispatching is happening. One function
|
|
10
|
+
deals with every node kind as found in the AST. The parsing is centered around
|
|
11
|
+
the module "ast" output.
|
|
12
|
+
|
|
13
|
+
Many higher level language features and translated into lower level ones.
|
|
14
|
+
|
|
15
|
+
In-place assignments, for loops, while loops, classes, complex calls, with
|
|
16
|
+
statements, and even or/and etc. are all translated to simpler constructs.
|
|
17
|
+
|
|
18
|
+
The output of this module is a node tree, which contains only relatively low
|
|
19
|
+
level operations. A property of the output is also an overlaid tree of provider
|
|
20
|
+
structure that indicates variable provision.
|
|
21
|
+
|
|
22
|
+
Classes are handled in a separate module. They are re-formulated into functions
|
|
23
|
+
producing dictionaries used to call the metaclass with.
|
|
24
|
+
|
|
25
|
+
Try/except/else statements are handled in a separate module. They are
|
|
26
|
+
re-formulated into using a temporary variable to track if the else branch
|
|
27
|
+
should execute.
|
|
28
|
+
|
|
29
|
+
Try/finally statements are handled in a separate module. They are re-formulated
|
|
30
|
+
to use a nested try/finally for (un)publishing the exception for Python3.
|
|
31
|
+
|
|
32
|
+
With statements are handled in a separate module. They are re-formulated into
|
|
33
|
+
special attribute lookups for "__enter__" and "__exit__", calls of them,
|
|
34
|
+
catching and passing in exceptions raised.
|
|
35
|
+
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
import marshal
|
|
39
|
+
import os
|
|
40
|
+
|
|
41
|
+
from nuitka import ModuleRegistry, OutputDirectories, SourceCodeReferences
|
|
42
|
+
from nuitka.__past__ import long, unicode
|
|
43
|
+
from nuitka.BytecodeCaching import (
|
|
44
|
+
getCachedImportedModuleUsageAttempts,
|
|
45
|
+
hasCachedImportedModuleUsageAttempts,
|
|
46
|
+
)
|
|
47
|
+
from nuitka.Bytecodes import loadCodeObjectData
|
|
48
|
+
from nuitka.containers.OrderedSets import OrderedSet
|
|
49
|
+
from nuitka.Errors import CodeTooComplexCode
|
|
50
|
+
from nuitka.freezer.ImportDetection import (
|
|
51
|
+
detectEarlyImports,
|
|
52
|
+
detectStdlibAutoInclusionModules,
|
|
53
|
+
)
|
|
54
|
+
from nuitka.importing import Importing
|
|
55
|
+
from nuitka.importing.ImportCache import addImportedModule
|
|
56
|
+
from nuitka.importing.PreloadedPackages import getPthImportedPackages
|
|
57
|
+
from nuitka.importing.StandardLibrary import isStandardLibraryPath
|
|
58
|
+
from nuitka.nodes.AttributeNodes import (
|
|
59
|
+
StatementAssignmentAttribute,
|
|
60
|
+
makeExpressionAttributeLookup,
|
|
61
|
+
)
|
|
62
|
+
from nuitka.nodes.BuiltinFormatNodes import (
|
|
63
|
+
ExpressionBuiltinAscii,
|
|
64
|
+
ExpressionBuiltinFormat,
|
|
65
|
+
)
|
|
66
|
+
from nuitka.nodes.BuiltinRefNodes import quick_names
|
|
67
|
+
from nuitka.nodes.BuiltinTypeNodes import ExpressionBuiltinStrP3
|
|
68
|
+
from nuitka.nodes.ConditionalNodes import (
|
|
69
|
+
ExpressionConditional,
|
|
70
|
+
makeStatementConditional,
|
|
71
|
+
)
|
|
72
|
+
from nuitka.nodes.ConstantRefNodes import (
|
|
73
|
+
ExpressionConstantEllipsisRef,
|
|
74
|
+
ExpressionConstantNoneRef,
|
|
75
|
+
makeConstantRefNode,
|
|
76
|
+
)
|
|
77
|
+
from nuitka.nodes.ExceptionNodes import StatementRaiseException
|
|
78
|
+
from nuitka.nodes.FutureSpecs import FutureSpec
|
|
79
|
+
from nuitka.nodes.GeneratorNodes import (
|
|
80
|
+
StatementGeneratorReturn,
|
|
81
|
+
StatementGeneratorReturnNone,
|
|
82
|
+
)
|
|
83
|
+
from nuitka.nodes.ImportNodes import (
|
|
84
|
+
isHardModuleWithoutSideEffect,
|
|
85
|
+
makeExpressionImportModuleFixed,
|
|
86
|
+
)
|
|
87
|
+
from nuitka.nodes.LoopNodes import StatementLoopBreak, StatementLoopContinue
|
|
88
|
+
from nuitka.nodes.ModuleAttributeNodes import (
|
|
89
|
+
ExpressionModuleAttributeFileRef,
|
|
90
|
+
ExpressionModuleAttributeSpecRef,
|
|
91
|
+
)
|
|
92
|
+
from nuitka.nodes.ModuleNodes import (
|
|
93
|
+
CompiledPythonModule,
|
|
94
|
+
CompiledPythonPackage,
|
|
95
|
+
PythonExtensionModule,
|
|
96
|
+
PythonMainModule,
|
|
97
|
+
makeUncompiledPythonModule,
|
|
98
|
+
)
|
|
99
|
+
from nuitka.nodes.NodeMakingHelpers import (
|
|
100
|
+
makeRaiseExceptionStatementFromInstance,
|
|
101
|
+
)
|
|
102
|
+
from nuitka.nodes.OperatorNodes import makeBinaryOperationNode
|
|
103
|
+
from nuitka.nodes.OperatorNodesUnary import makeExpressionOperationUnary
|
|
104
|
+
from nuitka.nodes.ReturnNodes import makeStatementReturn
|
|
105
|
+
from nuitka.nodes.SliceNodes import makeExpressionBuiltinSlice
|
|
106
|
+
from nuitka.nodes.StatementNodes import StatementExpressionOnly
|
|
107
|
+
from nuitka.nodes.StringConcatenationNodes import ExpressionStringConcatenation
|
|
108
|
+
from nuitka.nodes.VariableNameNodes import (
|
|
109
|
+
ExpressionVariableNameRef,
|
|
110
|
+
StatementAssignmentVariableName,
|
|
111
|
+
)
|
|
112
|
+
from nuitka.optimizations.BytecodeDemotion import demoteSourceCodeToBytecode
|
|
113
|
+
from nuitka.Options import (
|
|
114
|
+
getMainEntryPointFilenames,
|
|
115
|
+
hasPythonFlagNoSite,
|
|
116
|
+
hasPythonFlagPackageMode,
|
|
117
|
+
isShowMemory,
|
|
118
|
+
isStandaloneMode,
|
|
119
|
+
shallDisableBytecodeCacheUsage,
|
|
120
|
+
shallMakeModule,
|
|
121
|
+
shallWarnUnusualCode,
|
|
122
|
+
)
|
|
123
|
+
from nuitka.pgo.PGO import decideCompilationFromPGO
|
|
124
|
+
from nuitka.plugins.Plugins import Plugins
|
|
125
|
+
from nuitka.PythonVersions import python_version
|
|
126
|
+
from nuitka.Tracing import (
|
|
127
|
+
general,
|
|
128
|
+
optimization_logger,
|
|
129
|
+
plugins_logger,
|
|
130
|
+
recursion_logger,
|
|
131
|
+
unusual_logger,
|
|
132
|
+
)
|
|
133
|
+
from nuitka.utils import MemoryUsage
|
|
134
|
+
from nuitka.utils.ModuleNames import ModuleName
|
|
135
|
+
from nuitka.utils.Utils import withNoSyntaxWarning
|
|
136
|
+
|
|
137
|
+
from . import SyntaxErrors
|
|
138
|
+
from .FutureSpecState import getFutureSpec, popFutureSpec, pushFutureSpec
|
|
139
|
+
from .ReformulationAssertStatements import buildAssertNode
|
|
140
|
+
from .ReformulationAssignmentStatements import (
|
|
141
|
+
buildAnnAssignNode,
|
|
142
|
+
buildAssignNode,
|
|
143
|
+
buildDeleteNode,
|
|
144
|
+
buildInplaceAssignNode,
|
|
145
|
+
buildNamedExprNode,
|
|
146
|
+
buildTypeAliasNode,
|
|
147
|
+
buildTypeVarNode,
|
|
148
|
+
)
|
|
149
|
+
from .ReformulationBooleanExpressions import buildBoolOpNode
|
|
150
|
+
from .ReformulationCallExpressions import buildCallNode
|
|
151
|
+
from .ReformulationClasses import buildClassNode
|
|
152
|
+
from .ReformulationComparisonExpressions import buildComparisonNode
|
|
153
|
+
from .ReformulationContractionExpressions import (
|
|
154
|
+
buildDictContractionNode,
|
|
155
|
+
buildGeneratorExpressionNode,
|
|
156
|
+
buildListContractionNode,
|
|
157
|
+
buildSetContractionNode,
|
|
158
|
+
)
|
|
159
|
+
from .ReformulationDictionaryCreation import buildDictionaryNode
|
|
160
|
+
from .ReformulationExecStatements import buildExecNode
|
|
161
|
+
from .ReformulationForLoopStatements import (
|
|
162
|
+
buildAsyncForLoopNode,
|
|
163
|
+
buildForLoopNode,
|
|
164
|
+
)
|
|
165
|
+
from .ReformulationFunctionStatements import (
|
|
166
|
+
buildAsyncFunctionNode,
|
|
167
|
+
buildFunctionNode,
|
|
168
|
+
)
|
|
169
|
+
from .ReformulationImportStatements import (
|
|
170
|
+
buildImportFromNode,
|
|
171
|
+
buildImportModulesNode,
|
|
172
|
+
checkFutureImportsOnlyAtStart,
|
|
173
|
+
)
|
|
174
|
+
from .ReformulationLambdaExpressions import buildLambdaNode
|
|
175
|
+
from .ReformulationMatchStatements import buildMatchNode
|
|
176
|
+
from .ReformulationNamespacePackages import (
|
|
177
|
+
createNamespacePackage,
|
|
178
|
+
createPathAssignment,
|
|
179
|
+
)
|
|
180
|
+
from .ReformulationPrintStatements import buildPrintNode
|
|
181
|
+
from .ReformulationSequenceCreation import (
|
|
182
|
+
buildListCreationNode,
|
|
183
|
+
buildSetCreationNode,
|
|
184
|
+
buildTupleCreationNode,
|
|
185
|
+
)
|
|
186
|
+
from .ReformulationSubscriptExpressions import buildSubscriptNode
|
|
187
|
+
from .ReformulationTryExceptStatements import (
|
|
188
|
+
buildTryExceptionNode,
|
|
189
|
+
buildTryStarExceptionNode,
|
|
190
|
+
)
|
|
191
|
+
from .ReformulationTryFinallyStatements import buildTryFinallyNode
|
|
192
|
+
from .ReformulationWhileLoopStatements import buildWhileLoopNode
|
|
193
|
+
from .ReformulationWithStatements import buildAsyncWithNode, buildWithNode
|
|
194
|
+
from .ReformulationYieldExpressions import (
|
|
195
|
+
buildAwaitNode,
|
|
196
|
+
buildYieldFromNode,
|
|
197
|
+
buildYieldNode,
|
|
198
|
+
)
|
|
199
|
+
from .SourceHandling import (
|
|
200
|
+
checkPythonVersionFromCode,
|
|
201
|
+
getSourceCodeDiff,
|
|
202
|
+
readSourceCodeFromFilenameWithInformation,
|
|
203
|
+
)
|
|
204
|
+
from .TreeHelpers import (
|
|
205
|
+
buildNode,
|
|
206
|
+
buildNodeTuple,
|
|
207
|
+
buildStatementsNode,
|
|
208
|
+
extractDocFromBody,
|
|
209
|
+
getBuildContext,
|
|
210
|
+
getKind,
|
|
211
|
+
makeModuleFrame,
|
|
212
|
+
makeReraiseExceptionStatement,
|
|
213
|
+
makeStatementsSequence,
|
|
214
|
+
makeStatementsSequenceFromStatement,
|
|
215
|
+
mangleName,
|
|
216
|
+
mergeStatements,
|
|
217
|
+
parseSourceCodeToAst,
|
|
218
|
+
setBuildingDispatchers,
|
|
219
|
+
)
|
|
220
|
+
from .VariableClosure import completeVariableClosures
|
|
221
|
+
|
|
222
|
+
if str is not bytes:
|
|
223
|
+
|
|
224
|
+
def buildVariableReferenceNode(provider, node, source_ref):
|
|
225
|
+
# Shortcut for Python3, which gives syntax errors for assigning these.
|
|
226
|
+
if node.id in quick_names:
|
|
227
|
+
return makeConstantRefNode(
|
|
228
|
+
constant=quick_names[node.id], source_ref=source_ref
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
return ExpressionVariableNameRef(
|
|
232
|
+
provider=provider,
|
|
233
|
+
variable_name=mangleName(node.id, provider),
|
|
234
|
+
source_ref=source_ref,
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
else:
|
|
238
|
+
|
|
239
|
+
def buildVariableReferenceNode(provider, node, source_ref):
|
|
240
|
+
return ExpressionVariableNameRef(
|
|
241
|
+
provider=provider,
|
|
242
|
+
variable_name=mangleName(node.id, provider),
|
|
243
|
+
source_ref=source_ref,
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
# Python3.4 or higher, True and False, are not given as variables anymore.
|
|
248
|
+
# Python3.8, all kinds of constants are like this.
|
|
249
|
+
def buildNamedConstantNode(node, source_ref):
|
|
250
|
+
return makeConstantRefNode(
|
|
251
|
+
constant=node.value, source_ref=source_ref, user_provided=True
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def buildConditionNode(provider, node, source_ref):
|
|
256
|
+
# Conditional statements may have one or two branches. We will never see an
|
|
257
|
+
# "elif", because that's already dealt with by module "ast", which turns it
|
|
258
|
+
# into nested conditional statements. spell-checker: ignore orelse
|
|
259
|
+
|
|
260
|
+
return makeStatementConditional(
|
|
261
|
+
condition=buildNode(provider, node.test, source_ref),
|
|
262
|
+
yes_branch=buildStatementsNode(
|
|
263
|
+
provider=provider, nodes=node.body, source_ref=source_ref
|
|
264
|
+
),
|
|
265
|
+
no_branch=buildStatementsNode(
|
|
266
|
+
provider=provider,
|
|
267
|
+
nodes=node.orelse if node.orelse else None,
|
|
268
|
+
source_ref=source_ref,
|
|
269
|
+
),
|
|
270
|
+
source_ref=source_ref,
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
def buildTryFinallyNode2(provider, node, source_ref):
|
|
275
|
+
# Try/finally node statements of old style.
|
|
276
|
+
|
|
277
|
+
return buildTryFinallyNode(
|
|
278
|
+
provider=provider,
|
|
279
|
+
build_tried=lambda: buildStatementsNode(
|
|
280
|
+
provider=provider, nodes=node.body, source_ref=source_ref
|
|
281
|
+
),
|
|
282
|
+
node=node,
|
|
283
|
+
source_ref=source_ref,
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def buildTryNode(provider, node, source_ref):
|
|
288
|
+
# Note: This variant is used for Python3 only, older stuff uses the above
|
|
289
|
+
# ones, this one merges try/except with try/finally in the "ast". We split
|
|
290
|
+
# it up again, as it's logically separated of course.
|
|
291
|
+
|
|
292
|
+
# Shortcut missing try/finally.
|
|
293
|
+
if not node.handlers:
|
|
294
|
+
return buildTryFinallyNode2(provider, node, source_ref)
|
|
295
|
+
|
|
296
|
+
if not node.finalbody: # spell-checker: ignore finalbody
|
|
297
|
+
return buildTryExceptionNode(
|
|
298
|
+
provider=provider, node=node, source_ref=source_ref
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
return buildTryFinallyNode(
|
|
302
|
+
provider=provider,
|
|
303
|
+
build_tried=lambda: makeStatementsSequence(
|
|
304
|
+
statements=mergeStatements(
|
|
305
|
+
(
|
|
306
|
+
buildTryExceptionNode(
|
|
307
|
+
provider=provider, node=node, source_ref=source_ref
|
|
308
|
+
),
|
|
309
|
+
),
|
|
310
|
+
allow_none=True,
|
|
311
|
+
),
|
|
312
|
+
allow_none=True,
|
|
313
|
+
source_ref=source_ref,
|
|
314
|
+
),
|
|
315
|
+
node=node,
|
|
316
|
+
source_ref=source_ref,
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def buildTryStarNode(provider, node, source_ref):
|
|
321
|
+
# Note: This variant is used for Python3.11 or higher only, where an exception
|
|
322
|
+
# group is caught. Mixing groups and non-group catches is not allowed.
|
|
323
|
+
|
|
324
|
+
# Without handlers, this would not be used, but instead "Try" would be used,
|
|
325
|
+
# but assert against it.
|
|
326
|
+
assert node.handlers
|
|
327
|
+
|
|
328
|
+
if not node.finalbody: # spell-checker: ignore finalbody
|
|
329
|
+
return buildTryStarExceptionNode(
|
|
330
|
+
provider=provider, node=node, source_ref=source_ref
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
return buildTryFinallyNode(
|
|
334
|
+
provider=provider,
|
|
335
|
+
build_tried=lambda: makeStatementsSequence(
|
|
336
|
+
statements=mergeStatements(
|
|
337
|
+
(
|
|
338
|
+
buildTryStarExceptionNode(
|
|
339
|
+
provider=provider, node=node, source_ref=source_ref
|
|
340
|
+
),
|
|
341
|
+
),
|
|
342
|
+
allow_none=True,
|
|
343
|
+
),
|
|
344
|
+
allow_none=True,
|
|
345
|
+
source_ref=source_ref,
|
|
346
|
+
),
|
|
347
|
+
node=node,
|
|
348
|
+
source_ref=source_ref,
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
def buildRaiseNode(provider, node, source_ref):
|
|
353
|
+
# Raise statements. Under Python2 they may have type, value and traceback
|
|
354
|
+
# attached, for Python3, you can only give type (actually value) and cause.
|
|
355
|
+
# spell-checker: ignore tback
|
|
356
|
+
if python_version < 0x300:
|
|
357
|
+
exception_type = buildNode(provider, node.type, source_ref, allow_none=True)
|
|
358
|
+
exception_value = buildNode(provider, node.inst, source_ref, allow_none=True)
|
|
359
|
+
exception_trace = buildNode(provider, node.tback, source_ref, allow_none=True)
|
|
360
|
+
exception_cause = None
|
|
361
|
+
else:
|
|
362
|
+
exception_type = buildNode(provider, node.exc, source_ref, allow_none=True)
|
|
363
|
+
exception_value = None
|
|
364
|
+
exception_trace = None
|
|
365
|
+
exception_cause = buildNode(provider, node.cause, source_ref, allow_none=True)
|
|
366
|
+
|
|
367
|
+
if exception_type is None:
|
|
368
|
+
assert exception_value is None
|
|
369
|
+
assert exception_trace is None
|
|
370
|
+
assert exception_cause is None
|
|
371
|
+
|
|
372
|
+
result = makeReraiseExceptionStatement(source_ref=source_ref)
|
|
373
|
+
else:
|
|
374
|
+
result = StatementRaiseException(
|
|
375
|
+
exception_type=exception_type,
|
|
376
|
+
exception_value=exception_value,
|
|
377
|
+
exception_trace=exception_trace,
|
|
378
|
+
exception_cause=exception_cause,
|
|
379
|
+
source_ref=source_ref,
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
if exception_cause is not None:
|
|
383
|
+
result.setCompatibleSourceReference(
|
|
384
|
+
source_ref=exception_cause.getCompatibleSourceReference()
|
|
385
|
+
)
|
|
386
|
+
elif exception_trace is not None:
|
|
387
|
+
result.setCompatibleSourceReference(
|
|
388
|
+
source_ref=exception_trace.getCompatibleSourceReference()
|
|
389
|
+
)
|
|
390
|
+
elif exception_value is not None:
|
|
391
|
+
result.setCompatibleSourceReference(
|
|
392
|
+
source_ref=exception_value.getCompatibleSourceReference()
|
|
393
|
+
)
|
|
394
|
+
elif exception_type is not None:
|
|
395
|
+
result.setCompatibleSourceReference(
|
|
396
|
+
source_ref=exception_type.getCompatibleSourceReference()
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
return result
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
def handleGlobalDeclarationNode(provider, node, source_ref):
|
|
403
|
+
# On the module level, there is nothing to do.
|
|
404
|
+
if provider.isCompiledPythonModule():
|
|
405
|
+
if shallWarnUnusualCode():
|
|
406
|
+
unusual_logger.warning(
|
|
407
|
+
"%s: Using 'global' statement on module level has no effect."
|
|
408
|
+
% source_ref.getAsString(),
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
return None
|
|
412
|
+
|
|
413
|
+
# Need to catch the error of declaring a parameter variable as global
|
|
414
|
+
# ourselves here. The AST parsing doesn't catch it, so we check here.
|
|
415
|
+
if provider.isExpressionFunctionBody():
|
|
416
|
+
parameters = provider.getParameters()
|
|
417
|
+
|
|
418
|
+
for variable_name in node.names:
|
|
419
|
+
if variable_name in parameters.getParameterNames():
|
|
420
|
+
SyntaxErrors.raiseSyntaxError(
|
|
421
|
+
"name '%s' is %s and global"
|
|
422
|
+
% (
|
|
423
|
+
variable_name,
|
|
424
|
+
"local" if python_version < 0x300 else "parameter",
|
|
425
|
+
),
|
|
426
|
+
source_ref.atColumnNumber(node.col_offset),
|
|
427
|
+
)
|
|
428
|
+
|
|
429
|
+
# The module the "global" statement refers to.
|
|
430
|
+
module = provider.getParentModule()
|
|
431
|
+
|
|
432
|
+
# Can give multiple names.
|
|
433
|
+
for variable_name in node.names:
|
|
434
|
+
closure_variable = None
|
|
435
|
+
|
|
436
|
+
# Reuse already taken global variables, in order to avoid creating yet
|
|
437
|
+
# another instance, esp. as the indications could then potentially not
|
|
438
|
+
# be shared.
|
|
439
|
+
if provider.hasTakenVariable(variable_name):
|
|
440
|
+
closure_variable = provider.getTakenVariable(variable_name)
|
|
441
|
+
|
|
442
|
+
# Only global variables count. Could have a closure reference to
|
|
443
|
+
# a location of a parent function here.
|
|
444
|
+
if not closure_variable.isModuleVariable():
|
|
445
|
+
closure_variable = None
|
|
446
|
+
|
|
447
|
+
if closure_variable is None:
|
|
448
|
+
module_variable = module.getVariableForAssignment(
|
|
449
|
+
variable_name=variable_name
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
closure_variable = provider.addClosureVariable(variable=module_variable)
|
|
453
|
+
|
|
454
|
+
assert closure_variable.isModuleVariable()
|
|
455
|
+
|
|
456
|
+
# Special case, since Python 3.5 it is allowed to use global on the "__class__"
|
|
457
|
+
# variable as well, but it's not changing visibility of implicit "__class__" of
|
|
458
|
+
# functions, and as such it will just not be registered.
|
|
459
|
+
if (
|
|
460
|
+
provider.isExpressionClassBodyBase()
|
|
461
|
+
and closure_variable.getName() == "__class__"
|
|
462
|
+
):
|
|
463
|
+
if python_version < 0x300:
|
|
464
|
+
SyntaxErrors.raiseSyntaxError(
|
|
465
|
+
"cannot make __class__ global", source_ref
|
|
466
|
+
)
|
|
467
|
+
else:
|
|
468
|
+
provider.getLocalsScope().registerClosureVariable(
|
|
469
|
+
variable=closure_variable,
|
|
470
|
+
)
|
|
471
|
+
|
|
472
|
+
# Drop this, not really part of our tree.
|
|
473
|
+
return None
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def handleNonlocalDeclarationNode(provider, node, source_ref):
|
|
477
|
+
# Need to catch the error of declaring a parameter variable as global
|
|
478
|
+
# ourselves here. The AST parsing doesn't catch it, but we can do it here.
|
|
479
|
+
parameter_provider = provider
|
|
480
|
+
|
|
481
|
+
while (
|
|
482
|
+
parameter_provider.isExpressionGeneratorObjectBody()
|
|
483
|
+
or parameter_provider.isExpressionCoroutineObjectBody()
|
|
484
|
+
or parameter_provider.isExpressionAsyncgenObjectBody()
|
|
485
|
+
):
|
|
486
|
+
parameter_provider = parameter_provider.getParentVariableProvider()
|
|
487
|
+
|
|
488
|
+
if parameter_provider.isExpressionClassBodyBase():
|
|
489
|
+
parameter_names = ()
|
|
490
|
+
else:
|
|
491
|
+
parameter_names = parameter_provider.getParameters().getParameterNames()
|
|
492
|
+
|
|
493
|
+
for variable_name in node.names:
|
|
494
|
+
if variable_name in parameter_names:
|
|
495
|
+
SyntaxErrors.raiseSyntaxError(
|
|
496
|
+
"name '%s' is parameter and nonlocal" % (variable_name),
|
|
497
|
+
source_ref.atColumnNumber(node.col_offset),
|
|
498
|
+
)
|
|
499
|
+
|
|
500
|
+
provider.addNonlocalsDeclaration(
|
|
501
|
+
names=tuple(node.names),
|
|
502
|
+
user_provided=True,
|
|
503
|
+
source_ref=source_ref.atColumnNumber(node.col_offset),
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
# Drop this, not really part of our tree.
|
|
507
|
+
return None
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
def buildStringNode(node, source_ref):
|
|
511
|
+
assert type(node.s) in (str, unicode)
|
|
512
|
+
|
|
513
|
+
return makeConstantRefNode(
|
|
514
|
+
constant=node.s, source_ref=source_ref, user_provided=True
|
|
515
|
+
)
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
def buildNumberNode(node, source_ref):
|
|
519
|
+
assert type(node.n) in (int, long, float, complex), type(node.n)
|
|
520
|
+
|
|
521
|
+
return makeConstantRefNode(
|
|
522
|
+
constant=node.n, source_ref=source_ref, user_provided=True
|
|
523
|
+
)
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
def buildBytesNode(node, source_ref):
|
|
527
|
+
return makeConstantRefNode(
|
|
528
|
+
constant=node.s, source_ref=source_ref, user_provided=True
|
|
529
|
+
)
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
def buildEllipsisNode(source_ref):
|
|
533
|
+
return ExpressionConstantEllipsisRef(source_ref=source_ref)
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
def buildStatementLoopContinue(node, source_ref):
|
|
537
|
+
source_ref = source_ref.atColumnNumber(node.col_offset)
|
|
538
|
+
|
|
539
|
+
# Python forbids this, although technically it's probably not much of
|
|
540
|
+
# an issue.
|
|
541
|
+
if getBuildContext() == "finally" and python_version < 0x380:
|
|
542
|
+
SyntaxErrors.raiseSyntaxError(
|
|
543
|
+
"'continue' not supported inside 'finally' clause", source_ref
|
|
544
|
+
)
|
|
545
|
+
|
|
546
|
+
return StatementLoopContinue(source_ref=source_ref)
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
def buildStatementLoopBreak(provider, node, source_ref):
|
|
550
|
+
# A bit unusual, we need the provider, but not the node,
|
|
551
|
+
# pylint: disable=unused-argument
|
|
552
|
+
|
|
553
|
+
return StatementLoopBreak(source_ref=source_ref.atColumnNumber(node.col_offset))
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
def buildAttributeNode(provider, node, source_ref):
|
|
557
|
+
return makeExpressionAttributeLookup(
|
|
558
|
+
expression=buildNode(provider, node.value, source_ref),
|
|
559
|
+
attribute_name=mangleName(node.attr, provider),
|
|
560
|
+
source_ref=source_ref,
|
|
561
|
+
)
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
def buildReturnNode(provider, node, source_ref):
|
|
565
|
+
if provider.isExpressionClassBodyBase() or provider.isCompiledPythonModule():
|
|
566
|
+
SyntaxErrors.raiseSyntaxError(
|
|
567
|
+
"'return' outside function", source_ref.atColumnNumber(node.col_offset)
|
|
568
|
+
)
|
|
569
|
+
|
|
570
|
+
expression = buildNode(provider, node.value, source_ref, allow_none=True)
|
|
571
|
+
|
|
572
|
+
if provider.isExpressionGeneratorObjectBody():
|
|
573
|
+
if expression is not None and python_version < 0x300:
|
|
574
|
+
SyntaxErrors.raiseSyntaxError(
|
|
575
|
+
"'return' with argument inside generator",
|
|
576
|
+
source_ref.atColumnNumber(node.col_offset),
|
|
577
|
+
)
|
|
578
|
+
|
|
579
|
+
if provider.isExpressionAsyncgenObjectBody():
|
|
580
|
+
if expression is not None:
|
|
581
|
+
SyntaxErrors.raiseSyntaxError(
|
|
582
|
+
"'return' with value in async generator",
|
|
583
|
+
source_ref.atColumnNumber(node.col_offset),
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
if (
|
|
587
|
+
provider.isExpressionGeneratorObjectBody()
|
|
588
|
+
or provider.isExpressionAsyncgenObjectBody()
|
|
589
|
+
):
|
|
590
|
+
if expression is None or expression.isExpressionConstantNoneRef():
|
|
591
|
+
return StatementGeneratorReturnNone(source_ref=source_ref)
|
|
592
|
+
else:
|
|
593
|
+
return StatementGeneratorReturn(
|
|
594
|
+
expression=expression, source_ref=source_ref
|
|
595
|
+
)
|
|
596
|
+
else:
|
|
597
|
+
return makeStatementReturn(expression=expression, source_ref=source_ref)
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
def buildExprOnlyNode(provider, node, source_ref):
|
|
601
|
+
result = StatementExpressionOnly(
|
|
602
|
+
expression=buildNode(provider, node.value, source_ref), source_ref=source_ref
|
|
603
|
+
)
|
|
604
|
+
|
|
605
|
+
result.setCompatibleSourceReference(
|
|
606
|
+
result.subnode_expression.getCompatibleSourceReference()
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
return result
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
def buildUnaryOpNode(provider, node, source_ref):
|
|
613
|
+
operator = getKind(node.op)
|
|
614
|
+
|
|
615
|
+
# Delegate this one to boolean operation code.
|
|
616
|
+
if operator == "Not":
|
|
617
|
+
return buildBoolOpNode(provider=provider, node=node, source_ref=source_ref)
|
|
618
|
+
|
|
619
|
+
operand = buildNode(provider, node.operand, source_ref)
|
|
620
|
+
|
|
621
|
+
return makeExpressionOperationUnary(
|
|
622
|
+
operator=operator, operand=operand, source_ref=source_ref
|
|
623
|
+
)
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
def buildBinaryOpNode(provider, node, source_ref):
|
|
627
|
+
operator = getKind(node.op)
|
|
628
|
+
|
|
629
|
+
if operator == "Div":
|
|
630
|
+
operator = "TrueDiv" if getFutureSpec().isFutureDivision() else "OldDiv"
|
|
631
|
+
|
|
632
|
+
left = buildNode(provider, node.left, source_ref)
|
|
633
|
+
right = buildNode(provider, node.right, source_ref)
|
|
634
|
+
|
|
635
|
+
result = makeBinaryOperationNode(
|
|
636
|
+
operator=operator, left=left, right=right, source_ref=source_ref
|
|
637
|
+
)
|
|
638
|
+
|
|
639
|
+
result.setCompatibleSourceReference(source_ref=right.getCompatibleSourceReference())
|
|
640
|
+
|
|
641
|
+
return result
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
def buildReprNode(provider, node, source_ref):
|
|
645
|
+
return makeExpressionOperationUnary(
|
|
646
|
+
operator="Repr",
|
|
647
|
+
operand=buildNode(provider, node.value, source_ref),
|
|
648
|
+
source_ref=source_ref,
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
def buildConditionalExpressionNode(provider, node, source_ref):
|
|
653
|
+
return ExpressionConditional(
|
|
654
|
+
condition=buildNode(provider, node.test, source_ref),
|
|
655
|
+
expression_yes=buildNode(provider, node.body, source_ref),
|
|
656
|
+
expression_no=buildNode(provider, node.orelse, source_ref),
|
|
657
|
+
source_ref=source_ref,
|
|
658
|
+
)
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
def buildFormattedValueNode(provider, node, source_ref):
|
|
662
|
+
value = buildNode(provider, node.value, source_ref)
|
|
663
|
+
|
|
664
|
+
conversion = node.conversion % 4 if node.conversion > 0 else 0
|
|
665
|
+
|
|
666
|
+
if conversion == 0:
|
|
667
|
+
pass
|
|
668
|
+
elif conversion == 3:
|
|
669
|
+
# TODO: We might start using this for Python2 too.
|
|
670
|
+
assert str is not bytes
|
|
671
|
+
|
|
672
|
+
value = ExpressionBuiltinStrP3(
|
|
673
|
+
value=value, encoding=None, errors=None, source_ref=source_ref
|
|
674
|
+
)
|
|
675
|
+
elif conversion == 2:
|
|
676
|
+
value = makeExpressionOperationUnary(
|
|
677
|
+
operator="Repr", operand=value, source_ref=source_ref
|
|
678
|
+
)
|
|
679
|
+
elif conversion == 1:
|
|
680
|
+
value = ExpressionBuiltinAscii(value=value, source_ref=source_ref)
|
|
681
|
+
else:
|
|
682
|
+
assert False, conversion
|
|
683
|
+
|
|
684
|
+
return ExpressionBuiltinFormat(
|
|
685
|
+
value=value,
|
|
686
|
+
format_spec=buildNode(provider, node.format_spec, source_ref, allow_none=True),
|
|
687
|
+
source_ref=source_ref,
|
|
688
|
+
)
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
def buildJoinedStrNode(provider, node, source_ref):
|
|
692
|
+
if node.values:
|
|
693
|
+
return ExpressionStringConcatenation(
|
|
694
|
+
values=buildNodeTuple(provider, node.values, source_ref),
|
|
695
|
+
source_ref=source_ref,
|
|
696
|
+
)
|
|
697
|
+
else:
|
|
698
|
+
return makeConstantRefNode(constant="", source_ref=source_ref)
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
def buildSliceNode(provider, node, source_ref):
|
|
702
|
+
"""Python3.9 or higher, slice notations."""
|
|
703
|
+
return makeExpressionBuiltinSlice(
|
|
704
|
+
start=buildNode(provider, node.lower, source_ref, allow_none=True),
|
|
705
|
+
stop=buildNode(provider, node.upper, source_ref, allow_none=True),
|
|
706
|
+
step=buildNode(provider, node.step, source_ref, allow_none=True),
|
|
707
|
+
source_ref=source_ref,
|
|
708
|
+
)
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
setBuildingDispatchers(
|
|
712
|
+
path_args3={
|
|
713
|
+
"Name": buildVariableReferenceNode,
|
|
714
|
+
"Assign": buildAssignNode,
|
|
715
|
+
"AnnAssign": buildAnnAssignNode,
|
|
716
|
+
"Delete": buildDeleteNode,
|
|
717
|
+
"Lambda": buildLambdaNode,
|
|
718
|
+
"GeneratorExp": buildGeneratorExpressionNode,
|
|
719
|
+
"If": buildConditionNode,
|
|
720
|
+
"While": buildWhileLoopNode,
|
|
721
|
+
"For": buildForLoopNode,
|
|
722
|
+
"AsyncFor": buildAsyncForLoopNode,
|
|
723
|
+
"Compare": buildComparisonNode,
|
|
724
|
+
"ListComp": buildListContractionNode,
|
|
725
|
+
"DictComp": buildDictContractionNode,
|
|
726
|
+
"SetComp": buildSetContractionNode,
|
|
727
|
+
"Dict": buildDictionaryNode,
|
|
728
|
+
"Set": buildSetCreationNode,
|
|
729
|
+
"Tuple": buildTupleCreationNode,
|
|
730
|
+
"List": buildListCreationNode,
|
|
731
|
+
"Global": handleGlobalDeclarationNode,
|
|
732
|
+
"Nonlocal": handleNonlocalDeclarationNode,
|
|
733
|
+
"TryExcept": buildTryExceptionNode,
|
|
734
|
+
"TryFinally": buildTryFinallyNode2,
|
|
735
|
+
"Try": buildTryNode,
|
|
736
|
+
"Raise": buildRaiseNode,
|
|
737
|
+
# Python3.11 exception group catching
|
|
738
|
+
"TryStar": buildTryStarNode,
|
|
739
|
+
"Import": buildImportModulesNode,
|
|
740
|
+
"ImportFrom": buildImportFromNode,
|
|
741
|
+
"Assert": buildAssertNode,
|
|
742
|
+
"Exec": buildExecNode,
|
|
743
|
+
"With": buildWithNode,
|
|
744
|
+
"AsyncWith": buildAsyncWithNode,
|
|
745
|
+
"FunctionDef": buildFunctionNode,
|
|
746
|
+
"AsyncFunctionDef": buildAsyncFunctionNode,
|
|
747
|
+
"Await": buildAwaitNode,
|
|
748
|
+
"ClassDef": buildClassNode,
|
|
749
|
+
"Print": buildPrintNode,
|
|
750
|
+
"Call": buildCallNode,
|
|
751
|
+
"Subscript": buildSubscriptNode,
|
|
752
|
+
"BoolOp": buildBoolOpNode,
|
|
753
|
+
"Attribute": buildAttributeNode,
|
|
754
|
+
"Return": buildReturnNode,
|
|
755
|
+
"Yield": buildYieldNode,
|
|
756
|
+
"YieldFrom": buildYieldFromNode,
|
|
757
|
+
"Expr": buildExprOnlyNode,
|
|
758
|
+
"UnaryOp": buildUnaryOpNode,
|
|
759
|
+
"BinOp": buildBinaryOpNode,
|
|
760
|
+
"Repr": buildReprNode,
|
|
761
|
+
"AugAssign": buildInplaceAssignNode,
|
|
762
|
+
"IfExp": buildConditionalExpressionNode,
|
|
763
|
+
"Break": buildStatementLoopBreak,
|
|
764
|
+
"JoinedStr": buildJoinedStrNode,
|
|
765
|
+
"FormattedValue": buildFormattedValueNode,
|
|
766
|
+
"NamedExpr": buildNamedExprNode,
|
|
767
|
+
"Slice": buildSliceNode,
|
|
768
|
+
"Match": buildMatchNode,
|
|
769
|
+
"TypeAlias": buildTypeAliasNode,
|
|
770
|
+
},
|
|
771
|
+
path_args2={
|
|
772
|
+
"Constant": buildNamedConstantNode, # Python3.8
|
|
773
|
+
"NameConstant": buildNamedConstantNode, # Python3.8 or below
|
|
774
|
+
"Str": buildStringNode,
|
|
775
|
+
"Num": buildNumberNode,
|
|
776
|
+
"Bytes": buildBytesNode,
|
|
777
|
+
"Continue": buildStatementLoopContinue,
|
|
778
|
+
"TypeVar": buildTypeVarNode,
|
|
779
|
+
},
|
|
780
|
+
path_args1={"Ellipsis": buildEllipsisNode},
|
|
781
|
+
)
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
def buildParseTree(provider, ast_tree, source_ref, is_main):
|
|
785
|
+
# There are a bunch of branches here, mostly to deal with version
|
|
786
|
+
# differences for module default variables.
|
|
787
|
+
|
|
788
|
+
# Maybe one day, we do exec inlining again, that is what this is for,
|
|
789
|
+
# then is_module won't be True, for now it always is.
|
|
790
|
+
pushFutureSpec(provider.getFullName())
|
|
791
|
+
provider.setFutureSpec(getFutureSpec())
|
|
792
|
+
|
|
793
|
+
body, doc = extractDocFromBody(ast_tree)
|
|
794
|
+
|
|
795
|
+
if is_main and python_version >= 0x360:
|
|
796
|
+
provider.markAsNeedsAnnotationsDictionary()
|
|
797
|
+
|
|
798
|
+
try:
|
|
799
|
+
result = buildStatementsNode(
|
|
800
|
+
provider=provider, nodes=body, source_ref=source_ref
|
|
801
|
+
)
|
|
802
|
+
except RuntimeError as e:
|
|
803
|
+
if "maximum recursion depth" in e.args[0]:
|
|
804
|
+
raise CodeTooComplexCode(
|
|
805
|
+
provider.getFullName(), provider.getCompileTimeFilename()
|
|
806
|
+
)
|
|
807
|
+
|
|
808
|
+
# After building, we can verify that all future statements were where they
|
|
809
|
+
# belong, namely at the start of the module.
|
|
810
|
+
checkFutureImportsOnlyAtStart(body)
|
|
811
|
+
|
|
812
|
+
internal_source_ref = source_ref.atInternal()
|
|
813
|
+
|
|
814
|
+
statements = []
|
|
815
|
+
|
|
816
|
+
# Add import of "site" module of main programs visibly in the node tree,
|
|
817
|
+
# so recursion and optimization can pick it up, checking its effects.
|
|
818
|
+
if is_main and not hasPythonFlagNoSite():
|
|
819
|
+
statements.append(
|
|
820
|
+
StatementExpressionOnly(
|
|
821
|
+
expression=makeExpressionImportModuleFixed(
|
|
822
|
+
using_module_name=provider.getParentModule().getFullName(),
|
|
823
|
+
module_name="site",
|
|
824
|
+
value_name="site",
|
|
825
|
+
source_ref=source_ref,
|
|
826
|
+
),
|
|
827
|
+
source_ref=source_ref,
|
|
828
|
+
)
|
|
829
|
+
)
|
|
830
|
+
|
|
831
|
+
for path_imported_name in getPthImportedPackages():
|
|
832
|
+
if isHardModuleWithoutSideEffect(path_imported_name):
|
|
833
|
+
continue
|
|
834
|
+
|
|
835
|
+
statements.append(
|
|
836
|
+
StatementExpressionOnly(
|
|
837
|
+
expression=makeExpressionImportModuleFixed(
|
|
838
|
+
using_module_name=provider.getParentModule().getFullName(),
|
|
839
|
+
module_name=path_imported_name,
|
|
840
|
+
value_name=path_imported_name.getTopLevelPackageName(),
|
|
841
|
+
source_ref=source_ref,
|
|
842
|
+
),
|
|
843
|
+
source_ref=source_ref,
|
|
844
|
+
)
|
|
845
|
+
)
|
|
846
|
+
|
|
847
|
+
statements.append(
|
|
848
|
+
StatementAssignmentVariableName(
|
|
849
|
+
provider=provider,
|
|
850
|
+
variable_name="__doc__",
|
|
851
|
+
source=makeConstantRefNode(
|
|
852
|
+
constant=doc, source_ref=internal_source_ref, user_provided=True
|
|
853
|
+
),
|
|
854
|
+
source_ref=internal_source_ref,
|
|
855
|
+
)
|
|
856
|
+
)
|
|
857
|
+
|
|
858
|
+
statements.append(
|
|
859
|
+
StatementAssignmentVariableName(
|
|
860
|
+
provider=provider,
|
|
861
|
+
variable_name="__file__",
|
|
862
|
+
source=ExpressionModuleAttributeFileRef(
|
|
863
|
+
variable=provider.getVariableForReference("__file__"),
|
|
864
|
+
source_ref=internal_source_ref,
|
|
865
|
+
),
|
|
866
|
+
source_ref=internal_source_ref,
|
|
867
|
+
)
|
|
868
|
+
)
|
|
869
|
+
|
|
870
|
+
if provider.isCompiledPythonPackage():
|
|
871
|
+
# This assigns "__path__" value.
|
|
872
|
+
statements.append(createPathAssignment(provider, internal_source_ref))
|
|
873
|
+
|
|
874
|
+
if python_version >= 0x300 and not is_main:
|
|
875
|
+
statements += (
|
|
876
|
+
StatementAssignmentAttribute(
|
|
877
|
+
expression=ExpressionModuleAttributeSpecRef(
|
|
878
|
+
variable=provider.getVariableForReference("__spec__"),
|
|
879
|
+
source_ref=internal_source_ref,
|
|
880
|
+
),
|
|
881
|
+
attribute_name="origin",
|
|
882
|
+
source=ExpressionModuleAttributeFileRef(
|
|
883
|
+
variable=provider.getVariableForReference("__file__"),
|
|
884
|
+
source_ref=internal_source_ref,
|
|
885
|
+
),
|
|
886
|
+
source_ref=internal_source_ref,
|
|
887
|
+
),
|
|
888
|
+
StatementAssignmentAttribute(
|
|
889
|
+
expression=ExpressionModuleAttributeSpecRef(
|
|
890
|
+
variable=provider.getVariableForReference("__spec__"),
|
|
891
|
+
source_ref=internal_source_ref,
|
|
892
|
+
),
|
|
893
|
+
attribute_name="has_location",
|
|
894
|
+
source=makeConstantRefNode(True, internal_source_ref),
|
|
895
|
+
source_ref=internal_source_ref,
|
|
896
|
+
),
|
|
897
|
+
)
|
|
898
|
+
|
|
899
|
+
if provider.isCompiledPythonPackage():
|
|
900
|
+
statements.append(
|
|
901
|
+
StatementAssignmentAttribute(
|
|
902
|
+
expression=ExpressionModuleAttributeSpecRef(
|
|
903
|
+
variable=provider.getVariableForReference("__spec__"),
|
|
904
|
+
source_ref=internal_source_ref,
|
|
905
|
+
),
|
|
906
|
+
attribute_name="submodule_search_locations",
|
|
907
|
+
source=ExpressionVariableNameRef(
|
|
908
|
+
provider=provider,
|
|
909
|
+
variable_name="__path__",
|
|
910
|
+
source_ref=internal_source_ref,
|
|
911
|
+
),
|
|
912
|
+
source_ref=internal_source_ref,
|
|
913
|
+
)
|
|
914
|
+
)
|
|
915
|
+
|
|
916
|
+
if python_version >= 0x300:
|
|
917
|
+
statements.append(
|
|
918
|
+
StatementAssignmentVariableName(
|
|
919
|
+
provider=provider,
|
|
920
|
+
variable_name="__cached__",
|
|
921
|
+
source=ExpressionConstantNoneRef(source_ref=internal_source_ref),
|
|
922
|
+
source_ref=internal_source_ref,
|
|
923
|
+
)
|
|
924
|
+
)
|
|
925
|
+
|
|
926
|
+
if provider.needsAnnotationsDictionary():
|
|
927
|
+
# Set "__annotations__" on module level to {}
|
|
928
|
+
statements.append(
|
|
929
|
+
StatementAssignmentVariableName(
|
|
930
|
+
provider=provider,
|
|
931
|
+
variable_name="__annotations__",
|
|
932
|
+
source=makeConstantRefNode(
|
|
933
|
+
constant={}, source_ref=internal_source_ref, user_provided=True
|
|
934
|
+
),
|
|
935
|
+
source_ref=internal_source_ref,
|
|
936
|
+
)
|
|
937
|
+
)
|
|
938
|
+
|
|
939
|
+
# Now the module body if there is any at all.
|
|
940
|
+
if result is not None:
|
|
941
|
+
statements.extend(result.subnode_statements)
|
|
942
|
+
|
|
943
|
+
result = makeModuleFrame(
|
|
944
|
+
module=provider, statements=statements, source_ref=source_ref
|
|
945
|
+
)
|
|
946
|
+
|
|
947
|
+
popFutureSpec()
|
|
948
|
+
|
|
949
|
+
return result
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
def decideCompilationMode(is_top, module_name, module_filename, for_pgo):
|
|
953
|
+
"""Decide the compilation mode for a module.
|
|
954
|
+
|
|
955
|
+
module_name - The module to decide compilation mode for.
|
|
956
|
+
for_pgo - consider PGO information or not
|
|
957
|
+
"""
|
|
958
|
+
|
|
959
|
+
is_stdlib = module_filename is not None and isStandardLibraryPath(module_filename)
|
|
960
|
+
|
|
961
|
+
# Technically required modules must be bytecode, do not even ask plugins
|
|
962
|
+
# about it.
|
|
963
|
+
if is_stdlib and module_name in detectEarlyImports():
|
|
964
|
+
return "bytecode"
|
|
965
|
+
|
|
966
|
+
result = Plugins.decideCompilation(module_name)
|
|
967
|
+
|
|
968
|
+
# Cannot change mode of "__main__" to bytecode, that is not going to work
|
|
969
|
+
# currently, maybe in the future we could allow it.
|
|
970
|
+
if result == "bytecode" and is_top:
|
|
971
|
+
plugins_logger.warning(
|
|
972
|
+
"""\
|
|
973
|
+
Ignoring plugin decision to compile top level package '%s' \
|
|
974
|
+
as bytecode, the extension module entry point is technically \
|
|
975
|
+
required to compiled."""
|
|
976
|
+
% module_name
|
|
977
|
+
)
|
|
978
|
+
result = "compiled"
|
|
979
|
+
|
|
980
|
+
# Include all of standard library as bytecode, for now. We need to identify
|
|
981
|
+
# which ones really need that.
|
|
982
|
+
if not is_top and is_stdlib and result is None:
|
|
983
|
+
result = "bytecode"
|
|
984
|
+
|
|
985
|
+
# Plugins need to win over PGO, as they might know it better
|
|
986
|
+
if result is None and not for_pgo:
|
|
987
|
+
result = decideCompilationFromPGO(module_name=module_name)
|
|
988
|
+
|
|
989
|
+
# Default if neither plugins nor PGO have expressed an opinion
|
|
990
|
+
if result is None:
|
|
991
|
+
if is_stdlib and module_name in detectStdlibAutoInclusionModules():
|
|
992
|
+
result = "bytecode"
|
|
993
|
+
else:
|
|
994
|
+
result = "compiled"
|
|
995
|
+
|
|
996
|
+
return result
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
def _loadUncompiledModuleFromCache(
|
|
1000
|
+
module_name, reason, is_package, source_code, source_ref
|
|
1001
|
+
):
|
|
1002
|
+
result = makeUncompiledPythonModule(
|
|
1003
|
+
module_name=module_name,
|
|
1004
|
+
reason=reason,
|
|
1005
|
+
filename=source_ref.getFilename(),
|
|
1006
|
+
bytecode=demoteSourceCodeToBytecode(
|
|
1007
|
+
module_name=module_name,
|
|
1008
|
+
source_code=source_code,
|
|
1009
|
+
filename=source_ref.getFilename(),
|
|
1010
|
+
),
|
|
1011
|
+
technical=module_name in detectEarlyImports(),
|
|
1012
|
+
is_package=is_package,
|
|
1013
|
+
)
|
|
1014
|
+
|
|
1015
|
+
used_modules = OrderedSet()
|
|
1016
|
+
|
|
1017
|
+
used_modules, timing_info = getCachedImportedModuleUsageAttempts(
|
|
1018
|
+
module_name=module_name, source_code=source_code, source_ref=source_ref
|
|
1019
|
+
)
|
|
1020
|
+
|
|
1021
|
+
result.setUsedModules(used_modules)
|
|
1022
|
+
|
|
1023
|
+
ModuleRegistry.setModuleOptimizationTimingInfos(module_name, timing_info)
|
|
1024
|
+
|
|
1025
|
+
return result
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
def _createModule(
|
|
1029
|
+
module_name,
|
|
1030
|
+
module_filename,
|
|
1031
|
+
module_kind,
|
|
1032
|
+
reason,
|
|
1033
|
+
source_code,
|
|
1034
|
+
source_ref,
|
|
1035
|
+
is_namespace,
|
|
1036
|
+
is_package,
|
|
1037
|
+
is_top,
|
|
1038
|
+
is_main,
|
|
1039
|
+
main_added,
|
|
1040
|
+
):
|
|
1041
|
+
is_stdlib = module_filename is not None and isStandardLibraryPath(module_filename)
|
|
1042
|
+
|
|
1043
|
+
if module_kind == "extension":
|
|
1044
|
+
result = PythonExtensionModule(
|
|
1045
|
+
module_name=module_name,
|
|
1046
|
+
module_filename=module_filename,
|
|
1047
|
+
reason=reason,
|
|
1048
|
+
technical=is_stdlib and module_name in detectEarlyImports(),
|
|
1049
|
+
source_ref=source_ref,
|
|
1050
|
+
)
|
|
1051
|
+
elif is_main:
|
|
1052
|
+
assert reason == "main", reason
|
|
1053
|
+
|
|
1054
|
+
result = PythonMainModule(
|
|
1055
|
+
main_added=main_added,
|
|
1056
|
+
module_name=module_name,
|
|
1057
|
+
mode=decideCompilationMode(
|
|
1058
|
+
is_top=is_top,
|
|
1059
|
+
module_name=module_name,
|
|
1060
|
+
module_filename=module_filename,
|
|
1061
|
+
for_pgo=False,
|
|
1062
|
+
),
|
|
1063
|
+
future_spec=None,
|
|
1064
|
+
source_ref=source_ref,
|
|
1065
|
+
)
|
|
1066
|
+
|
|
1067
|
+
checkPythonVersionFromCode(source_code)
|
|
1068
|
+
elif is_namespace:
|
|
1069
|
+
result = createNamespacePackage(
|
|
1070
|
+
module_name=module_name,
|
|
1071
|
+
reason=reason,
|
|
1072
|
+
is_top=is_top,
|
|
1073
|
+
source_ref=source_ref,
|
|
1074
|
+
)
|
|
1075
|
+
else:
|
|
1076
|
+
mode = decideCompilationMode(
|
|
1077
|
+
is_top=is_top,
|
|
1078
|
+
module_name=module_name,
|
|
1079
|
+
module_filename=module_filename,
|
|
1080
|
+
for_pgo=False,
|
|
1081
|
+
)
|
|
1082
|
+
|
|
1083
|
+
if (
|
|
1084
|
+
mode == "bytecode"
|
|
1085
|
+
and not is_top
|
|
1086
|
+
and not shallDisableBytecodeCacheUsage()
|
|
1087
|
+
and hasCachedImportedModuleUsageAttempts(
|
|
1088
|
+
module_name=module_name, source_code=source_code, source_ref=source_ref
|
|
1089
|
+
)
|
|
1090
|
+
):
|
|
1091
|
+
result = _loadUncompiledModuleFromCache(
|
|
1092
|
+
module_name=module_name,
|
|
1093
|
+
reason=reason,
|
|
1094
|
+
is_package=is_package,
|
|
1095
|
+
source_code=source_code,
|
|
1096
|
+
source_ref=source_ref,
|
|
1097
|
+
)
|
|
1098
|
+
|
|
1099
|
+
# Not used anymore
|
|
1100
|
+
source_code = None
|
|
1101
|
+
else:
|
|
1102
|
+
if is_package:
|
|
1103
|
+
result = CompiledPythonPackage(
|
|
1104
|
+
module_name=module_name,
|
|
1105
|
+
reason=reason,
|
|
1106
|
+
is_top=is_top,
|
|
1107
|
+
mode=mode,
|
|
1108
|
+
future_spec=None,
|
|
1109
|
+
source_ref=source_ref,
|
|
1110
|
+
)
|
|
1111
|
+
else:
|
|
1112
|
+
result = CompiledPythonModule(
|
|
1113
|
+
module_name=module_name,
|
|
1114
|
+
reason=reason,
|
|
1115
|
+
is_top=is_top,
|
|
1116
|
+
mode=mode,
|
|
1117
|
+
future_spec=None,
|
|
1118
|
+
source_ref=source_ref,
|
|
1119
|
+
)
|
|
1120
|
+
|
|
1121
|
+
return result
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
def createModuleTree(module, source_ref, ast_tree, is_main):
|
|
1125
|
+
if isShowMemory():
|
|
1126
|
+
memory_watch = MemoryUsage.MemoryWatch()
|
|
1127
|
+
|
|
1128
|
+
module_body = buildParseTree(
|
|
1129
|
+
provider=module,
|
|
1130
|
+
ast_tree=ast_tree,
|
|
1131
|
+
source_ref=source_ref,
|
|
1132
|
+
is_main=is_main,
|
|
1133
|
+
)
|
|
1134
|
+
|
|
1135
|
+
if module_body.isStatementsFrame():
|
|
1136
|
+
module_body = makeStatementsSequenceFromStatement(statement=module_body)
|
|
1137
|
+
|
|
1138
|
+
module.setChildBody(module_body)
|
|
1139
|
+
|
|
1140
|
+
completeVariableClosures(module)
|
|
1141
|
+
|
|
1142
|
+
if isShowMemory():
|
|
1143
|
+
memory_watch.finish(
|
|
1144
|
+
"Memory usage changed loading module '%s'" % module.getFullName()
|
|
1145
|
+
)
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
def buildMainModuleTree(source_code):
|
|
1149
|
+
# Detect to be frozen modules if any, so we can consider to not follow
|
|
1150
|
+
# to them.
|
|
1151
|
+
|
|
1152
|
+
filename = getMainEntryPointFilenames()[0]
|
|
1153
|
+
|
|
1154
|
+
if shallMakeModule():
|
|
1155
|
+
module_name = Importing.getModuleNameAndKindFromFilename(filename)[0]
|
|
1156
|
+
|
|
1157
|
+
if module_name is None:
|
|
1158
|
+
general.sysexit(
|
|
1159
|
+
"Error, filename '%s' suffix does not appear to be Python module code."
|
|
1160
|
+
% filename
|
|
1161
|
+
)
|
|
1162
|
+
else:
|
|
1163
|
+
# TODO: Doesn't work for deeply nested packages at all.
|
|
1164
|
+
if hasPythonFlagPackageMode():
|
|
1165
|
+
module_name = ModuleName(os.path.basename(filename) + ".__main__")
|
|
1166
|
+
else:
|
|
1167
|
+
module_name = ModuleName("__main__")
|
|
1168
|
+
|
|
1169
|
+
module = buildModule(
|
|
1170
|
+
module_name=module_name,
|
|
1171
|
+
reason="main",
|
|
1172
|
+
module_filename=filename,
|
|
1173
|
+
source_code=source_code,
|
|
1174
|
+
is_top=True,
|
|
1175
|
+
is_main=not shallMakeModule(),
|
|
1176
|
+
module_kind="py",
|
|
1177
|
+
is_fake=source_code is not None,
|
|
1178
|
+
hide_syntax_error=False,
|
|
1179
|
+
)
|
|
1180
|
+
|
|
1181
|
+
if isStandaloneMode():
|
|
1182
|
+
module.setStandardLibraryModules(
|
|
1183
|
+
early_module_names=detectEarlyImports(),
|
|
1184
|
+
stdlib_modules_names=detectStdlibAutoInclusionModules(),
|
|
1185
|
+
)
|
|
1186
|
+
|
|
1187
|
+
# Main modules do not get added to the import cache, but plugins get to see it.
|
|
1188
|
+
if module.isMainModule():
|
|
1189
|
+
Plugins.onModuleDiscovered(module)
|
|
1190
|
+
else:
|
|
1191
|
+
addImportedModule(imported_module=module)
|
|
1192
|
+
|
|
1193
|
+
return module
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
def _makeModuleBodyFromSyntaxError(exc, module_name, reason, module_filename):
|
|
1197
|
+
if module_filename not in Importing.warned_about:
|
|
1198
|
+
Importing.warned_about.add(module_filename)
|
|
1199
|
+
|
|
1200
|
+
recursion_logger.warning(
|
|
1201
|
+
"""\
|
|
1202
|
+
Cannot follow import to module '%s' because of '%s'."""
|
|
1203
|
+
% (module_name, exc.__class__.__name__)
|
|
1204
|
+
)
|
|
1205
|
+
|
|
1206
|
+
source_ref = SourceCodeReferences.fromFilename(filename=module_filename)
|
|
1207
|
+
|
|
1208
|
+
module = CompiledPythonModule(
|
|
1209
|
+
module_name=module_name,
|
|
1210
|
+
reason=reason,
|
|
1211
|
+
is_top=False,
|
|
1212
|
+
mode="compiled",
|
|
1213
|
+
future_spec=FutureSpec(use_annotations=False),
|
|
1214
|
+
source_ref=source_ref,
|
|
1215
|
+
)
|
|
1216
|
+
|
|
1217
|
+
module_body = makeModuleFrame(
|
|
1218
|
+
module=module,
|
|
1219
|
+
statements=(
|
|
1220
|
+
makeRaiseExceptionStatementFromInstance(
|
|
1221
|
+
source_ref=source_ref, exception=exc
|
|
1222
|
+
),
|
|
1223
|
+
),
|
|
1224
|
+
source_ref=source_ref,
|
|
1225
|
+
)
|
|
1226
|
+
|
|
1227
|
+
module_body = makeStatementsSequenceFromStatement(statement=module_body)
|
|
1228
|
+
module.setChildBody(module_body)
|
|
1229
|
+
|
|
1230
|
+
return module
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
def _makeModuleBodyTooComplex(
|
|
1234
|
+
module_name, reason, module_filename, source_code, is_package
|
|
1235
|
+
):
|
|
1236
|
+
if module_filename not in Importing.warned_about:
|
|
1237
|
+
Importing.warned_about.add(module_filename)
|
|
1238
|
+
|
|
1239
|
+
# Known harmless case, not causing issues, lets not warn about it.
|
|
1240
|
+
# spell-checker: ignore sympy,numberfields
|
|
1241
|
+
if module_name != "sympy.polys.numberfields.resolvent_lookup":
|
|
1242
|
+
recursion_logger.info(
|
|
1243
|
+
"""\
|
|
1244
|
+
Cannot compile module '%s' because its code is too complex, included as bytecode."""
|
|
1245
|
+
% module_name
|
|
1246
|
+
)
|
|
1247
|
+
|
|
1248
|
+
return makeUncompiledPythonModule(
|
|
1249
|
+
module_name=module_name,
|
|
1250
|
+
reason=reason,
|
|
1251
|
+
filename=module_filename,
|
|
1252
|
+
bytecode=marshal.dumps(
|
|
1253
|
+
compile(source_code, module_filename, "exec", dont_inherit=True)
|
|
1254
|
+
),
|
|
1255
|
+
is_package=is_package,
|
|
1256
|
+
technical=module_name in detectEarlyImports(),
|
|
1257
|
+
)
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
def buildModule(
|
|
1261
|
+
module_name,
|
|
1262
|
+
module_kind,
|
|
1263
|
+
module_filename,
|
|
1264
|
+
reason,
|
|
1265
|
+
source_code,
|
|
1266
|
+
is_top,
|
|
1267
|
+
is_main,
|
|
1268
|
+
is_fake,
|
|
1269
|
+
hide_syntax_error,
|
|
1270
|
+
):
|
|
1271
|
+
# Many details to deal with,
|
|
1272
|
+
# pylint: disable=too-many-branches,too-many-locals,too-many-statements
|
|
1273
|
+
(
|
|
1274
|
+
main_added,
|
|
1275
|
+
is_package,
|
|
1276
|
+
is_namespace,
|
|
1277
|
+
source_ref,
|
|
1278
|
+
source_filename,
|
|
1279
|
+
) = Importing.decideModuleSourceRef(
|
|
1280
|
+
filename=module_filename,
|
|
1281
|
+
module_name=module_name,
|
|
1282
|
+
is_main=is_main,
|
|
1283
|
+
is_fake=is_fake,
|
|
1284
|
+
logger=general,
|
|
1285
|
+
)
|
|
1286
|
+
|
|
1287
|
+
if hasPythonFlagPackageMode():
|
|
1288
|
+
if is_top and shallMakeModule():
|
|
1289
|
+
optimization_logger.warning(
|
|
1290
|
+
"Python flag -m (package_mode) has no effect in module mode, it's only for executables."
|
|
1291
|
+
)
|
|
1292
|
+
elif is_main and not main_added:
|
|
1293
|
+
optimization_logger.warning(
|
|
1294
|
+
"Python flag -m (package_mode) only works on packages with '__main__.py'."
|
|
1295
|
+
)
|
|
1296
|
+
|
|
1297
|
+
# Handle bytecode module case immediately.
|
|
1298
|
+
if module_kind == "pyc":
|
|
1299
|
+
return makeUncompiledPythonModule(
|
|
1300
|
+
module_name=module_name,
|
|
1301
|
+
reason=reason,
|
|
1302
|
+
filename=module_filename,
|
|
1303
|
+
bytecode=loadCodeObjectData(module_filename),
|
|
1304
|
+
is_package=is_package,
|
|
1305
|
+
technical=module_name in detectEarlyImports(),
|
|
1306
|
+
)
|
|
1307
|
+
|
|
1308
|
+
# Read source code if necessary. Might give a SyntaxError due to not being proper
|
|
1309
|
+
# encoded source.
|
|
1310
|
+
if source_filename is not None and not is_namespace and module_kind == "py":
|
|
1311
|
+
# For fake modules, source is provided directly.
|
|
1312
|
+
original_source_code = None
|
|
1313
|
+
contributing_plugins = ()
|
|
1314
|
+
|
|
1315
|
+
if source_code is None:
|
|
1316
|
+
try:
|
|
1317
|
+
(
|
|
1318
|
+
source_code,
|
|
1319
|
+
original_source_code,
|
|
1320
|
+
contributing_plugins,
|
|
1321
|
+
) = readSourceCodeFromFilenameWithInformation(
|
|
1322
|
+
module_name=module_name, source_filename=source_filename
|
|
1323
|
+
)
|
|
1324
|
+
except SyntaxError as e:
|
|
1325
|
+
# Avoid hiding our own syntax errors.
|
|
1326
|
+
if not hasattr(e, "generated_by_nuitka"):
|
|
1327
|
+
raise
|
|
1328
|
+
|
|
1329
|
+
# Do not hide SyntaxError in main module.
|
|
1330
|
+
if not hide_syntax_error:
|
|
1331
|
+
raise
|
|
1332
|
+
|
|
1333
|
+
return _makeModuleBodyFromSyntaxError(
|
|
1334
|
+
exc=e,
|
|
1335
|
+
module_name=module_name,
|
|
1336
|
+
reason=reason,
|
|
1337
|
+
module_filename=module_filename,
|
|
1338
|
+
)
|
|
1339
|
+
|
|
1340
|
+
try:
|
|
1341
|
+
with withNoSyntaxWarning():
|
|
1342
|
+
ast_tree = parseSourceCodeToAst(
|
|
1343
|
+
source_code=source_code,
|
|
1344
|
+
module_name=module_name,
|
|
1345
|
+
filename=source_filename,
|
|
1346
|
+
line_offset=0,
|
|
1347
|
+
)
|
|
1348
|
+
except (SyntaxError, IndentationError) as e:
|
|
1349
|
+
# Do not hide SyntaxError if asked not to.
|
|
1350
|
+
if not hide_syntax_error:
|
|
1351
|
+
raise
|
|
1352
|
+
|
|
1353
|
+
if original_source_code is not None:
|
|
1354
|
+
try:
|
|
1355
|
+
parseSourceCodeToAst(
|
|
1356
|
+
source_code=original_source_code,
|
|
1357
|
+
module_name=module_name,
|
|
1358
|
+
filename=source_filename,
|
|
1359
|
+
line_offset=0,
|
|
1360
|
+
)
|
|
1361
|
+
except (SyntaxError, IndentationError):
|
|
1362
|
+
# Also an exception without the plugins, that is OK
|
|
1363
|
+
pass
|
|
1364
|
+
else:
|
|
1365
|
+
source_diff = getSourceCodeDiff(original_source_code, source_code)
|
|
1366
|
+
|
|
1367
|
+
for line in source_diff:
|
|
1368
|
+
plugins_logger.warning(line, keep_format=True)
|
|
1369
|
+
|
|
1370
|
+
if len(contributing_plugins) == 1:
|
|
1371
|
+
next(iter(contributing_plugins)).sysexit(
|
|
1372
|
+
"Making changes to '%s' that cause SyntaxError '%s'"
|
|
1373
|
+
% (module_name, e)
|
|
1374
|
+
)
|
|
1375
|
+
else:
|
|
1376
|
+
plugins_logger.sysexit(
|
|
1377
|
+
"One of the plugins '%s' is making changes to '%s' that cause SyntaxError '%s'"
|
|
1378
|
+
% (",".join(contributing_plugins), module_name, e)
|
|
1379
|
+
)
|
|
1380
|
+
|
|
1381
|
+
return _makeModuleBodyFromSyntaxError(
|
|
1382
|
+
exc=e,
|
|
1383
|
+
module_name=module_name,
|
|
1384
|
+
reason=reason,
|
|
1385
|
+
module_filename=module_filename,
|
|
1386
|
+
)
|
|
1387
|
+
except CodeTooComplexCode:
|
|
1388
|
+
# Do not hide CodeTooComplexCode in main module.
|
|
1389
|
+
if is_main:
|
|
1390
|
+
raise
|
|
1391
|
+
|
|
1392
|
+
return _makeModuleBodyTooComplex(
|
|
1393
|
+
module_name=module_name,
|
|
1394
|
+
reason=reason,
|
|
1395
|
+
module_filename=module_filename,
|
|
1396
|
+
source_code=source_code,
|
|
1397
|
+
is_package=is_package,
|
|
1398
|
+
)
|
|
1399
|
+
else:
|
|
1400
|
+
ast_tree = None
|
|
1401
|
+
source_code = None
|
|
1402
|
+
|
|
1403
|
+
module = _createModule(
|
|
1404
|
+
module_name=module_name,
|
|
1405
|
+
module_filename=None if is_fake else module_filename,
|
|
1406
|
+
module_kind=module_kind,
|
|
1407
|
+
reason=reason,
|
|
1408
|
+
source_code=source_code,
|
|
1409
|
+
source_ref=source_ref,
|
|
1410
|
+
is_top=is_top,
|
|
1411
|
+
is_main=is_main,
|
|
1412
|
+
is_namespace=is_namespace,
|
|
1413
|
+
is_package=is_package,
|
|
1414
|
+
main_added=main_added,
|
|
1415
|
+
)
|
|
1416
|
+
|
|
1417
|
+
if is_top:
|
|
1418
|
+
ModuleRegistry.addRootModule(module)
|
|
1419
|
+
|
|
1420
|
+
OutputDirectories.setMainModule(module)
|
|
1421
|
+
|
|
1422
|
+
if module.isCompiledPythonModule() and source_code is not None:
|
|
1423
|
+
try:
|
|
1424
|
+
createModuleTree(
|
|
1425
|
+
module=module,
|
|
1426
|
+
source_ref=source_ref,
|
|
1427
|
+
ast_tree=ast_tree,
|
|
1428
|
+
is_main=is_main,
|
|
1429
|
+
)
|
|
1430
|
+
except CodeTooComplexCode:
|
|
1431
|
+
# Do not hide CodeTooComplexCode in main module.
|
|
1432
|
+
if is_main or is_top:
|
|
1433
|
+
raise
|
|
1434
|
+
|
|
1435
|
+
return _makeModuleBodyTooComplex(
|
|
1436
|
+
module_name=module_name,
|
|
1437
|
+
reason=reason,
|
|
1438
|
+
module_filename=module_filename,
|
|
1439
|
+
source_code=source_code,
|
|
1440
|
+
is_package=is_package,
|
|
1441
|
+
)
|
|
1442
|
+
|
|
1443
|
+
return module
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1447
|
+
# integrates with CPython, but also works on its own.
|
|
1448
|
+
#
|
|
1449
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1450
|
+
# you may not use this file except in compliance with the License.
|
|
1451
|
+
# You may obtain a copy of the License at
|
|
1452
|
+
#
|
|
1453
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1454
|
+
#
|
|
1455
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1456
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1457
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1458
|
+
# See the License for the specific language governing permissions and
|
|
1459
|
+
# limitations under the License.
|