mirror of https://github.com/zulip/zulip.git
mypy: Move configuration to pyproject.toml.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
19ee45ccc4
commit
0ae94c6051
|
@ -192,7 +192,7 @@ highlighting. The system is largely managed by the code in
|
|||
* **Mypy type checker**. Because we're using mypy in a strict mode,
|
||||
when you add use of a new Python dependency, you usually need to
|
||||
either adds stubs to the `stubs/` directory for the library, or edit
|
||||
`mypy.ini` in the root of the Zulip project to configure
|
||||
`pyproject.toml` in the root of the Zulip project to configure
|
||||
`ignore_missing_imports` for the new library. See
|
||||
[our mypy docs][mypy-docs] for more details.
|
||||
|
||||
|
|
|
@ -98,14 +98,14 @@ basically the equivalent of C header files defining the types used in
|
|||
these Python APIs.
|
||||
|
||||
For other third-party modules that we call from Zulip, one either
|
||||
needs to add an `ignore_missing_imports` entry in `mypy.ini` in the
|
||||
needs to add an `ignore_missing_imports` entry in `pyproject.toml` in the
|
||||
root of the project, letting `mypy` know that it's third-party code,
|
||||
or add type stubs to the `stubs/` directory, which has type stubs that
|
||||
mypy can use to type-check calls into that third-party module.
|
||||
|
||||
It's easy to add new stubs! Just read the docs, look at some of
|
||||
existing examples to see how they work, and remember to remove the
|
||||
`ignore_missing_imports` entry in `mypy.ini` when you add them.
|
||||
`ignore_missing_imports` entry in `pyproject.toml` when you add them.
|
||||
|
||||
For any third-party modules that don't have stubs, `mypy` treats
|
||||
everything in the third-party module as an `Any`, which is the right
|
||||
|
|
40
mypy.ini
40
mypy.ini
|
@ -1,40 +0,0 @@
|
|||
[mypy]
|
||||
# Logistics of what code to check and how to handle the data.
|
||||
scripts_are_modules = True
|
||||
show_traceback = True
|
||||
# See https://zulip.readthedocs.io/en/latest/testing/mypy.html#mypy-stubs-for-third-party-modules
|
||||
# for notes on how we manage mypy stubs.
|
||||
mypy_path = $MYPY_CONFIG_FILE_DIR/stubs
|
||||
cache_dir = $MYPY_CONFIG_FILE_DIR/var/mypy-cache
|
||||
|
||||
# These are all the options that would be enabled by mypy --strict, in
|
||||
# the order listed by the mypy --help documentation of --strict. We
|
||||
# do not yet enable all of them.
|
||||
warn_unused_configs = True
|
||||
disallow_any_generics = True
|
||||
disallow_subclassing_any = False
|
||||
disallow_untyped_calls = False
|
||||
disallow_untyped_defs = True
|
||||
disallow_incomplete_defs = True
|
||||
check_untyped_defs = True
|
||||
disallow_untyped_decorators = False
|
||||
no_implicit_optional = True
|
||||
warn_redundant_casts = True
|
||||
warn_unused_ignores = True
|
||||
warn_return_any = False
|
||||
no_implicit_reexport = False
|
||||
strict_equality = True
|
||||
|
||||
# Display the codes needed for # type: ignore[code] annotations.
|
||||
show_error_codes = True
|
||||
|
||||
# We use a lot of third-party libraries we don't have stubs for, as
|
||||
# well as a handful of our own modules that we haven't told mypy how
|
||||
# to find. Ignore them. (For some details, see:
|
||||
# `git log -p -S ignore_missing_imports mypy.ini`.)
|
||||
#
|
||||
# This doesn't get in the way of using the stubs we *do* have.
|
||||
ignore_missing_imports = True
|
||||
|
||||
# Warn of unreachable or redundant code.
|
||||
warn_unreachable = True
|
|
@ -7,3 +7,44 @@ src_paths = [".", "tools", "tools/setup/emoji"]
|
|||
known_third_party = "zulip"
|
||||
profile = "black"
|
||||
line_length = 100
|
||||
|
||||
[tool.mypy]
|
||||
# Logistics of what code to check and how to handle the data.
|
||||
scripts_are_modules = true
|
||||
show_traceback = true
|
||||
# See https://zulip.readthedocs.io/en/latest/testing/mypy.html#mypy-stubs-for-third-party-modules
|
||||
# for notes on how we manage mypy stubs.
|
||||
mypy_path = "$MYPY_CONFIG_FILE_DIR/stubs"
|
||||
cache_dir = "$MYPY_CONFIG_FILE_DIR/var/mypy-cache"
|
||||
|
||||
# These are all the options that would be enabled by mypy --strict, in
|
||||
# the order listed by the mypy --help documentation of --strict. We
|
||||
# do not yet enable all of them.
|
||||
warn_unused_configs = true
|
||||
disallow_any_generics = true
|
||||
disallow_subclassing_any = false
|
||||
disallow_untyped_calls = false
|
||||
disallow_untyped_defs = true
|
||||
disallow_incomplete_defs = true
|
||||
check_untyped_defs = true
|
||||
disallow_untyped_decorators = false
|
||||
no_implicit_optional = true
|
||||
warn_redundant_casts = true
|
||||
warn_unused_ignores = true
|
||||
warn_return_any = false
|
||||
no_implicit_reexport = false
|
||||
strict_equality = true
|
||||
|
||||
# Display the codes needed for # type: ignore[code] annotations.
|
||||
show_error_codes = true
|
||||
|
||||
# We use a lot of third-party libraries we don't have stubs for, as
|
||||
# well as a handful of our own modules that we haven't told mypy how
|
||||
# to find. Ignore them. (For some details, see:
|
||||
# `git log -p -S ignore_missing_imports -- mypy.ini`.)
|
||||
#
|
||||
# This doesn't get in the way of using the stubs we *do* have.
|
||||
ignore_missing_imports = true
|
||||
|
||||
# Warn of unreachable or redundant code.
|
||||
warn_unreachable = true
|
||||
|
|
|
@ -134,7 +134,7 @@ def run() -> None:
|
|||
command,
|
||||
["py"],
|
||||
pass_targets=False,
|
||||
description="Static type checker for Python (config: mypy.ini)",
|
||||
description="Static type checker for Python (config: pyproject.toml)",
|
||||
)
|
||||
linter_config.external_linter(
|
||||
"tsc",
|
||||
|
|
Loading…
Reference in New Issue