def _bench_mypy(loops=20, *, legacy=False):
    """Meansure running mypy on a file N times.

    The target file is large (over 2300 lines) with extensive use
    of type hints.

    Note that mypy's main() is called directly, which means
    the measurement includes the time it takes to read the file
    from disk.  Also, all output is discarded (sent to /dev/null).
    """
    elapsed = 0
    times = []
    with open(os.devnull, "w") as devnull:
        for i in range(loops):
            if legacy:
                print(i)
            # This is a macro benchmark for a Python implementation
            # so "elapsed" covers more than just how long main() takes.
            t0 = pyperf.perf_counter()
            try:
                main(None, devnull, devnull, TARGETS, clean_exit=True)
            except SystemExit:
                pass
            t1 = pyperf.perf_counter()

            elapsed += t1 - t0
            times.append(t0)
        times.append(pyperf.perf_counter())
    return elapsed, times
Beispiel #2
0
 def f(stdout: TextIO, stderr: TextIO) -> None:
     old_stdout = sys.stdout
     old_stderr = sys.stderr
     try:
         sys.stdout = stdout
         sys.stderr = stderr
         main(args)
     finally:
         sys.stdout = old_stdout
         sys.stderr = old_stderr
Beispiel #3
0
 def _run(self, path):
     try:
         from mypy.main import main
     except ImportError:
         print('Unable to import mypy', file=sys.stderr)
     else:
         args = [path]
         rcfile = self.root_dir / '.mypy.ini'
         if rcfile.is_file():
             args.append('--config-file={}'.format(rcfile))
         main(None, args)
def console_entry() -> None:
    try:
        main(None, sys.stdout, sys.stderr)
        sys.stdout.flush()
        sys.stderr.flush()
    except BrokenPipeError:
        # Python flushes standard streams on exit; redirect remaining output
        # to devnull to avoid another BrokenPipeError at shutdown
        devnull = os.open(os.devnull, os.O_WRONLY)
        os.dup2(devnull, sys.stdout.fileno())
        sys.exit(2)
Beispiel #5
0
 def run(self):
     self.distribution.fetch_build_eggs([
         'mypy==0.641',
     ])
     from mypy.main import main
     main(
         script_path='',
         args=[
             '--ignore-missing-imports',
             '.',
         ]
     )
Beispiel #6
0
def run(args: List[str]) -> Tuple[str, str, int]:
    old_stdout = sys.stdout
    new_stdout = StringIO()
    sys.stdout = new_stdout

    old_stderr = sys.stderr
    new_stderr = StringIO()
    sys.stderr = new_stderr

    try:
        main(None, args=args)
        exit_status = 0
    except SystemExit as system_exit:
        exit_status = system_exit.code
    finally:
        sys.stdout = old_stdout
        sys.stderr = old_stderr

    return new_stdout.getvalue(), new_stderr.getvalue(), exit_status
Beispiel #7
0
def run(params: str) -> Tuple[str, str]:
    sys.argv = [''] + params.split()

    old_stdout = sys.stdout
    new_stdout = StringIO()
    sys.stdout = new_stdout

    old_stderr = sys.stderr
    new_stderr = StringIO()
    sys.stderr = new_stderr

    try:
        main(None)
    except SystemExit:
        pass

    sys.stdout = old_stdout
    sys.stderr = old_stderr

    return new_stdout.getvalue(), new_stderr.getvalue()
Beispiel #8
0
def run(params: str) -> Tuple[str, str]:
    sys.argv = [''] + params.split()

    old_stdout = sys.stdout
    new_stdout = StringIO()
    sys.stdout = new_stdout

    old_stderr = sys.stderr
    new_stderr = StringIO()
    sys.stderr = new_stderr

    try:
        main(None)
    except:
        pass

    sys.stdout = old_stdout
    sys.stderr = old_stderr

    return new_stdout.getvalue(), new_stderr.getvalue()
Beispiel #9
0
def run(params: List[str]) -> Tuple[str, str, int]:
    sys.argv = [''] + params

    old_stdout = sys.stdout
    new_stdout = StringIO()
    sys.stdout = new_stdout

    old_stderr = sys.stderr
    new_stderr = StringIO()
    sys.stderr = new_stderr

    try:
        main(None)
        exit_status = 0
    except SystemExit as system_exit:
        exit_status = system_exit.code

    sys.stdout = old_stdout
    sys.stderr = old_stderr

    return new_stdout.getvalue(), new_stderr.getvalue(), exit_status
