__main__.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """Mypy type checker command line tool."""
  2. from __future__ import annotations
  3. import os
  4. import sys
  5. import traceback
  6. from mypy.main import main, process_options
  7. from mypy.util import FancyFormatter
  8. def console_entry() -> None:
  9. try:
  10. main()
  11. sys.stdout.flush()
  12. sys.stderr.flush()
  13. except BrokenPipeError:
  14. # Python flushes standard streams on exit; redirect remaining output
  15. # to devnull to avoid another BrokenPipeError at shutdown
  16. devnull = os.open(os.devnull, os.O_WRONLY)
  17. os.dup2(devnull, sys.stdout.fileno())
  18. sys.exit(2)
  19. except KeyboardInterrupt:
  20. _, options = process_options(args=sys.argv[1:])
  21. if options.show_traceback:
  22. sys.stdout.write(traceback.format_exc())
  23. formatter = FancyFormatter(sys.stdout, sys.stderr, False)
  24. msg = "Interrupted\n"
  25. sys.stdout.write(formatter.style(msg, color="red", bold=True))
  26. sys.stdout.flush()
  27. sys.stderr.flush()
  28. sys.exit(2)
  29. if __name__ == "__main__":
  30. console_entry()