[project]
name = "neodb"
version = "0.11"
description = "🧩 self-hosted server tracking what you read/watch/listen/play, powering a global distributed community federating via ActivityPub."
readme = "README.md"
requires-python = ">= 3.12"
dependencies = [
    "blurhash-python>=1.2.2",
    "cachetools>=5.5.0",
    "dateparser>=1.2.0",
    "django<5.0",
    "django-anymail>=12.0",
    "django-auditlog>=3.0.0",
    "django-bleach>=3.1.0",
    "django-compressor",
    "django-cors-headers",
    "django-environ>=0.11.2",
    "django-hijack>=3.7.0",
    "django-jsonform>=2.23.1",
    "django-maintenance-mode",
    "django-markdownx>=4.0.7",
    "django-ninja>=1.3.0",
    "django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a",
    "django-redis>=5.4.0",
    "django-rq>=2.10.2",
    "django-sass-processor>=1.4.1",
    "django-tz-detect>=0.5.0",
    "django-user-messages>=1.1.0",
    "dnspython>=2.7.0",
    "easy-thumbnails>=2.10",
    "filetype>=1.2.0",
    "gunicorn>=23.0.0",
    "httpx>=0.27.2",
    "igdb-api-v4>=0.3.3",
    "langdetect>=1.0.9",
    "listparser>=0.20",
    "loguru>=0.7.2",
    "lxml>=5.3.0",
    "markdownify>=0.13.1",
    "mistune>=3.0.2",
    "openpyxl>=3.1.5",
    "podcastparser>=0.6.10",
    "psycopg2-binary",
    "requests>=2.32.3",
    "sentry-sdk>=2.17.0",
    "setproctitle>=1.3.3",
    "tqdm>=4.66.6",
    "typesense>=0.21.0",
    "urlman>=2.0.2",
    "validators>=0.34.0",
    "deepmerge>=1.1.1",
    "django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git",
    "atproto>=0.0.55",
    "discord-py>=2.4.0",
    "libsass>=0.23.0",
]

[tool.rye]
managed = true
virtual = true
dev-dependencies = [
    "pre-commit>=4.0.1",
    # "black~=24.4.2",
    "django-stubs>=5.1.2",
    "djlint>=1.36.4",
    # "isort~=5.13.2",
    "lxml-stubs>=0.5.1",
    "pyright>=1.1.389",
    "ruff>=0.9.1",
    "mkdocs-material>=9.5.42",
]

[tool.pyright]
exclude = [
    "media",
    ".venv",
    ".git",
    "playground",
    "catalog/*/tests.py",
    "journal/tests.py",
    "neodb",
    "**/migrations",
    "neodb-takahe",
]
reportIncompatibleVariableOverride = false

[tool.djlint]
ignore = "T002,T003,H005,H006,H019,H020,H021,H023,H030,H031,D018"
indent = 2

[tool.isort]
profile = "black"

[tool.mypy]
exclude = [
    '^neodb-takahe/',
    '^legacy/',
    '^media/',
    '^playground/',
    '^catalog/*/tests.py',
    '^journal/tests.py',
    '^neodb/',
    '.*migrations.*',
    '.*sites/douban_.*',
]
plugins = ["mypy_django_plugin.main"]

[tool.django-stubs]
django_settings_module = "boofilsic.settings"

[tool.ruff]
exclude = [
    "neodb-takahe/*",
    "media",
    ".venv",
    ".git",
    "playground",
    "neodb",
]
lint.ignore = ["F403", "F405"]
lint.extend-select = ["I"]

[tool.setuptools]
py-modules = []
