[project]
name = "neodb"
version = "0.10"
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",
    "cachetools",
    "dateparser",
    "discord.py",
    "django<5.0",
    "django-anymail",
    "django-auditlog>=3.0.0",
    "django-bleach",
    "django-compressor",
    "django-cors-headers",
    "django-environ",
    "django-hijack>=3.5.4",
    "django-jsonform",
    "django-maintenance-mode",
    "django-markdownx",
    "django-ninja>=1.2.2",
    "django-oauth-toolkit==2.3.0",
    "django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a",
    "django-redis",
    "django-rq",
    "django-sass-processor",
    "django-simple-history ",
    "django-slack",
    "django-tz-detect",
    "django-user-messages",
    "dnspython",
    "easy-thumbnails",
    "filetype",
    "gunicorn",
    "httpx",
    "igdb-api-v4",
    "langdetect",
    "libsass",
    "listparser",
    "loguru",
    "lxml",
    "markdownify",
    "mistune",
    "openpyxl",
    "podcastparser",
    "psycopg2-binary",
    "requests",
    "rq",
    "sentry-sdk",
    "setproctitle",
    "tqdm",
    "typesense",
    "urlman",
    "validators",
    "deepmerge>=1.1.1",
    "django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git",
    "atproto>=0.0.49",
]

[tool.rye]
managed = true
virtual = true
dev-dependencies = [
    "pre-commit>=3.7.0",
    "black~=24.4.2",
    "django-stubs>=5.1.0",
    "djlint~=1.34.1",
    "isort~=5.13.2",
    "lxml-stubs>=0.5.1",
    "pyright>=1.1.384",
    "ruff",
    "mkdocs-material>=9.5.25",
]

[tool.pyright]
exclude = [ "media", ".venv", ".git", "playground", "catalog/*/tests.py", "journal/tests.py", "neodb", "**/migrations",  "**/sites/douban_*", "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", "**/tests.py", "neodb", "**/migrations", "**/commands", "**/importers",  "legacy" ]
lint.ignore = ["F401", "F403", "F405"]

[tool.setuptools]
py-modules = []
