# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

[tool.black]
# Following the Google Python style guide, we set the maximum line length
# to 80 characters. See: https://google.github.io/styleguide/pyguide.html#32-line-length
line-length = 80
target-version = ['py311']
include = '\.pyi?$'
exclude = '''
# Start regex with a forward slash so that black will only ignore these files
# if they're in the root of the repo.
^/(
  (
      \.jiri_root
    | out
    | third_party
    | prebuilt
    | __pycache__
  )
)
'''

[tool.mypy]
strict = true
pretty = true

# We need to ignore missing imports since some of our source code dependencies
# reside in the 'third_party' directory, which may not always be in python path.
ignore_missing_imports = true

# TODO(b/324270220): Temporarily disable this flag to ease the transition to
# type checking. Re enable this flag for stricter checking in the future.
warn_return_any = false

# TODO(b/331504010): Address subclass Type Errors in Tests
# To handle `error: Class cannot subclass "FuchsiaBaseTest" (has type "Any")  [misc]`
# More info @ https://github.com/python/mypy/issues/9318
disallow_subclassing_any = false

# Allow decorators, calls without type annotations since some of our packages
# don't have type annotations.
allow_untyped_decorators = true
allow_untyped_calls = true

# 'yaml' module imports aren't working with the global
# 'ignore_missing_imports' flag. Overriding using overridesr entry.
[[tool.mypy.overrides]]
module = "yaml"
ignore_missing_imports = true
