[build-system]
requires = ["setuptools>=52", "wheel", "setuptools_scm>=6.2"]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
write_to = "bumble/_version.py"

[tool.pytest.ini_options]
pythonpath = "."
testpaths = [
    "tests"
]

[tool.pylint.master]
init-hook = 'import sys; sys.path.append(".")'
ignore-paths = [
    '.*_pb2(_grpc)?.py'
]

[tool.pylint.messages_control]
max-line-length = "88"

disable = [
    "broad-except",
    "fixme",
    "logging-fstring-interpolation",
    "logging-not-lazy",
    "no-member", # Temporary until pylint works better with class/method decorators
    "no-value-for-parameter", # Temporary until pylint works better with class/method decorators
    "missing-class-docstring",
    "missing-function-docstring",
    "missing-module-docstring",
    "too-few-public-methods",
    "too-many-arguments",
    "too-many-branches",
    "too-many-instance-attributes",
    "too-many-lines",
    "too-many-locals",
    "too-many-public-methods",
    "too-many-statements",
]

[tool.pylint.main]
ignore="pandora" # FIXME: pylint does not support stubs yet:

[tool.pylint.typecheck]
signature-mutators="AsyncRunner.run_in_task"

[tool.black]
skip-string-normalization = true
extend-exclude = '''
(
  .*_pb2(_grpc)?.py  # exclude autogenerated Protocol Buffer files anywhere in the project
)
'''

[tool.mypy]
exclude = ['bumble/transport/grpc_protobuf']

[[tool.mypy.overrides]]
module = "bumble.transport.grpc_protobuf.*"
ignore_errors = true

[[tool.mypy.overrides]]
module = "aioconsole.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "construct.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "grpc.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "serial_asyncio.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "usb.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "usb1.*"
ignore_missing_imports = true

