[project] name = "porchlight" version = "0.1.0" description = "OIDC OpenID Provider with user management" readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.34", "idpyoidc>=5.0", "pydantic-settings>=2.7", "jinja2>=3.1", "fido2>=2.1", "argon2-cffi>=25.1", "motor>=3.7", "aiosqlite>=0.21", "proquint>=0.2", "python-multipart>=0.0.20", "httpx>=0.28", "itsdangerous>=2.2.0", "typer>=0.15", ] [project.scripts] porchlight = "porchlight.cli:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/porchlight"] [dependency-groups] dev = [ "pytest>=8.0", "pytest-asyncio>=0.25", "ruff>=0.15", "ty>=0.0.16", ] [tool.ruff] line-length = 120 target-version = "py311" src = ["src", "tests"] [tool.ruff.lint] select = ["E", "F", "UP", "B", "SIM", "I", "C4", "RUF"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] "tests/*" = ["S101"] [tool.ruff.format] quote-style = "double" indent-style = "space" docstring-code-format = true [tool.ty] [tool.ty.environment] python-version = "3.13" [tool.ty.rules] possibly-unresolved-reference = "error" [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]