2020-09-02 00:36:52 +02:00
|
|
|
[tool.black]
|
|
|
|
line-length = 100
|
2022-04-27 02:00:45 +02:00
|
|
|
target-version = ["py38"]
|
2021-03-04 23:33:41 +01:00
|
|
|
|
|
|
|
[tool.isort]
|
|
|
|
src_paths = [".", "tools", "tools/setup/emoji"]
|
|
|
|
known_third_party = "zulip"
|
|
|
|
profile = "black"
|
|
|
|
line_length = 100
|
2021-07-05 23:36:46 +02:00
|
|
|
|
|
|
|
[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
|
2021-07-16 22:11:10 +02:00
|
|
|
no_implicit_reexport = true
|
2021-07-05 23:36:46 +02:00
|
|
|
strict_equality = true
|
|
|
|
|
|
|
|
# Display the codes needed for # type: ignore[code] annotations.
|
|
|
|
show_error_codes = true
|
|
|
|
|
|
|
|
# Warn of unreachable or redundant code.
|
|
|
|
warn_unreachable = true
|
2021-07-10 02:10:01 +02:00
|
|
|
|
2021-07-16 22:11:10 +02:00
|
|
|
[[tool.mypy.overrides]]
|
|
|
|
module = ["zproject.configured_settings", "zproject.settings"]
|
|
|
|
no_implicit_reexport = false
|
|
|
|
|
2021-07-10 02:10:01 +02:00
|
|
|
[[tool.mypy.overrides]]
|
|
|
|
module = [
|
|
|
|
"ahocorasick.*",
|
|
|
|
"aioapns.*",
|
|
|
|
"bitfield.*",
|
|
|
|
"bmemcached.*",
|
2021-06-22 16:46:32 +02:00
|
|
|
"bson.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"cairosvg.*",
|
rate_limit: Add a flag to lump all TOR exit node IPs together.
TOR users are legitimate users of the system; however, that system can
also be used for abuse -- specifically, by evading IP-based
rate-limiting.
For the purposes of IP-based rate-limiting, add a
RATE_LIMIT_TOR_TOGETHER flag, defaulting to false, which lumps all
requests from TOR exit nodes into the same bucket. This may allow a
TOR user to deny other TOR users access to the find-my-account and
new-realm endpoints, but this is a low cost for cutting off a
significant potential abuse vector.
If enabled, the list of TOR exit nodes is fetched from their public
endpoint once per hour, via a cron job, and cached on disk. Django
processes load this data from disk, and cache it in memcached.
Requests are spared from the burden of checking disk on failure via a
circuitbreaker, which trips of there are two failures in a row, and
only begins trying again after 10 minutes.
2021-11-03 21:43:02 +01:00
|
|
|
"circuitbreaker.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"coverage.*",
|
|
|
|
"cssutils.*",
|
|
|
|
"defusedxml.*",
|
|
|
|
"digitalocean.*",
|
|
|
|
"disposable_email_domains.*",
|
|
|
|
"django.*",
|
|
|
|
"django_auth_ldap.*",
|
2022-04-05 03:27:33 +02:00
|
|
|
"django_bmemcached.*",
|
2021-10-09 19:40:25 +02:00
|
|
|
"django_cte.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"django_otp.*",
|
2021-09-10 18:36:56 +02:00
|
|
|
"django_scim.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"django_sendfile.*",
|
|
|
|
"django_statsd.*",
|
|
|
|
"DNS.*",
|
|
|
|
"fakeldap.*",
|
|
|
|
"gcm.*",
|
|
|
|
"gitlint.*",
|
|
|
|
"jsonref.*",
|
|
|
|
"ldap.*",
|
|
|
|
"markdown_include.*",
|
|
|
|
"moto.*",
|
2021-08-26 04:12:16 +02:00
|
|
|
"natsort.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"netifaces.*",
|
|
|
|
"onelogin.*",
|
|
|
|
"openapi_core.*",
|
|
|
|
"premailer.*",
|
|
|
|
"pyinotify.*",
|
|
|
|
"pyoembed.*",
|
|
|
|
"pyuca.*",
|
2021-09-15 02:01:23 +02:00
|
|
|
"re2.*",
|
2021-07-10 02:10:01 +02:00
|
|
|
"requests_oauthlib.*",
|
2021-09-10 18:36:56 +02:00
|
|
|
"scim2_filter_parser.attr_paths",
|
2021-07-10 02:10:01 +02:00
|
|
|
"scrapy.*",
|
|
|
|
"social_core.*",
|
|
|
|
"social_django.*",
|
|
|
|
"sourcemap.*",
|
|
|
|
"talon_core.*",
|
|
|
|
"tlds.*",
|
|
|
|
"tornado.*",
|
|
|
|
"twitter.*",
|
|
|
|
"two_factor.*",
|
|
|
|
"zxcvbn.*",
|
|
|
|
]
|
|
|
|
ignore_missing_imports = true
|