[tool.poetry] name = "discoursio-inbox" version = "0.2.22" description = "Inbox server for discours.io" authors = ["Tony Rewin "] [tool.poetry.dependencies] python = "^3.12" sentry-sdk = "^1.39.1" redis = { extras = ["hiredis"], version = "^5.0.1" } ariadne = "^0.21" starlette = "^0.36.1" itsdangerous = "^2.1.2" aiohttp = "^3.9.1" requests = "^2.31.0" granian = "^1.0.1" pre-commit = "^3.6.0" [tool.poetry.group.dev.dependencies] setuptools = "^69.0.2" isort = "^5.13.2" pyright = "^1.1.341" mypy = "^1.7.1" ruff = "^0.1.8" black = "^23.12.0" pytest = "^7.4.3" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.ruff] line-length = 120 extend-select = [ # E and F are enabled by default 'B', # flake8-bugbear 'C4', # flake8-comprehensions 'C90', # mccabe 'I', # isort 'N', # pep8-naming 'Q', # flake8-quotes 'RUF100', # ruff (unused noqa) 'S', # flake8-bandit 'W', # pycodestyle ] extend-ignore = [ 'B008', # function calls in args defaults are fine 'B009', # getattr with constants is fine 'B034', # re.split won't confuse us 'B904', # rising without from is fine 'E501', # leave line length to black 'N818', # leave to us exceptions naming 'S101', # assert is fine 'RUF100', # black's noqa ] flake8-quotes = { inline-quotes = 'single', multiline-quotes = 'double' } mccabe = { max-complexity = 13 } target-version = "py312" [tool.ruff.format] quote-style = 'single' [tool.black] skip-string-normalization = true [tool.ruff.isort] combine-as-imports = true lines-after-imports = 2 known-first-party = ['resolvers', 'services', 'orm', 'tests'] [tool.ruff.per-file-ignores] 'tests/**' = ['B018', 'S110', 'S501'] [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_configs = true ignore_missing_imports = true exclude = ["nb"] [tool.pytest.ini_options] asyncio_mode = 'auto' [tool.pyright] venvPath = "." venv = ".venv" include = ["."] useLibraryCodeForTypes = true disableLanguageServices = false disableOrganizeImports = false reportMissingImports = false reportMissingModuleSource = "warning" reportImportCycles = "warning" maxMemoryForLargeFile = 4096 pythonVersion = "3.12" autoImportCompletions = true useVirtualEnv = true typeCheckingMode = "basic" disableJediCompletion = false disableCompletion = false disableSnippetCompletion = false disableGoToDefinition = false disableRenaming = false disableSignatureHelp = false diagnostics = true logLevel = "Information" pluginSearchPaths = [] typings = {} mergeTypeStubPackages = false