Beispiel #10
0
def console_entry() -> None:
    try:
        main(None, sys.stdout, sys.stderr)
        sys.stdout.flush()
        sys.stderr.flush()
    except BrokenPipeError:
        # Python flushes standard streams on exit; redirect remaining output
        # to devnull to avoid another BrokenPipeError at shutdown
        devnull = os.open(os.devnull, os.O_WRONLY)
        os.dup2(devnull, sys.stdout.fileno())
        sys.exit(2)
    except KeyboardInterrupt:
        _, options = process_options(args=sys.argv[1:])
        if options.show_traceback:
            sys.stdout.write(traceback.format_exc())
        formatter = FancyFormatter(sys.stdout, sys.stderr, False)
        msg = "Interrupted\n"
        sys.stdout.write(formatter.style(msg, color="red", bold=True))
        sys.stdout.flush()
        sys.stderr.flush()
        sys.exit(2)
Beispiel #11
0
def mypy_run(args):
    """Runs mypy with given arguments and shows the result."""
    argv, sys.argv = sys.argv, [""] + args
    stdout, sys.stdout = sys.stdout, StringIO()
    stderr, sys.stderr = sys.stderr, StringIO()

    try:
        main(None)
    except SystemExit:
        pass
    except:
        traceback.print_exc()

    out = []
    for line in sys.stdout.getvalue().splitlines():
        out.append((line, False))
    for line in sys.stderr.getvalue().splitlines():
        out.append((line, True))

    sys.argv, sys.stdout, sys.stderr = argv, stdout, stderr
    return out
Beispiel #12
0
"""Mypy type checker command line tool."""

from mypy.main import main

main(None)

import sys
from mypy.main import main

if __name__ == '__main__':
    main(None, sys.stdout, sys.stderr)
Beispiel #14
0
def run_dmypy(args: List[str]) -> Tuple[str, str, int]:
    from mypy.dmypy import main
    return _run(lambda stdout, stderr: main(args))
Beispiel #15
0
def run(args: List[str]) -> Tuple[str, str, int]:
    # Lazy import to avoid needing to import all of mypy to call run_dmypy
    from mypy.main import main
    return _run(lambda stdout, stderr: main(None, args=args,
                                            stdout=stdout, stderr=stderr))
Beispiel #16
0
def console_entry() -> None:
    main(None)
Beispiel #17
0
def run_dmypy(args: List[str]) -> Tuple[str, str, int]:
    from mypy.dmypy import main
    return _run(lambda: main(args))
Beispiel #18
0
def run(args: List[str]) -> Tuple[str, str, int]:
    # Lazy import to avoid needing to import all of mypy to call run_dmypy
    from mypy.main import main
    return _run(lambda: main(None, args=args))
Beispiel #19
0
def console_entry() -> None:
    main(None)
Beispiel #20
0
 def _run(self, path):
     from mypy.main import main
     main(None, [path])
Beispiel #21
0
def console_entry() -> None:
    main(None, sys.stdout, sys.stderr)
Beispiel #22
0
"""Mypy type checker command line tool."""

from mypy.main import main

main()
Beispiel #23
0
# -*- coding: utf-8 -*-
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

import sys

print("Doing static checking.")

from mypy.main import main

common_args = [
    "--ignore-missing-imports", "--disallow-incomplete-defs",
    "--disallow-untyped-defs", "--disallow-untyped-calls",
    "--check-untyped-defs", "--disallow-untyped-globals"
]

ret = main(None,
           stdout=sys.stdout,
           stderr=sys.stderr,
           args=["-p", "kdump"] + common_args)
ret2 = main(None,
            stdout=sys.stdout,
            stderr=sys.stderr,
            args=["-p", "crash"] + common_args)

if ret or ret2:
    print("static checking failed.", file=sys.stderr)
    sys.exit(1)

print("OK")
sys.exit(0)
Beispiel #24
0
"""
mypy pyqae

sphinx-apidoc -F -o docs/ pyqae/
"""
import os
from subprocess import Popen, PIPE
exec_cmd = lambda prog, pname: Popen([prog, pname], shell=True, stdout=PIPE
                                     ).stdout.read()
if __name__ == "__main__":
    from mypy.main import main

    main(os.path.join('..', 'pyqae'))

    pydoc_path = exec_cmd("/usr/bin/which", "pydoc")
    exec_cmd(pydoc_path, "pyqae")