[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"