[tool.poetry] name = "atproto" version = "0.0.0" # placeholder. Dynamic version from Git Tag description = "The AT Protocol SDK" authors = ["Ilya (Marshal) "] license = "MIT" repository = "https://github.com/MarshalX/atproto" readme = "README.md" keywords = ["library", "sdk", "codegen", "xrpc", "xrpc-client", "atprotocol", "atproto", "lexicon", "parser", "schema", "bluesky", "bluesky-api", "at", "uri", "atp", "nsid", "did", "cid"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Pre-processors", ] packages = [ { include = "atproto", from = "packages" }, { include = "atproto_cli", from = "packages" }, { include = "atproto_client", from = "packages" }, { include = "atproto_codegen", from = "packages" }, { include = "atproto_core", from = "packages" }, { include = "atproto_crypto", from = "packages" }, { include = "atproto_firehose", from = "packages" }, { include = "atproto_identity", from = "packages" }, { include = "atproto_lexicon", from = "packages" }, { include = "atproto_server", from = "packages" }, ] [tool.poetry.urls] "Documentation" = "https://atproto.blue" "Changes" = "https://github.com/MarshalX/atproto/blob/main/CHANGES.md" "Tracker" = "https://github.com/MarshalX/atproto/issues" "Author" = "https://github.com/MarshalX" [tool.poetry.scripts] atp = "atproto_cli:atproto_cli" atproto = "atproto_cli:atproto_cli" [tool.poetry.dependencies] python = ">=3.8,<3.13" httpx = ">=0.25.0,<0.27.0" typing-extensions = ">=4.8.0,<5" click = ">=8.1.3,<9" websockets = ">=12,<13" pydantic = ">=2.7,<3" libipld = ">=1.1.0,<2" dnspython = ">=2.4.0,<3" cryptography = ">=41.0.7,<43" [tool.poetry.group.dev.dependencies] ruff = "0.1.2" mypy = "1.9" pyright = "1.1.362" [tool.poetry.group.docs.dependencies] sphinx = "7.1.2" myst-parser = "3.0.1" sphinx-copybutton = "0.5.2" sphinx-favicon = "1.0.1" furo = "2024.5.6" autodoc-pydantic = "2.1.0" sphinxext-opengraph = "0.9.1" [tool.poetry.group.test.dependencies] pytest = ">=8.0.0,<9" pytest-asyncio = ">=0.22.0" coverage = ">=7.3" [tool.poetry-dynamic-versioning] # poetry self add "poetry-dynamic-versioning[plugin]" enable = true strict = true bump = true metadata = false fix-shallow-repository = true vcs = "git" style = "pep440" [build-system] requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"] build-backend = "poetry_dynamic_versioning.backend" [tool.mypy] python_version = "3.8" disallow_untyped_defs = false # TODO(MarshalX) enable [tool.pyright] reportMissingTypeStubs = false [tool.ruff] extend-select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "I", # isort "D", # pydocstyle "C90", # flake8-comprehensions "B", # flake8-bugbear "Q", # flake8-quotes "S", # flake8-bandit "ASYNC", # flake8-async "ANN", # flake8-annotations "C", "BLE", "ERA", "ICN", "INP", "ISC", "NPY", "PGH", "PIE", "RET", "RSE", "RUF", "SIM", "T20", "TCH", "TID", "YTT", ] line-length = 120 target-version = "py38" ignore = [ "PGH004", # use specific rule code with noqa; works bad with JetBrains IDE Warnings "ANN401", # t.Any in **kwargs "ANN002", # Missing type annotation for `*args` "ANN101", # Missing type annotation for `self` in method "ANN102", # Missing type annotation for `cls` in classmethod "D203", # we are not using blank line before class "D213", # we are using first line for summary "D406", "D407", # we are using google style docstring ] [tool.ruff.per-file-ignores] "packages/*.py" = [ "D105", "D104", "D100", "D107", "D103", "D415", # missing docstring "D101", "D102", # missing docstring in public class and method ] "tests/*.py" = ["S101", "D"] "docs/*.py" = ["T201", "INP001", "ERA001", "E501", "D"] "examples/*.py" = ["T201", "INP001", "ERA001", "D"] "packages/atproto/exceptions.py" = ["F403"] "packages/atproto_client/models/__init__.py" = ["F401", "F811"] "packages/atproto_client/models/*/*.py" = ["E501", "D401"] "packages/atproto_client/namespaces/async_ns.py" = ["E501", "D401"] "packages/atproto_client/namespaces/sync_ns.py" = ["E501", "D401"] "test.py" = ["S101", "ERA001", "T201", "E501", "F401", "D"] [tool.ruff.flake8-quotes] docstring-quotes = "double" multiline-quotes = "double" inline-quotes = "single" [tool.ruff.format] quote-style = "single"