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,
|
* **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
|
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
|
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
|
`ignore_missing_imports` for the new library. See
|
||||||
[our mypy docs][mypy-docs] for more details.
|
[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.
|
these Python APIs.
|
||||||
|
|
||||||
For other third-party modules that we call from Zulip, one either
|
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,
|
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
|
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.
|
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
|
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
|
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
|
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
|
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"
|
known_third_party = "zulip"
|
||||||
profile = "black"
|
profile = "black"
|
||||||
line_length = 100
|
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,
|
command,
|
||||||
["py"],
|
["py"],
|
||||||
pass_targets=False,
|
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(
|
linter_config.external_linter(
|
||||||
"tsc",
|
"tsc",
|
||||||
|
|
Loading…
Reference in New Issue