[project] name = "romm" version = "0.0.1" description = "A beautiful, powerful, self-hosted rom manager" authors = [ { name = "Zurdi", email = "zurdi@romm.app" }, { name = "Arcane", email = "arcane@romm.app" }, { name = "Adamantike", email = "adamantike@romm.app" }, ] requires-python = ">=3.13" readme = "README.md" license = "AGPL-3.0-only" dependencies = [ "PyYAML ~= 6.0", "SQLAlchemy[mariadb-connector,mysql-connector,postgresql-psycopg] ~= 2.0", "Unidecode ~= 1.3", "aiohttp ~= 3.12", "alembic ~= 1.13", "anyio ~= 4.4", "authlib ~= 1.6.5", "colorama ~= 0.4", "defusedxml ~= 0.7", "fastapi-pagination[sqlalchemy] ~= 0.15", "fastapi[standard-no-fastapi-cloud-cli] ~= 0.121.1", "gunicorn ~= 23.0", "httpx ~= 0.27", "itsdangerous ~= 2.2", "joserfc ~= 1.3.5", "opentelemetry-distro ~= 0.56", "opentelemetry-exporter-otlp ~= 1.36", "opentelemetry-instrumentation-aiohttp-client ~= 0.56", "opentelemetry-instrumentation-fastapi ~= 0.56", "opentelemetry-instrumentation-httpx ~= 0.56", "opentelemetry-instrumentation-redis ~= 0.56", "opentelemetry-instrumentation-sqlalchemy ~= 0.56", "passlib[bcrypt] ~= 1.7", "pillow~=12.1", "psycopg[c] ~= 3.2", "pydantic ~= 2.11", "pydash ~= 8.0", "python-dotenv ~= 1.0", "python-magic ~= 0.4", "python-socketio ~= 5.11", "redis ~= 6.2", "rq ~= 2.1", # TODO: Move back to upstream `rq-scheduler`, when support for username and SSL settings is added. # Related PR: https://github.com/rq/rq-scheduler/pull/325 "rq-scheduler @ git+https://github.com/adamantike/rq-scheduler.git@feat/script-options-username-ssl", "sentry-sdk ~= 2.32", "starlette ~= 0.49", "streaming-form-data ~= 1.19", "strsimpy ~= 0.2", "uvicorn ~= 0.35", "uvicorn-worker ~= 0.3", "watchfiles ~= 1.1", "yarl ~= 1.14", "zipfile-inflate64 ~= 0.1", ] [project.optional-dependencies] dev = [ "ipdb ~= 0.13", "ipykernel ~= 6.29", "memray ~= 1.15", "mypy ~= 1.13", "pyinstrument ~= 5.0", "types-colorama ~= 0.4", "types-passlib ~= 1.7", "types-pyyaml ~= 6.0", "types-redis ~= 4.6", ] test = [ "fakeredis ~= 2.21", "pytest ~= 8.3", "pytest-asyncio ~= 0.23", "pytest-cov ~= 6.2", "pytest-env ~= 1.1", "pytest-mock ~= 3.12", "pytest-recording ~= 0.13", ] [project.urls] Homepage = "https://romm.app/" Source = "https://github.com/rommapp/romm" [tool.deptry] known_first_party = [ "__version__", "adapters", "config", "decorators", "endpoints", "exceptions", "handler", "logger", "main", "models", "startup", "tasks", "utils", ] pep621_dev_dependency_groups = ["dev"] [tool.deptry.package_module_name_map] PyYAML = "yaml" opentelemetry-distro = "opentelemetry" pillow = "PIL" python-dotenv = "dotenv" python-magic = "magic" python-socketio = "socketio" [tool.deptry.per_rule_ignores] DEP002 = [ # DEP002 rule: Project should not contain unused dependencies # Packages used within the server initialization script. "gunicorn", "uvicorn-worker", "watchfiles", # OpenTelemetry packages are used via auto-instrumentation. "opentelemetry-exporter-otlp", "opentelemetry-instrumentation-aiohttp-client", "opentelemetry-instrumentation-fastapi", "opentelemetry-instrumentation-httpx", "opentelemetry-instrumentation-redis", "opentelemetry-instrumentation-sqlalchemy", # Database drivers are used via SQLAlchemy. "psycopg", # Pytest plugins are used via pytest only. "pytest-cov", "pytest-env", "pytest-mock", "pytest-recording", ] [tool.uv] package = false [tool.ty.environment] root = ["./backend"]