mypy-dev 1.9.0.dev0__py3-none-any.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.
- mypy/__init__.py +1 -0
- mypy/__main__.py +37 -0
- mypy/api.py +94 -0
- mypy/applytype.py +156 -0
- mypy/argmap.py +268 -0
- mypy/binder.py +538 -0
- mypy/bogus_type.py +27 -0
- mypy/build.py +3562 -0
- mypy/checker.py +8372 -0
- mypy/checkexpr.py +6615 -0
- mypy/checkmember.py +1356 -0
- mypy/checkpattern.py +801 -0
- mypy/checkstrformat.py +1109 -0
- mypy/config_parser.py +670 -0
- mypy/constant_fold.py +187 -0
- mypy/constraints.py +1624 -0
- mypy/copytype.py +133 -0
- mypy/defaults.py +46 -0
- mypy/dmypy/__init__.py +0 -0
- mypy/dmypy/__main__.py +6 -0
- mypy/dmypy/client.py +749 -0
- mypy/dmypy_os.py +42 -0
- mypy/dmypy_server.py +1107 -0
- mypy/dmypy_util.py +117 -0
- mypy/erasetype.py +278 -0
- mypy/errorcodes.py +285 -0
- mypy/errors.py +1280 -0
- mypy/evalexpr.py +205 -0
- mypy/expandtype.py +510 -0
- mypy/exprtotype.py +206 -0
- mypy/fastparse.py +2147 -0
- mypy/find_sources.py +243 -0
- mypy/fixup.py +426 -0
- mypy/freetree.py +23 -0
- mypy/fscache.py +309 -0
- mypy/fswatcher.py +106 -0
- mypy/gclogger.py +47 -0
- mypy/git.py +34 -0
- mypy/graph_utils.py +112 -0
- mypy/indirection.py +121 -0
- mypy/infer.py +75 -0
- mypy/inspections.py +627 -0
- mypy/ipc.py +310 -0
- mypy/join.py +866 -0
- mypy/literals.py +306 -0
- mypy/lookup.py +61 -0
- mypy/main.py +1574 -0
- mypy/maptype.py +106 -0
- mypy/meet.py +1140 -0
- mypy/memprofile.py +121 -0
- mypy/message_registry.py +326 -0
- mypy/messages.py +3171 -0
- mypy/metastore.py +225 -0
- mypy/mixedtraverser.py +112 -0
- mypy/modulefinder.py +875 -0
- mypy/moduleinspect.py +184 -0
- mypy/mro.py +62 -0
- mypy/nodes.py +4112 -0
- mypy/operators.py +126 -0
- mypy/options.py +556 -0
- mypy/parse.py +30 -0
- mypy/partially_defined.py +675 -0
- mypy/patterns.py +150 -0
- mypy/plugin.py +901 -0
- mypy/plugins/__init__.py +0 -0
- mypy/plugins/attrs.py +1152 -0
- mypy/plugins/common.py +440 -0
- mypy/plugins/ctypes.py +245 -0
- mypy/plugins/dataclasses.py +1101 -0
- mypy/plugins/default.py +518 -0
- mypy/plugins/enums.py +259 -0
- mypy/plugins/functools.py +104 -0
- mypy/plugins/proper_plugin.py +175 -0
- mypy/plugins/singledispatch.py +224 -0
- mypy/py.typed +1 -0
- mypy/pyinfo.py +78 -0
- mypy/reachability.py +362 -0
- mypy/refinfo.py +92 -0
- mypy/renaming.py +568 -0
- mypy/report.py +924 -0
- mypy/scope.py +125 -0
- mypy/semanal.py +7023 -0
- mypy/semanal_classprop.py +187 -0
- mypy/semanal_enum.py +253 -0
- mypy/semanal_infer.py +128 -0
- mypy/semanal_main.py +511 -0
- mypy/semanal_namedtuple.py +670 -0
- mypy/semanal_newtype.py +273 -0
- mypy/semanal_pass1.py +156 -0
- mypy/semanal_shared.py +490 -0
- mypy/semanal_typeargs.py +265 -0
- mypy/semanal_typeddict.py +575 -0
- mypy/server/__init__.py +0 -0
- mypy/server/astdiff.py +518 -0
- mypy/server/astmerge.py +562 -0
- mypy/server/aststrip.py +281 -0
- mypy/server/deps.py +1137 -0
- mypy/server/mergecheck.py +83 -0
- mypy/server/objgraph.py +101 -0
- mypy/server/subexpr.py +198 -0
- mypy/server/target.py +11 -0
- mypy/server/trigger.py +26 -0
- mypy/server/update.py +1339 -0
- mypy/sharedparse.py +112 -0
- mypy/solve.py +562 -0
- mypy/split_namespace.py +35 -0
- mypy/state.py +28 -0
- mypy/stats.py +489 -0
- mypy/strconv.py +641 -0
- mypy/stubdoc.py +491 -0
- mypy/stubgen.py +1873 -0
- mypy/stubgenc.py +993 -0
- mypy/stubinfo.py +173 -0
- mypy/stubtest.py +2079 -0
- mypy/stubutil.py +807 -0
- mypy/subtypes.py +1967 -0
- mypy/suggestions.py +1046 -0
- mypy/test/__init__.py +0 -0
- mypy/test/config.py +28 -0
- mypy/test/data.py +823 -0
- mypy/test/helpers.py +476 -0
- mypy/test/meta/__init__.py +0 -0
- mypy/test/meta/_pytest.py +72 -0
- mypy/test/meta/test_diff_helper.py +47 -0
- mypy/test/meta/test_parse_data.py +73 -0
- mypy/test/meta/test_update_data.py +135 -0
- mypy/test/test_find_sources.py +376 -0
- mypy/test/test_ref_info.py +45 -0
- mypy/test/testapi.py +45 -0
- mypy/test/testargs.py +77 -0
- mypy/test/testcheck.py +322 -0
- mypy/test/testcmdline.py +152 -0
- mypy/test/testconstraints.py +134 -0
- mypy/test/testdaemon.py +132 -0
- mypy/test/testdeps.py +77 -0
- mypy/test/testdiff.py +67 -0
- mypy/test/testerrorstream.py +46 -0
- mypy/test/testfinegrained.py +438 -0
- mypy/test/testfinegrainedcache.py +18 -0
- mypy/test/testformatter.py +85 -0
- mypy/test/testfscache.py +101 -0
- mypy/test/testgraph.py +83 -0
- mypy/test/testinfer.py +373 -0
- mypy/test/testipc.py +119 -0
- mypy/test/testmerge.py +238 -0
- mypy/test/testmodulefinder.py +278 -0
- mypy/test/testmypyc.py +14 -0
- mypy/test/testparse.py +107 -0
- mypy/test/testpep561.py +211 -0
- mypy/test/testpythoneval.py +117 -0
- mypy/test/testreports.py +55 -0
- mypy/test/testsemanal.py +209 -0
- mypy/test/testsolve.py +285 -0
- mypy/test/teststubgen.py +1412 -0
- mypy/test/teststubinfo.py +12 -0
- mypy/test/teststubtest.py +2492 -0
- mypy/test/testsubtypes.py +303 -0
- mypy/test/testtransform.py +64 -0
- mypy/test/testtypegen.py +83 -0
- mypy/test/testtypes.py +1551 -0
- mypy/test/testutil.py +111 -0
- mypy/test/typefixture.py +415 -0
- mypy/test/update_data.py +87 -0
- mypy/test/visitors.py +63 -0
- mypy/traverser.py +961 -0
- mypy/treetransform.py +800 -0
- mypy/tvar_scope.py +147 -0
- mypy/type_visitor.py +564 -0
- mypy/typeanal.py +2510 -0
- mypy/typeops.py +1082 -0
- mypy/types.py +3686 -0
- mypy/types_utils.py +166 -0
- mypy/typeshed/LICENSE +237 -0
- mypy/typeshed/stdlib/VERSIONS +308 -0
- mypy/typeshed/stdlib/__future__.pyi +36 -0
- mypy/typeshed/stdlib/__main__.pyi +3 -0
- mypy/typeshed/stdlib/_ast.pyi +587 -0
- mypy/typeshed/stdlib/_bisect.pyi +84 -0
- mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
- mypy/typeshed/stdlib/_codecs.pyi +133 -0
- mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
- mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
- mypy/typeshed/stdlib/_compression.pyi +25 -0
- mypy/typeshed/stdlib/_csv.pyi +90 -0
- mypy/typeshed/stdlib/_ctypes.pyi +205 -0
- mypy/typeshed/stdlib/_curses.pyi +557 -0
- mypy/typeshed/stdlib/_decimal.pyi +281 -0
- mypy/typeshed/stdlib/_dummy_thread.pyi +27 -0
- mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
- mypy/typeshed/stdlib/_heapq.pyi +11 -0
- mypy/typeshed/stdlib/_imp.pyi +28 -0
- mypy/typeshed/stdlib/_json.pyi +49 -0
- mypy/typeshed/stdlib/_locale.pyi +100 -0
- mypy/typeshed/stdlib/_markupbase.pyi +16 -0
- mypy/typeshed/stdlib/_msi.pyi +91 -0
- mypy/typeshed/stdlib/_operator.pyi +147 -0
- mypy/typeshed/stdlib/_osx_support.pyi +34 -0
- mypy/typeshed/stdlib/_posixsubprocess.pyi +32 -0
- mypy/typeshed/stdlib/_py_abc.pyi +14 -0
- mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
- mypy/typeshed/stdlib/_random.pyi +12 -0
- mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
- mypy/typeshed/stdlib/_socket.pyi +802 -0
- mypy/typeshed/stdlib/_stat.pyi +103 -0
- mypy/typeshed/stdlib/_thread.pyi +52 -0
- mypy/typeshed/stdlib/_threading_local.pyi +17 -0
- mypy/typeshed/stdlib/_tkinter.pyi +120 -0
- mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
- mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
- mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
- mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
- mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
- mypy/typeshed/stdlib/_warnings.pyi +55 -0
- mypy/typeshed/stdlib/_weakref.pyi +41 -0
- mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
- mypy/typeshed/stdlib/_winapi.pyi +251 -0
- mypy/typeshed/stdlib/abc.pyi +49 -0
- mypy/typeshed/stdlib/aifc.pyi +91 -0
- mypy/typeshed/stdlib/antigravity.pyi +3 -0
- mypy/typeshed/stdlib/argparse.pyi +571 -0
- mypy/typeshed/stdlib/array.pyi +92 -0
- mypy/typeshed/stdlib/ast.pyi +277 -0
- mypy/typeshed/stdlib/asynchat.pyi +21 -0
- mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
- mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
- mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
- mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
- mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
- mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
- mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
- mypy/typeshed/stdlib/asyncio/events.pyi +574 -0
- mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
- mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
- mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
- mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
- mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
- mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
- mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
- mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
- mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
- mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
- mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
- mypy/typeshed/stdlib/asyncio/sslproto.pyi +163 -0
- mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
- mypy/typeshed/stdlib/asyncio/streams.pyi +148 -0
- mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
- mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
- mypy/typeshed/stdlib/asyncio/tasks.pyi +477 -0
- mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
- mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
- mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
- mypy/typeshed/stdlib/asyncio/trsock.pyi +98 -0
- mypy/typeshed/stdlib/asyncio/unix_events.pyi +173 -0
- mypy/typeshed/stdlib/asyncio/windows_events.pyi +83 -0
- mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
- mypy/typeshed/stdlib/asyncore.pyi +90 -0
- mypy/typeshed/stdlib/atexit.pyi +12 -0
- mypy/typeshed/stdlib/audioop.pyi +42 -0
- mypy/typeshed/stdlib/base64.pyi +59 -0
- mypy/typeshed/stdlib/bdb.pyi +102 -0
- mypy/typeshed/stdlib/binascii.pyi +36 -0
- mypy/typeshed/stdlib/binhex.pyi +45 -0
- mypy/typeshed/stdlib/bisect.pyi +4 -0
- mypy/typeshed/stdlib/builtins.pyi +1937 -0
- mypy/typeshed/stdlib/bz2.pyi +146 -0
- mypy/typeshed/stdlib/cProfile.pyi +35 -0
- mypy/typeshed/stdlib/calendar.pyi +206 -0
- mypy/typeshed/stdlib/cgi.pyi +118 -0
- mypy/typeshed/stdlib/cgitb.pyi +32 -0
- mypy/typeshed/stdlib/chunk.pyi +20 -0
- mypy/typeshed/stdlib/cmath.pyi +36 -0
- mypy/typeshed/stdlib/cmd.pyi +45 -0
- mypy/typeshed/stdlib/code.pyi +33 -0
- mypy/typeshed/stdlib/codecs.pyi +285 -0
- mypy/typeshed/stdlib/codeop.pyi +13 -0
- mypy/typeshed/stdlib/collections/__init__.pyi +477 -0
- mypy/typeshed/stdlib/collections/abc.pyi +2 -0
- mypy/typeshed/stdlib/colorsys.pyi +13 -0
- mypy/typeshed/stdlib/compileall.pyi +111 -0
- mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
- mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
- mypy/typeshed/stdlib/concurrent/futures/_base.pyi +120 -0
- mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
- mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
- mypy/typeshed/stdlib/configparser.pyi +313 -0
- mypy/typeshed/stdlib/contextlib.pyi +207 -0
- mypy/typeshed/stdlib/contextvars.pyi +63 -0
- mypy/typeshed/stdlib/copy.pyi +16 -0
- mypy/typeshed/stdlib/copyreg.pyi +21 -0
- mypy/typeshed/stdlib/crypt.pyi +12 -0
- mypy/typeshed/stdlib/csv.pyi +147 -0
- mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
- mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
- mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
- mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
- mypy/typeshed/stdlib/curses/__init__.pyi +21 -0
- mypy/typeshed/stdlib/curses/ascii.pyi +63 -0
- mypy/typeshed/stdlib/curses/has_key.pyi +4 -0
- mypy/typeshed/stdlib/curses/panel.pyi +25 -0
- mypy/typeshed/stdlib/curses/textpad.pyi +13 -0
- mypy/typeshed/stdlib/dataclasses.pyi +313 -0
- mypy/typeshed/stdlib/datetime.pyi +295 -0
- mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
- mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
- mypy/typeshed/stdlib/dbm/gnu.pyi +40 -0
- mypy/typeshed/stdlib/dbm/ndbm.pyi +36 -0
- mypy/typeshed/stdlib/decimal.pyi +2 -0
- mypy/typeshed/stdlib/difflib.pyi +140 -0
- mypy/typeshed/stdlib/dis.pyi +144 -0
- mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
- mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
- mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
- mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
- mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
- mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
- mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
- mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
- mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
- mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
- mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
- mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
- mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
- mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
- mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
- mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
- mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
- mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
- mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
- mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
- mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
- mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
- mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
- mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
- mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
- mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
- mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
- mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
- mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
- mypy/typeshed/stdlib/distutils/config.pyi +17 -0
- mypy/typeshed/stdlib/distutils/core.pyi +57 -0
- mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
- mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
- mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
- mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
- mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
- mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
- mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
- mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
- mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
- mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
- mypy/typeshed/stdlib/distutils/log.pyi +25 -0
- mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
- mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
- mypy/typeshed/stdlib/distutils/sysconfig.pyi +22 -0
- mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
- mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
- mypy/typeshed/stdlib/distutils/util.pyi +46 -0
- mypy/typeshed/stdlib/distutils/version.pyi +36 -0
- mypy/typeshed/stdlib/doctest.pyi +248 -0
- mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
- mypy/typeshed/stdlib/email/__init__.pyi +29 -0
- mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
- mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
- mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
- mypy/typeshed/stdlib/email/charset.pyi +34 -0
- mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
- mypy/typeshed/stdlib/email/encoders.pyi +8 -0
- mypy/typeshed/stdlib/email/errors.pyi +39 -0
- mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
- mypy/typeshed/stdlib/email/generator.pyi +40 -0
- mypy/typeshed/stdlib/email/header.pyi +31 -0
- mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
- mypy/typeshed/stdlib/email/iterators.pyi +12 -0
- mypy/typeshed/stdlib/email/message.pyi +161 -0
- mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
- mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
- mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
- mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
- mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
- mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
- mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
- mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
- mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
- mypy/typeshed/stdlib/email/parser.pyi +26 -0
- mypy/typeshed/stdlib/email/policy.pyi +38 -0
- mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
- mypy/typeshed/stdlib/email/utils.pyi +66 -0
- mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
- mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
- mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
- mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
- mypy/typeshed/stdlib/enum.pyi +317 -0
- mypy/typeshed/stdlib/errno.pyi +222 -0
- mypy/typeshed/stdlib/faulthandler.pyi +13 -0
- mypy/typeshed/stdlib/fcntl.pyi +127 -0
- mypy/typeshed/stdlib/filecmp.pyi +57 -0
- mypy/typeshed/stdlib/fileinput.pyi +213 -0
- mypy/typeshed/stdlib/fnmatch.pyi +9 -0
- mypy/typeshed/stdlib/formatter.pyi +88 -0
- mypy/typeshed/stdlib/fractions.pyi +150 -0
- mypy/typeshed/stdlib/ftplib.pyi +178 -0
- mypy/typeshed/stdlib/functools.pyi +200 -0
- mypy/typeshed/stdlib/gc.pyi +37 -0
- mypy/typeshed/stdlib/genericpath.pyi +52 -0
- mypy/typeshed/stdlib/getopt.pyi +11 -0
- mypy/typeshed/stdlib/getpass.pyi +8 -0
- mypy/typeshed/stdlib/gettext.pyi +169 -0
- mypy/typeshed/stdlib/glob.pyi +42 -0
- mypy/typeshed/stdlib/graphlib.pyi +28 -0
- mypy/typeshed/stdlib/grp.pyi +21 -0
- mypy/typeshed/stdlib/gzip.pyi +160 -0
- mypy/typeshed/stdlib/hashlib.pyi +165 -0
- mypy/typeshed/stdlib/heapq.pyi +17 -0
- mypy/typeshed/stdlib/hmac.pyi +38 -0
- mypy/typeshed/stdlib/html/__init__.pyi +6 -0
- mypy/typeshed/stdlib/html/entities.pyi +6 -0
- mypy/typeshed/stdlib/html/parser.pyi +34 -0
- mypy/typeshed/stdlib/http/__init__.pyi +105 -0
- mypy/typeshed/stdlib/http/client.pyi +259 -0
- mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
- mypy/typeshed/stdlib/http/cookies.pyi +60 -0
- mypy/typeshed/stdlib/http/server.pyi +83 -0
- mypy/typeshed/stdlib/imaplib.pyi +168 -0
- mypy/typeshed/stdlib/imghdr.pyi +17 -0
- mypy/typeshed/stdlib/imp.pyi +62 -0
- mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
- mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
- mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
- mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
- mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +276 -0
- mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +40 -0
- mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
- mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
- mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
- mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
- mypy/typeshed/stdlib/importlib/resources/simple.pyi +49 -0
- mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
- mypy/typeshed/stdlib/importlib/util.pyi +43 -0
- mypy/typeshed/stdlib/inspect.pyi +631 -0
- mypy/typeshed/stdlib/io.pyi +204 -0
- mypy/typeshed/stdlib/ipaddress.pyi +208 -0
- mypy/typeshed/stdlib/itertools.pyi +293 -0
- mypy/typeshed/stdlib/json/__init__.pyi +61 -0
- mypy/typeshed/stdlib/json/decoder.pyi +32 -0
- mypy/typeshed/stdlib/json/encoder.pyi +38 -0
- mypy/typeshed/stdlib/json/tool.pyi +1 -0
- mypy/typeshed/stdlib/keyword.pyi +21 -0
- mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
- mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
- mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
- mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
- mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
- mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
- mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
- mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
- mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
- mypy/typeshed/stdlib/linecache.pyi +23 -0
- mypy/typeshed/stdlib/locale.pyi +152 -0
- mypy/typeshed/stdlib/logging/__init__.pyi +655 -0
- mypy/typeshed/stdlib/logging/config.pyi +134 -0
- mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
- mypy/typeshed/stdlib/lzma.pyi +197 -0
- mypy/typeshed/stdlib/mailbox.pyi +256 -0
- mypy/typeshed/stdlib/mailcap.pyi +11 -0
- mypy/typeshed/stdlib/marshal.pyi +33 -0
- mypy/typeshed/stdlib/math.pyi +125 -0
- mypy/typeshed/stdlib/mimetypes.pyi +46 -0
- mypy/typeshed/stdlib/mmap.pyi +113 -0
- mypy/typeshed/stdlib/modulefinder.pyi +66 -0
- mypy/typeshed/stdlib/msilib/__init__.pyi +176 -0
- mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
- mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
- mypy/typeshed/stdlib/msilib/text.pyi +7 -0
- mypy/typeshed/stdlib/msvcrt.pyi +32 -0
- mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
- mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
- mypy/typeshed/stdlib/multiprocessing/context.pyi +187 -0
- mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
- mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
- mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
- mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
- mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
- mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
- mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
- mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
- mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
- mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
- mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
- mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
- mypy/typeshed/stdlib/multiprocessing/reduction.pyi +89 -0
- mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
- mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
- mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
- mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +101 -0
- mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
- mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
- mypy/typeshed/stdlib/multiprocessing/util.pyi +79 -0
- mypy/typeshed/stdlib/netrc.pyi +23 -0
- mypy/typeshed/stdlib/nis.pyi +9 -0
- mypy/typeshed/stdlib/nntplib.pyi +125 -0
- mypy/typeshed/stdlib/nt.pyi +111 -0
- mypy/typeshed/stdlib/ntpath.pyi +119 -0
- mypy/typeshed/stdlib/nturl2path.pyi +2 -0
- mypy/typeshed/stdlib/numbers.pyi +154 -0
- mypy/typeshed/stdlib/opcode.pyi +59 -0
- mypy/typeshed/stdlib/operator.pyi +110 -0
- mypy/typeshed/stdlib/optparse.pyi +252 -0
- mypy/typeshed/stdlib/os/__init__.pyi +1139 -0
- mypy/typeshed/stdlib/os/path.pyi +8 -0
- mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
- mypy/typeshed/stdlib/parser.pyi +24 -0
- mypy/typeshed/stdlib/pathlib.pyi +232 -0
- mypy/typeshed/stdlib/pdb.pyi +181 -0
- mypy/typeshed/stdlib/pickle.pyi +270 -0
- mypy/typeshed/stdlib/pickletools.pyi +167 -0
- mypy/typeshed/stdlib/pipes.pyi +16 -0
- mypy/typeshed/stdlib/pkgutil.pyi +53 -0
- mypy/typeshed/stdlib/platform.pyi +42 -0
- mypy/typeshed/stdlib/plistlib.pyi +113 -0
- mypy/typeshed/stdlib/poplib.pyi +71 -0
- mypy/typeshed/stdlib/posix.pyi +359 -0
- mypy/typeshed/stdlib/posixpath.pyi +161 -0
- mypy/typeshed/stdlib/pprint.pyi +112 -0
- mypy/typeshed/stdlib/profile.pyi +31 -0
- mypy/typeshed/stdlib/pstats.pyi +78 -0
- mypy/typeshed/stdlib/pty.pyi +19 -0
- mypy/typeshed/stdlib/pwd.pyi +27 -0
- mypy/typeshed/stdlib/py_compile.pyi +34 -0
- mypy/typeshed/stdlib/pyclbr.pyi +74 -0
- mypy/typeshed/stdlib/pydoc.pyi +261 -0
- mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
- mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
- mypy/typeshed/stdlib/pyexpat/__init__.pyi +80 -0
- mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
- mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
- mypy/typeshed/stdlib/queue.pyi +58 -0
- mypy/typeshed/stdlib/quopri.pyi +11 -0
- mypy/typeshed/stdlib/random.pyi +138 -0
- mypy/typeshed/stdlib/re.pyi +290 -0
- mypy/typeshed/stdlib/readline.pyi +36 -0
- mypy/typeshed/stdlib/reprlib.pyi +65 -0
- mypy/typeshed/stdlib/resource.pyi +92 -0
- mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
- mypy/typeshed/stdlib/runpy.pyi +24 -0
- mypy/typeshed/stdlib/sched.pyi +42 -0
- mypy/typeshed/stdlib/secrets.pyi +15 -0
- mypy/typeshed/stdlib/select.pyi +151 -0
- mypy/typeshed/stdlib/selectors.pyi +67 -0
- mypy/typeshed/stdlib/shelve.pyi +46 -0
- mypy/typeshed/stdlib/shlex.pyi +43 -0
- mypy/typeshed/stdlib/shutil.pyi +189 -0
- mypy/typeshed/stdlib/signal.pyi +189 -0
- mypy/typeshed/stdlib/site.pyi +27 -0
- mypy/typeshed/stdlib/smtpd.pyi +91 -0
- mypy/typeshed/stdlib/smtplib.pyi +204 -0
- mypy/typeshed/stdlib/sndhdr.pyi +14 -0
- mypy/typeshed/stdlib/socket.pyi +825 -0
- mypy/typeshed/stdlib/socketserver.pyi +168 -0
- mypy/typeshed/stdlib/spwd.pyi +40 -0
- mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
- mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +469 -0
- mypy/typeshed/stdlib/sre_compile.pyi +11 -0
- mypy/typeshed/stdlib/sre_constants.pyi +130 -0
- mypy/typeshed/stdlib/sre_parse.pyi +104 -0
- mypy/typeshed/stdlib/ssl.pyi +529 -0
- mypy/typeshed/stdlib/stat.pyi +1 -0
- mypy/typeshed/stdlib/statistics.pyi +132 -0
- mypy/typeshed/stdlib/string.pyi +83 -0
- mypy/typeshed/stdlib/stringprep.pyi +27 -0
- mypy/typeshed/stdlib/struct.pyi +26 -0
- mypy/typeshed/stdlib/subprocess.pyi +2614 -0
- mypy/typeshed/stdlib/sunau.pyi +86 -0
- mypy/typeshed/stdlib/symbol.pyi +93 -0
- mypy/typeshed/stdlib/symtable.pyi +58 -0
- mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
- mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
- mypy/typeshed/stdlib/sysconfig.pyi +43 -0
- mypy/typeshed/stdlib/syslog.pyi +46 -0
- mypy/typeshed/stdlib/tabnanny.pyi +16 -0
- mypy/typeshed/stdlib/tarfile.pyi +438 -0
- mypy/typeshed/stdlib/telnetlib.pyi +122 -0
- mypy/typeshed/stdlib/tempfile.pyi +477 -0
- mypy/typeshed/stdlib/termios.pyi +267 -0
- mypy/typeshed/stdlib/textwrap.pyi +103 -0
- mypy/typeshed/stdlib/this.pyi +2 -0
- mypy/typeshed/stdlib/threading.pyi +187 -0
- mypy/typeshed/stdlib/time.pyi +107 -0
- mypy/typeshed/stdlib/timeit.pyi +32 -0
- mypy/typeshed/stdlib/tkinter/__init__.pyi +3641 -0
- mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
- mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
- mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
- mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
- mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
- mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
- mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
- mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
- mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +10 -0
- mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
- mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
- mypy/typeshed/stdlib/tkinter/ttk.pyi +1191 -0
- mypy/typeshed/stdlib/token.pyi +159 -0
- mypy/typeshed/stdlib/tokenize.pyi +177 -0
- mypy/typeshed/stdlib/tomllib.pyi +10 -0
- mypy/typeshed/stdlib/trace.pyi +79 -0
- mypy/typeshed/stdlib/traceback.pyi +260 -0
- mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
- mypy/typeshed/stdlib/tty.pyi +30 -0
- mypy/typeshed/stdlib/turtle.pyi +713 -0
- mypy/typeshed/stdlib/types.pyi +605 -0
- mypy/typeshed/stdlib/typing.pyi +968 -0
- mypy/typeshed/stdlib/typing_extensions.pyi +503 -0
- mypy/typeshed/stdlib/unicodedata.pyi +71 -0
- mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
- mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
- mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
- mypy/typeshed/stdlib/unittest/case.pyi +342 -0
- mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
- mypy/typeshed/stdlib/unittest/main.pyi +69 -0
- mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
- mypy/typeshed/stdlib/unittest/result.pyi +46 -0
- mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
- mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
- mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
- mypy/typeshed/stdlib/unittest/util.pyi +23 -0
- mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
- mypy/typeshed/stdlib/urllib/error.pyi +23 -0
- mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
- mypy/typeshed/stdlib/urllib/request.pyi +399 -0
- mypy/typeshed/stdlib/urllib/response.pyi +43 -0
- mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
- mypy/typeshed/stdlib/uu.pyi +13 -0
- mypy/typeshed/stdlib/uuid.pyi +100 -0
- mypy/typeshed/stdlib/venv/__init__.pyi +79 -0
- mypy/typeshed/stdlib/warnings.pyi +112 -0
- mypy/typeshed/stdlib/wave.pyi +85 -0
- mypy/typeshed/stdlib/weakref.pyi +150 -0
- mypy/typeshed/stdlib/webbrowser.pyi +74 -0
- mypy/typeshed/stdlib/winreg.pyi +103 -0
- mypy/typeshed/stdlib/winsound.pyi +28 -0
- mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
- mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
- mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
- mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
- mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
- mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
- mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
- mypy/typeshed/stdlib/xdrlib.pyi +57 -0
- mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
- mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
- mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
- mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
- mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
- mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
- mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
- mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
- mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
- mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
- mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
- mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +321 -0
- mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
- mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
- mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
- mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
- mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
- mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
- mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
- mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
- mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
- mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
- mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
- mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
- mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
- mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
- mypy/typeshed/stdlib/xxlimited.pyi +22 -0
- mypy/typeshed/stdlib/zipapp.pyi +20 -0
- mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
- mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
- mypy/typeshed/stdlib/zipimport.pyi +32 -0
- mypy/typeshed/stdlib/zlib.pyi +56 -0
- mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
- mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
- mypy/typestate.py +323 -0
- mypy/typetraverser.py +142 -0
- mypy/typevars.py +93 -0
- mypy/typevartuples.py +32 -0
- mypy/util.py +869 -0
- mypy/version.py +1 -0
- mypy/visitor.py +621 -0
- mypy/xml/mypy-html.css +104 -0
- mypy/xml/mypy-html.xslt +81 -0
- mypy/xml/mypy-txt.xslt +100 -0
- mypy/xml/mypy.xsd +50 -0
- mypy_dev-1.9.0.dev0.dist-info/LICENSE +229 -0
- mypy_dev-1.9.0.dev0.dist-info/METADATA +39 -0
- mypy_dev-1.9.0.dev0.dist-info/RECORD +1018 -0
- mypy_dev-1.9.0.dev0.dist-info/WHEEL +5 -0
- mypy_dev-1.9.0.dev0.dist-info/entry_points.txt +6 -0
- mypy_dev-1.9.0.dev0.dist-info/top_level.txt +2 -0
- mypyc/README.md +133 -0
- mypyc/__init__.py +0 -0
- mypyc/__main__.py +57 -0
- mypyc/analysis/__init__.py +0 -0
- mypyc/analysis/attrdefined.py +436 -0
- mypyc/analysis/blockfreq.py +32 -0
- mypyc/analysis/dataflow.py +624 -0
- mypyc/analysis/ircheck.py +429 -0
- mypyc/analysis/selfleaks.py +207 -0
- mypyc/build.py +616 -0
- mypyc/codegen/__init__.py +0 -0
- mypyc/codegen/cstring.py +54 -0
- mypyc/codegen/emit.py +1193 -0
- mypyc/codegen/emitclass.py +1060 -0
- mypyc/codegen/emitfunc.py +846 -0
- mypyc/codegen/emitmodule.py +1131 -0
- mypyc/codegen/emitwrapper.py +979 -0
- mypyc/codegen/literals.py +302 -0
- mypyc/common.py +136 -0
- mypyc/crash.py +31 -0
- mypyc/doc/Makefile +20 -0
- mypyc/doc/bool_operations.rst +27 -0
- mypyc/doc/compilation_units.rst +20 -0
- mypyc/doc/conf.py +59 -0
- mypyc/doc/cpython-timings.md +25 -0
- mypyc/doc/dev-intro.md +548 -0
- mypyc/doc/dict_operations.rst +59 -0
- mypyc/doc/differences_from_python.rst +332 -0
- mypyc/doc/float_operations.rst +50 -0
- mypyc/doc/future.md +42 -0
- mypyc/doc/getting_started.rst +240 -0
- mypyc/doc/index.rst +61 -0
- mypyc/doc/int_operations.rst +162 -0
- mypyc/doc/introduction.rst +150 -0
- mypyc/doc/list_operations.rst +65 -0
- mypyc/doc/make.bat +35 -0
- mypyc/doc/native_classes.rst +206 -0
- mypyc/doc/native_operations.rst +55 -0
- mypyc/doc/performance_tips_and_tricks.rst +244 -0
- mypyc/doc/set_operations.rst +47 -0
- mypyc/doc/str_operations.rst +35 -0
- mypyc/doc/tuple_operations.rst +33 -0
- mypyc/doc/using_type_annotations.rst +398 -0
- mypyc/errors.py +29 -0
- mypyc/external/googletest/LICENSE +28 -0
- mypyc/external/googletest/README.md +280 -0
- mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
- mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
- mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
- mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
- mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
- mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
- mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
- mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
- mypyc/external/googletest/include/gtest/gtest.h +2236 -0
- mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
- mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
- mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
- mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
- mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
- mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
- mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
- mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
- mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
- mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
- mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
- mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
- mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
- mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
- mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
- mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
- mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
- mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
- mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
- mypyc/external/googletest/make/Makefile +61 -0
- mypyc/external/googletest/src/gtest-all.cc +48 -0
- mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
- mypyc/external/googletest/src/gtest-filepath.cc +387 -0
- mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
- mypyc/external/googletest/src/gtest-port.cc +1259 -0
- mypyc/external/googletest/src/gtest-printers.cc +373 -0
- mypyc/external/googletest/src/gtest-test-part.cc +110 -0
- mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
- mypyc/external/googletest/src/gtest.cc +5388 -0
- mypyc/external/googletest/src/gtest_main.cc +38 -0
- mypyc/ir/__init__.py +0 -0
- mypyc/ir/class_ir.py +499 -0
- mypyc/ir/func_ir.py +370 -0
- mypyc/ir/module_ir.py +88 -0
- mypyc/ir/ops.py +1642 -0
- mypyc/ir/pprint.py +496 -0
- mypyc/ir/rtypes.py +1038 -0
- mypyc/irbuild/__init__.py +0 -0
- mypyc/irbuild/ast_helpers.py +120 -0
- mypyc/irbuild/builder.py +1398 -0
- mypyc/irbuild/callable_class.py +173 -0
- mypyc/irbuild/classdef.py +850 -0
- mypyc/irbuild/constant_fold.py +95 -0
- mypyc/irbuild/context.py +186 -0
- mypyc/irbuild/env_class.py +223 -0
- mypyc/irbuild/expression.py +1067 -0
- mypyc/irbuild/for_helpers.py +1046 -0
- mypyc/irbuild/format_str_tokenizer.py +250 -0
- mypyc/irbuild/function.py +1089 -0
- mypyc/irbuild/generator.py +346 -0
- mypyc/irbuild/ll_builder.py +2407 -0
- mypyc/irbuild/main.py +153 -0
- mypyc/irbuild/mapper.py +221 -0
- mypyc/irbuild/match.py +355 -0
- mypyc/irbuild/nonlocalcontrol.py +197 -0
- mypyc/irbuild/prebuildvisitor.py +203 -0
- mypyc/irbuild/prepare.py +609 -0
- mypyc/irbuild/specialize.py +822 -0
- mypyc/irbuild/statement.py +1017 -0
- mypyc/irbuild/targets.py +57 -0
- mypyc/irbuild/util.py +189 -0
- mypyc/irbuild/visitor.py +401 -0
- mypyc/irbuild/vtable.py +82 -0
- mypyc/lib-rt/CPy.h +643 -0
- mypyc/lib-rt/bytes_ops.c +143 -0
- mypyc/lib-rt/dict_ops.c +446 -0
- mypyc/lib-rt/exc_ops.c +259 -0
- mypyc/lib-rt/float_ops.c +192 -0
- mypyc/lib-rt/generic_ops.c +64 -0
- mypyc/lib-rt/getargs.c +450 -0
- mypyc/lib-rt/getargsfast.c +569 -0
- mypyc/lib-rt/init.c +13 -0
- mypyc/lib-rt/int_ops.c +803 -0
- mypyc/lib-rt/list_ops.c +335 -0
- mypyc/lib-rt/misc_ops.c +942 -0
- mypyc/lib-rt/module_shim.tmpl +18 -0
- mypyc/lib-rt/mypyc_util.h +118 -0
- mypyc/lib-rt/pythoncapi_compat.h +497 -0
- mypyc/lib-rt/pythonsupport.h +548 -0
- mypyc/lib-rt/set_ops.c +17 -0
- mypyc/lib-rt/setup.py +70 -0
- mypyc/lib-rt/str_ops.c +241 -0
- mypyc/lib-rt/test_capi.cc +585 -0
- mypyc/lib-rt/tuple_ops.c +61 -0
- mypyc/namegen.py +115 -0
- mypyc/options.py +32 -0
- mypyc/primitives/__init__.py +0 -0
- mypyc/primitives/bytes_ops.py +101 -0
- mypyc/primitives/dict_ops.py +325 -0
- mypyc/primitives/exc_ops.py +101 -0
- mypyc/primitives/float_ops.py +168 -0
- mypyc/primitives/generic_ops.py +384 -0
- mypyc/primitives/int_ops.py +304 -0
- mypyc/primitives/list_ops.py +300 -0
- mypyc/primitives/misc_ops.py +241 -0
- mypyc/primitives/registry.py +323 -0
- mypyc/primitives/set_ops.py +121 -0
- mypyc/primitives/str_ops.py +229 -0
- mypyc/primitives/tuple_ops.py +83 -0
- mypyc/rt_subtype.py +77 -0
- mypyc/sametype.py +83 -0
- mypyc/subtype.py +88 -0
- mypyc/test/__init__.py +0 -0
- mypyc/test/config.py +13 -0
- mypyc/test/test_alwaysdefined.py +46 -0
- mypyc/test/test_analysis.py +77 -0
- mypyc/test/test_cheader.py +45 -0
- mypyc/test/test_commandline.py +82 -0
- mypyc/test/test_emit.py +69 -0
- mypyc/test/test_emitclass.py +35 -0
- mypyc/test/test_emitfunc.py +926 -0
- mypyc/test/test_emitwrapper.py +60 -0
- mypyc/test/test_exceptions.py +56 -0
- mypyc/test/test_external.py +49 -0
- mypyc/test/test_irbuild.py +87 -0
- mypyc/test/test_ircheck.py +199 -0
- mypyc/test/test_literals.py +90 -0
- mypyc/test/test_namegen.py +48 -0
- mypyc/test/test_pprint.py +42 -0
- mypyc/test/test_rarray.py +48 -0
- mypyc/test/test_refcount.py +59 -0
- mypyc/test/test_run.py +426 -0
- mypyc/test/test_serialization.py +108 -0
- mypyc/test/test_struct.py +112 -0
- mypyc/test/test_tuplename.py +33 -0
- mypyc/test/test_typeops.py +97 -0
- mypyc/test/testutil.py +283 -0
- mypyc/test-data/alwaysdefined.test +732 -0
- mypyc/test-data/analysis.test +603 -0
- mypyc/test-data/commandline.test +245 -0
- mypyc/test-data/driver/driver.py +48 -0
- mypyc/test-data/exceptions-freq.test +125 -0
- mypyc/test-data/exceptions.test +713 -0
- mypyc/test-data/fixtures/ir.py +373 -0
- mypyc/test-data/fixtures/testutil.py +103 -0
- mypyc/test-data/fixtures/typing-full.pyi +169 -0
- mypyc/test-data/irbuild-any.test +238 -0
- mypyc/test-data/irbuild-basic.test +3690 -0
- mypyc/test-data/irbuild-bool.test +463 -0
- mypyc/test-data/irbuild-bytes.test +184 -0
- mypyc/test-data/irbuild-classes.test +1303 -0
- mypyc/test-data/irbuild-constant-fold.test +480 -0
- mypyc/test-data/irbuild-dict.test +585 -0
- mypyc/test-data/irbuild-dunders.test +223 -0
- mypyc/test-data/irbuild-float.test +497 -0
- mypyc/test-data/irbuild-generics.test +151 -0
- mypyc/test-data/irbuild-glue-methods.test +437 -0
- mypyc/test-data/irbuild-i16.test +526 -0
- mypyc/test-data/irbuild-i32.test +598 -0
- mypyc/test-data/irbuild-i64.test +2164 -0
- mypyc/test-data/irbuild-int.test +235 -0
- mypyc/test-data/irbuild-isinstance.test +109 -0
- mypyc/test-data/irbuild-lists.test +547 -0
- mypyc/test-data/irbuild-match.test +1708 -0
- mypyc/test-data/irbuild-math.test +64 -0
- mypyc/test-data/irbuild-nested.test +807 -0
- mypyc/test-data/irbuild-optional.test +536 -0
- mypyc/test-data/irbuild-set.test +838 -0
- mypyc/test-data/irbuild-singledispatch.test +257 -0
- mypyc/test-data/irbuild-statements.test +1149 -0
- mypyc/test-data/irbuild-str.test +314 -0
- mypyc/test-data/irbuild-strip-asserts.test +12 -0
- mypyc/test-data/irbuild-try.test +523 -0
- mypyc/test-data/irbuild-tuple.test +462 -0
- mypyc/test-data/irbuild-u8.test +543 -0
- mypyc/test-data/irbuild-unreachable.test +241 -0
- mypyc/test-data/irbuild-vectorcall.test +153 -0
- mypyc/test-data/refcount.test +1588 -0
- mypyc/test-data/run-async.test +145 -0
- mypyc/test-data/run-attrs.test +318 -0
- mypyc/test-data/run-bench.test +196 -0
- mypyc/test-data/run-bools.test +229 -0
- mypyc/test-data/run-bytes.test +302 -0
- mypyc/test-data/run-classes.test +2505 -0
- mypyc/test-data/run-dicts.test +334 -0
- mypyc/test-data/run-dunders.test +945 -0
- mypyc/test-data/run-exceptions.test +448 -0
- mypyc/test-data/run-floats.test +516 -0
- mypyc/test-data/run-functions.test +1310 -0
- mypyc/test-data/run-generators.test +681 -0
- mypyc/test-data/run-i16.test +338 -0
- mypyc/test-data/run-i32.test +336 -0
- mypyc/test-data/run-i64.test +1519 -0
- mypyc/test-data/run-imports.test +265 -0
- mypyc/test-data/run-integers.test +540 -0
- mypyc/test-data/run-lists.test +411 -0
- mypyc/test-data/run-loops.test +485 -0
- mypyc/test-data/run-match.test +283 -0
- mypyc/test-data/run-math.test +106 -0
- mypyc/test-data/run-misc.test +1168 -0
- mypyc/test-data/run-multimodule.test +887 -0
- mypyc/test-data/run-mypy-sim.test +138 -0
- mypyc/test-data/run-primitives.test +375 -0
- mypyc/test-data/run-python37.test +159 -0
- mypyc/test-data/run-python38.test +88 -0
- mypyc/test-data/run-sets.test +150 -0
- mypyc/test-data/run-singledispatch.test +698 -0
- mypyc/test-data/run-strings.test +641 -0
- mypyc/test-data/run-traits.test +411 -0
- mypyc/test-data/run-tuples.test +258 -0
- mypyc/test-data/run-u8.test +303 -0
- mypyc/transform/__init__.py +0 -0
- mypyc/transform/exceptions.py +182 -0
- mypyc/transform/refcount.py +294 -0
- mypyc/transform/uninit.py +190 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Constant folding of IR values.
|
|
2
|
+
|
|
3
|
+
For example, 3 + 5 can be constant folded into 8.
|
|
4
|
+
|
|
5
|
+
This is mostly like mypy.constant_fold, but we can bind some additional
|
|
6
|
+
NameExpr and MemberExpr references here, since we have more knowledge
|
|
7
|
+
about which definitions can be trusted -- we constant fold only references
|
|
8
|
+
to other compiled modules in the same compilation unit.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import Final, Union
|
|
14
|
+
|
|
15
|
+
from mypy.constant_fold import constant_fold_binary_op, constant_fold_unary_op
|
|
16
|
+
from mypy.nodes import (
|
|
17
|
+
BytesExpr,
|
|
18
|
+
ComplexExpr,
|
|
19
|
+
Expression,
|
|
20
|
+
FloatExpr,
|
|
21
|
+
IntExpr,
|
|
22
|
+
MemberExpr,
|
|
23
|
+
NameExpr,
|
|
24
|
+
OpExpr,
|
|
25
|
+
StrExpr,
|
|
26
|
+
UnaryExpr,
|
|
27
|
+
Var,
|
|
28
|
+
)
|
|
29
|
+
from mypyc.irbuild.builder import IRBuilder
|
|
30
|
+
from mypyc.irbuild.util import bytes_from_str
|
|
31
|
+
|
|
32
|
+
# All possible result types of constant folding
|
|
33
|
+
ConstantValue = Union[int, float, complex, str, bytes]
|
|
34
|
+
CONST_TYPES: Final = (int, float, complex, str, bytes)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def constant_fold_expr(builder: IRBuilder, expr: Expression) -> ConstantValue | None:
|
|
38
|
+
"""Return the constant value of an expression for supported operations.
|
|
39
|
+
|
|
40
|
+
Return None otherwise.
|
|
41
|
+
"""
|
|
42
|
+
if isinstance(expr, IntExpr):
|
|
43
|
+
return expr.value
|
|
44
|
+
if isinstance(expr, FloatExpr):
|
|
45
|
+
return expr.value
|
|
46
|
+
if isinstance(expr, StrExpr):
|
|
47
|
+
return expr.value
|
|
48
|
+
if isinstance(expr, BytesExpr):
|
|
49
|
+
return bytes_from_str(expr.value)
|
|
50
|
+
if isinstance(expr, ComplexExpr):
|
|
51
|
+
return expr.value
|
|
52
|
+
elif isinstance(expr, NameExpr):
|
|
53
|
+
node = expr.node
|
|
54
|
+
if isinstance(node, Var) and node.is_final:
|
|
55
|
+
final_value = node.final_value
|
|
56
|
+
if isinstance(final_value, (CONST_TYPES)):
|
|
57
|
+
return final_value
|
|
58
|
+
elif isinstance(expr, MemberExpr):
|
|
59
|
+
final = builder.get_final_ref(expr)
|
|
60
|
+
if final is not None:
|
|
61
|
+
fn, final_var, native = final
|
|
62
|
+
if final_var.is_final:
|
|
63
|
+
final_value = final_var.final_value
|
|
64
|
+
if isinstance(final_value, (CONST_TYPES)):
|
|
65
|
+
return final_value
|
|
66
|
+
elif isinstance(expr, OpExpr):
|
|
67
|
+
left = constant_fold_expr(builder, expr.left)
|
|
68
|
+
right = constant_fold_expr(builder, expr.right)
|
|
69
|
+
if left is not None and right is not None:
|
|
70
|
+
return constant_fold_binary_op_extended(expr.op, left, right)
|
|
71
|
+
elif isinstance(expr, UnaryExpr):
|
|
72
|
+
value = constant_fold_expr(builder, expr.expr)
|
|
73
|
+
if value is not None and not isinstance(value, bytes):
|
|
74
|
+
return constant_fold_unary_op(expr.op, value)
|
|
75
|
+
return None
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def constant_fold_binary_op_extended(
|
|
79
|
+
op: str, left: ConstantValue, right: ConstantValue
|
|
80
|
+
) -> ConstantValue | None:
|
|
81
|
+
"""Like mypy's constant_fold_binary_op(), but includes bytes support.
|
|
82
|
+
|
|
83
|
+
mypy cannot use constant folded bytes easily so it's simpler to only support them in mypyc.
|
|
84
|
+
"""
|
|
85
|
+
if not isinstance(left, bytes) and not isinstance(right, bytes):
|
|
86
|
+
return constant_fold_binary_op(op, left, right)
|
|
87
|
+
|
|
88
|
+
if op == "+" and isinstance(left, bytes) and isinstance(right, bytes):
|
|
89
|
+
return left + right
|
|
90
|
+
elif op == "*" and isinstance(left, bytes) and isinstance(right, int):
|
|
91
|
+
return left * right
|
|
92
|
+
elif op == "*" and isinstance(left, int) and isinstance(right, bytes):
|
|
93
|
+
return left * right
|
|
94
|
+
|
|
95
|
+
return None
|
mypyc/irbuild/context.py
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"""Helpers that store information about functions and the related classes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from mypy.nodes import FuncItem
|
|
6
|
+
from mypyc.ir.class_ir import ClassIR
|
|
7
|
+
from mypyc.ir.func_ir import INVALID_FUNC_DEF
|
|
8
|
+
from mypyc.ir.ops import BasicBlock, Value
|
|
9
|
+
from mypyc.irbuild.targets import AssignmentTarget
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FuncInfo:
|
|
13
|
+
"""Contains information about functions as they are generated."""
|
|
14
|
+
|
|
15
|
+
def __init__(
|
|
16
|
+
self,
|
|
17
|
+
fitem: FuncItem = INVALID_FUNC_DEF,
|
|
18
|
+
name: str = "",
|
|
19
|
+
class_name: str | None = None,
|
|
20
|
+
namespace: str = "",
|
|
21
|
+
is_nested: bool = False,
|
|
22
|
+
contains_nested: bool = False,
|
|
23
|
+
is_decorated: bool = False,
|
|
24
|
+
in_non_ext: bool = False,
|
|
25
|
+
add_nested_funcs_to_env: bool = False,
|
|
26
|
+
) -> None:
|
|
27
|
+
self.fitem = fitem
|
|
28
|
+
self.name = name
|
|
29
|
+
self.class_name = class_name
|
|
30
|
+
self.ns = namespace
|
|
31
|
+
# Callable classes implement the '__call__' method, and are used to represent functions
|
|
32
|
+
# that are nested inside of other functions.
|
|
33
|
+
self._callable_class: ImplicitClass | None = None
|
|
34
|
+
# Environment classes are ClassIR instances that contain attributes representing the
|
|
35
|
+
# variables in the environment of the function they correspond to. Environment classes are
|
|
36
|
+
# generated for functions that contain nested functions.
|
|
37
|
+
self._env_class: ClassIR | None = None
|
|
38
|
+
# Generator classes implement the '__next__' method, and are used to represent generators
|
|
39
|
+
# returned by generator functions.
|
|
40
|
+
self._generator_class: GeneratorClass | None = None
|
|
41
|
+
# Environment class registers are the local registers associated with instances of an
|
|
42
|
+
# environment class, used for getting and setting attributes. curr_env_reg is the register
|
|
43
|
+
# associated with the current environment.
|
|
44
|
+
self._curr_env_reg: Value | None = None
|
|
45
|
+
# These are flags denoting whether a given function is nested, contains a nested function,
|
|
46
|
+
# is decorated, or is within a non-extension class.
|
|
47
|
+
self.is_nested = is_nested
|
|
48
|
+
self.contains_nested = contains_nested
|
|
49
|
+
self.is_decorated = is_decorated
|
|
50
|
+
self.in_non_ext = in_non_ext
|
|
51
|
+
self.add_nested_funcs_to_env = add_nested_funcs_to_env
|
|
52
|
+
|
|
53
|
+
# TODO: add field for ret_type: RType = none_rprimitive
|
|
54
|
+
|
|
55
|
+
def namespaced_name(self) -> str:
|
|
56
|
+
return "_".join(x for x in [self.name, self.class_name, self.ns] if x)
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def is_generator(self) -> bool:
|
|
60
|
+
return self.fitem.is_generator or self.fitem.is_coroutine
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def is_coroutine(self) -> bool:
|
|
64
|
+
return self.fitem.is_coroutine
|
|
65
|
+
|
|
66
|
+
@property
|
|
67
|
+
def callable_class(self) -> ImplicitClass:
|
|
68
|
+
assert self._callable_class is not None
|
|
69
|
+
return self._callable_class
|
|
70
|
+
|
|
71
|
+
@callable_class.setter
|
|
72
|
+
def callable_class(self, cls: ImplicitClass) -> None:
|
|
73
|
+
self._callable_class = cls
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def env_class(self) -> ClassIR:
|
|
77
|
+
assert self._env_class is not None
|
|
78
|
+
return self._env_class
|
|
79
|
+
|
|
80
|
+
@env_class.setter
|
|
81
|
+
def env_class(self, ir: ClassIR) -> None:
|
|
82
|
+
self._env_class = ir
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def generator_class(self) -> GeneratorClass:
|
|
86
|
+
assert self._generator_class is not None
|
|
87
|
+
return self._generator_class
|
|
88
|
+
|
|
89
|
+
@generator_class.setter
|
|
90
|
+
def generator_class(self, cls: GeneratorClass) -> None:
|
|
91
|
+
self._generator_class = cls
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def curr_env_reg(self) -> Value:
|
|
95
|
+
assert self._curr_env_reg is not None
|
|
96
|
+
return self._curr_env_reg
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class ImplicitClass:
|
|
100
|
+
"""Contains information regarding implicitly generated classes.
|
|
101
|
+
|
|
102
|
+
Implicit classes are generated for nested functions and generator
|
|
103
|
+
functions. They are not explicitly defined in the source code.
|
|
104
|
+
|
|
105
|
+
NOTE: This is both a concrete class and used as a base class.
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
def __init__(self, ir: ClassIR) -> None:
|
|
109
|
+
# The ClassIR instance associated with this class.
|
|
110
|
+
self.ir = ir
|
|
111
|
+
# The register associated with the 'self' instance for this generator class.
|
|
112
|
+
self._self_reg: Value | None = None
|
|
113
|
+
# Environment class registers are the local registers associated with instances of an
|
|
114
|
+
# environment class, used for getting and setting attributes. curr_env_reg is the register
|
|
115
|
+
# associated with the current environment. prev_env_reg is the self.__mypyc_env__ field
|
|
116
|
+
# associated with the previous environment.
|
|
117
|
+
self._curr_env_reg: Value | None = None
|
|
118
|
+
self._prev_env_reg: Value | None = None
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def self_reg(self) -> Value:
|
|
122
|
+
assert self._self_reg is not None
|
|
123
|
+
return self._self_reg
|
|
124
|
+
|
|
125
|
+
@self_reg.setter
|
|
126
|
+
def self_reg(self, reg: Value) -> None:
|
|
127
|
+
self._self_reg = reg
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def curr_env_reg(self) -> Value:
|
|
131
|
+
assert self._curr_env_reg is not None
|
|
132
|
+
return self._curr_env_reg
|
|
133
|
+
|
|
134
|
+
@curr_env_reg.setter
|
|
135
|
+
def curr_env_reg(self, reg: Value) -> None:
|
|
136
|
+
self._curr_env_reg = reg
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def prev_env_reg(self) -> Value:
|
|
140
|
+
assert self._prev_env_reg is not None
|
|
141
|
+
return self._prev_env_reg
|
|
142
|
+
|
|
143
|
+
@prev_env_reg.setter
|
|
144
|
+
def prev_env_reg(self, reg: Value) -> None:
|
|
145
|
+
self._prev_env_reg = reg
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class GeneratorClass(ImplicitClass):
|
|
149
|
+
"""Contains information about implicit generator function classes."""
|
|
150
|
+
|
|
151
|
+
def __init__(self, ir: ClassIR) -> None:
|
|
152
|
+
super().__init__(ir)
|
|
153
|
+
# This register holds the label number that the '__next__' function should go to the next
|
|
154
|
+
# time it is called.
|
|
155
|
+
self._next_label_reg: Value | None = None
|
|
156
|
+
self._next_label_target: AssignmentTarget | None = None
|
|
157
|
+
|
|
158
|
+
# These registers hold the error values for the generator object for the case that the
|
|
159
|
+
# 'throw' function is called.
|
|
160
|
+
self.exc_regs: tuple[Value, Value, Value] | None = None
|
|
161
|
+
|
|
162
|
+
# Holds the arg passed to send
|
|
163
|
+
self.send_arg_reg: Value | None = None
|
|
164
|
+
|
|
165
|
+
# The switch block is used to decide which instruction to go using the value held in the
|
|
166
|
+
# next-label register.
|
|
167
|
+
self.switch_block = BasicBlock()
|
|
168
|
+
self.continuation_blocks: list[BasicBlock] = []
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def next_label_reg(self) -> Value:
|
|
172
|
+
assert self._next_label_reg is not None
|
|
173
|
+
return self._next_label_reg
|
|
174
|
+
|
|
175
|
+
@next_label_reg.setter
|
|
176
|
+
def next_label_reg(self, reg: Value) -> None:
|
|
177
|
+
self._next_label_reg = reg
|
|
178
|
+
|
|
179
|
+
@property
|
|
180
|
+
def next_label_target(self) -> AssignmentTarget:
|
|
181
|
+
assert self._next_label_target is not None
|
|
182
|
+
return self._next_label_target
|
|
183
|
+
|
|
184
|
+
@next_label_target.setter
|
|
185
|
+
def next_label_target(self, target: AssignmentTarget) -> None:
|
|
186
|
+
self._next_label_target = target
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"""Generate classes representing function environments (+ related operations).
|
|
2
|
+
|
|
3
|
+
If we have a nested function that has non-local (free) variables, access to the
|
|
4
|
+
non-locals is via an instance of an environment class. Example:
|
|
5
|
+
|
|
6
|
+
def f() -> int:
|
|
7
|
+
x = 0 # Make 'x' an attribute of an environment class instance
|
|
8
|
+
|
|
9
|
+
def g() -> int:
|
|
10
|
+
# We have access to the environment class instance to
|
|
11
|
+
# allow accessing 'x'
|
|
12
|
+
return x + 2
|
|
13
|
+
|
|
14
|
+
x = x + 1 # Modify the attribute
|
|
15
|
+
return g()
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
from mypy.nodes import Argument, FuncDef, SymbolNode, Var
|
|
21
|
+
from mypyc.common import BITMAP_BITS, ENV_ATTR_NAME, SELF_NAME, bitmap_name
|
|
22
|
+
from mypyc.ir.class_ir import ClassIR
|
|
23
|
+
from mypyc.ir.ops import Call, GetAttr, SetAttr, Value
|
|
24
|
+
from mypyc.ir.rtypes import RInstance, bitmap_rprimitive, object_rprimitive
|
|
25
|
+
from mypyc.irbuild.builder import IRBuilder, SymbolTarget
|
|
26
|
+
from mypyc.irbuild.context import FuncInfo, GeneratorClass, ImplicitClass
|
|
27
|
+
from mypyc.irbuild.targets import AssignmentTargetAttr
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def setup_env_class(builder: IRBuilder) -> ClassIR:
|
|
31
|
+
"""Generate a class representing a function environment.
|
|
32
|
+
|
|
33
|
+
Note that the variables in the function environment are not
|
|
34
|
+
actually populated here. This is because when the environment
|
|
35
|
+
class is generated, the function environment has not yet been
|
|
36
|
+
visited. This behavior is allowed so that when the compiler visits
|
|
37
|
+
nested functions, it can use the returned ClassIR instance to
|
|
38
|
+
figure out free variables it needs to access. The remaining
|
|
39
|
+
attributes of the environment class are populated when the
|
|
40
|
+
environment registers are loaded.
|
|
41
|
+
|
|
42
|
+
Return a ClassIR representing an environment for a function
|
|
43
|
+
containing a nested function.
|
|
44
|
+
"""
|
|
45
|
+
env_class = ClassIR(
|
|
46
|
+
f"{builder.fn_info.namespaced_name()}_env", builder.module_name, is_generated=True
|
|
47
|
+
)
|
|
48
|
+
env_class.attributes[SELF_NAME] = RInstance(env_class)
|
|
49
|
+
if builder.fn_info.is_nested:
|
|
50
|
+
# If the function is nested, its environment class must contain an environment
|
|
51
|
+
# attribute pointing to its encapsulating functions' environment class.
|
|
52
|
+
env_class.attributes[ENV_ATTR_NAME] = RInstance(builder.fn_infos[-2].env_class)
|
|
53
|
+
env_class.mro = [env_class]
|
|
54
|
+
builder.fn_info.env_class = env_class
|
|
55
|
+
builder.classes.append(env_class)
|
|
56
|
+
return env_class
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def finalize_env_class(builder: IRBuilder) -> None:
|
|
60
|
+
"""Generate, instantiate, and set up the environment of an environment class."""
|
|
61
|
+
instantiate_env_class(builder)
|
|
62
|
+
|
|
63
|
+
# Iterate through the function arguments and replace local definitions (using registers)
|
|
64
|
+
# that were previously added to the environment with references to the function's
|
|
65
|
+
# environment class.
|
|
66
|
+
if builder.fn_info.is_nested:
|
|
67
|
+
add_args_to_env(builder, local=False, base=builder.fn_info.callable_class)
|
|
68
|
+
else:
|
|
69
|
+
add_args_to_env(builder, local=False, base=builder.fn_info)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def instantiate_env_class(builder: IRBuilder) -> Value:
|
|
73
|
+
"""Assign an environment class to a register named after the given function definition."""
|
|
74
|
+
curr_env_reg = builder.add(
|
|
75
|
+
Call(builder.fn_info.env_class.ctor, [], builder.fn_info.fitem.line)
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
if builder.fn_info.is_nested:
|
|
79
|
+
builder.fn_info.callable_class._curr_env_reg = curr_env_reg
|
|
80
|
+
builder.add(
|
|
81
|
+
SetAttr(
|
|
82
|
+
curr_env_reg,
|
|
83
|
+
ENV_ATTR_NAME,
|
|
84
|
+
builder.fn_info.callable_class.prev_env_reg,
|
|
85
|
+
builder.fn_info.fitem.line,
|
|
86
|
+
)
|
|
87
|
+
)
|
|
88
|
+
else:
|
|
89
|
+
builder.fn_info._curr_env_reg = curr_env_reg
|
|
90
|
+
|
|
91
|
+
return curr_env_reg
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def load_env_registers(builder: IRBuilder) -> None:
|
|
95
|
+
"""Load the registers for the current FuncItem being visited.
|
|
96
|
+
|
|
97
|
+
Adds the arguments of the FuncItem to the environment. If the
|
|
98
|
+
FuncItem is nested inside of another function, then this also
|
|
99
|
+
loads all of the outer environments of the FuncItem into registers
|
|
100
|
+
so that they can be used when accessing free variables.
|
|
101
|
+
"""
|
|
102
|
+
add_args_to_env(builder, local=True)
|
|
103
|
+
|
|
104
|
+
fn_info = builder.fn_info
|
|
105
|
+
fitem = fn_info.fitem
|
|
106
|
+
if fn_info.is_nested:
|
|
107
|
+
load_outer_envs(builder, fn_info.callable_class)
|
|
108
|
+
# If this is a FuncDef, then make sure to load the FuncDef into its own environment
|
|
109
|
+
# class so that the function can be called recursively.
|
|
110
|
+
if isinstance(fitem, FuncDef) and fn_info.add_nested_funcs_to_env:
|
|
111
|
+
setup_func_for_recursive_call(builder, fitem, fn_info.callable_class)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def load_outer_env(
|
|
115
|
+
builder: IRBuilder, base: Value, outer_env: dict[SymbolNode, SymbolTarget]
|
|
116
|
+
) -> Value:
|
|
117
|
+
"""Load the environment class for a given base into a register.
|
|
118
|
+
|
|
119
|
+
Additionally, iterates through all of the SymbolNode and
|
|
120
|
+
AssignmentTarget instances of the environment at the given index's
|
|
121
|
+
symtable, and adds those instances to the environment of the
|
|
122
|
+
current environment. This is done so that the current environment
|
|
123
|
+
can access outer environment variables without having to reload
|
|
124
|
+
all of the environment registers.
|
|
125
|
+
|
|
126
|
+
Returns the register where the environment class was loaded.
|
|
127
|
+
"""
|
|
128
|
+
env = builder.add(GetAttr(base, ENV_ATTR_NAME, builder.fn_info.fitem.line))
|
|
129
|
+
assert isinstance(env.type, RInstance), f"{env} must be of type RInstance"
|
|
130
|
+
|
|
131
|
+
for symbol, target in outer_env.items():
|
|
132
|
+
env.type.class_ir.attributes[symbol.name] = target.type
|
|
133
|
+
symbol_target = AssignmentTargetAttr(env, symbol.name)
|
|
134
|
+
builder.add_target(symbol, symbol_target)
|
|
135
|
+
|
|
136
|
+
return env
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def load_outer_envs(builder: IRBuilder, base: ImplicitClass) -> None:
|
|
140
|
+
index = len(builder.builders) - 2
|
|
141
|
+
|
|
142
|
+
# Load the first outer environment. This one is special because it gets saved in the
|
|
143
|
+
# FuncInfo instance's prev_env_reg field.
|
|
144
|
+
if index > 1:
|
|
145
|
+
# outer_env = builder.fn_infos[index].environment
|
|
146
|
+
outer_env = builder.symtables[index]
|
|
147
|
+
if isinstance(base, GeneratorClass):
|
|
148
|
+
base.prev_env_reg = load_outer_env(builder, base.curr_env_reg, outer_env)
|
|
149
|
+
else:
|
|
150
|
+
base.prev_env_reg = load_outer_env(builder, base.self_reg, outer_env)
|
|
151
|
+
env_reg = base.prev_env_reg
|
|
152
|
+
index -= 1
|
|
153
|
+
|
|
154
|
+
# Load the remaining outer environments into registers.
|
|
155
|
+
while index > 1:
|
|
156
|
+
# outer_env = builder.fn_infos[index].environment
|
|
157
|
+
outer_env = builder.symtables[index]
|
|
158
|
+
env_reg = load_outer_env(builder, env_reg, outer_env)
|
|
159
|
+
index -= 1
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def num_bitmap_args(builder: IRBuilder, args: list[Argument]) -> int:
|
|
163
|
+
n = 0
|
|
164
|
+
for arg in args:
|
|
165
|
+
t = builder.type_to_rtype(arg.variable.type)
|
|
166
|
+
if t.error_overlap and arg.kind.is_optional():
|
|
167
|
+
n += 1
|
|
168
|
+
return (n + (BITMAP_BITS - 1)) // BITMAP_BITS
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def add_args_to_env(
|
|
172
|
+
builder: IRBuilder,
|
|
173
|
+
local: bool = True,
|
|
174
|
+
base: FuncInfo | ImplicitClass | None = None,
|
|
175
|
+
reassign: bool = True,
|
|
176
|
+
) -> None:
|
|
177
|
+
fn_info = builder.fn_info
|
|
178
|
+
args = fn_info.fitem.arguments
|
|
179
|
+
nb = num_bitmap_args(builder, args)
|
|
180
|
+
if local:
|
|
181
|
+
for arg in args:
|
|
182
|
+
rtype = builder.type_to_rtype(arg.variable.type)
|
|
183
|
+
builder.add_local_reg(arg.variable, rtype, is_arg=True)
|
|
184
|
+
for i in reversed(range(nb)):
|
|
185
|
+
builder.add_local_reg(Var(bitmap_name(i)), bitmap_rprimitive, is_arg=True)
|
|
186
|
+
else:
|
|
187
|
+
for arg in args:
|
|
188
|
+
if is_free_variable(builder, arg.variable) or fn_info.is_generator:
|
|
189
|
+
rtype = builder.type_to_rtype(arg.variable.type)
|
|
190
|
+
assert base is not None, "base cannot be None for adding nonlocal args"
|
|
191
|
+
builder.add_var_to_env_class(arg.variable, rtype, base, reassign=reassign)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def setup_func_for_recursive_call(builder: IRBuilder, fdef: FuncDef, base: ImplicitClass) -> None:
|
|
195
|
+
"""Enable calling a nested function (with a callable class) recursively.
|
|
196
|
+
|
|
197
|
+
Adds the instance of the callable class representing the given
|
|
198
|
+
FuncDef to a register in the environment so that the function can
|
|
199
|
+
be called recursively. Note that this needs to be done only for
|
|
200
|
+
nested functions.
|
|
201
|
+
"""
|
|
202
|
+
# First, set the attribute of the environment class so that GetAttr can be called on it.
|
|
203
|
+
prev_env = builder.fn_infos[-2].env_class
|
|
204
|
+
prev_env.attributes[fdef.name] = builder.type_to_rtype(fdef.type)
|
|
205
|
+
|
|
206
|
+
if isinstance(base, GeneratorClass):
|
|
207
|
+
# If we are dealing with a generator class, then we need to first get the register
|
|
208
|
+
# holding the current environment class, and load the previous environment class from
|
|
209
|
+
# there.
|
|
210
|
+
prev_env_reg = builder.add(GetAttr(base.curr_env_reg, ENV_ATTR_NAME, -1))
|
|
211
|
+
else:
|
|
212
|
+
prev_env_reg = base.prev_env_reg
|
|
213
|
+
|
|
214
|
+
# Obtain the instance of the callable class representing the FuncDef, and add it to the
|
|
215
|
+
# current environment.
|
|
216
|
+
val = builder.add(GetAttr(prev_env_reg, fdef.name, -1))
|
|
217
|
+
target = builder.add_local_reg(fdef, object_rprimitive)
|
|
218
|
+
builder.assign(target, val, -1)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def is_free_variable(builder: IRBuilder, symbol: SymbolNode) -> bool:
|
|
222
|
+
fitem = builder.fn_info.fitem
|
|
223
|
+
return fitem in builder.free_variables and symbol in builder.free_variables[fitem]
|