[build-system] requires = ["setuptools==80.9.0", "wheel==0.45.1"] build-backend = "setuptools.build_meta" [project] name = "lumaops-backend" version = "0.1.0" description = "Local-first OpenRGB control plane for LumaOps" readme = "README.md" requires-python = ">=3.12" license = { text = "GPL-2.0-or-later" } dependencies = [ "cryptography==45.0.3", "fastapi==0.115.12", "httpx==0.28.1", "pydantic==2.11.5", "pydantic-settings==2.9.1", "python-multipart==0.0.20", "tzdata==2026.3", "uvicorn[standard]==0.34.3", ] [project.optional-dependencies] dev = [ "mypy==1.16.0", "pytest==8.4.0", "pytest-asyncio==1.0.0", "ruff==0.11.12", ] [project.scripts] lumaops = "lumaops_backend.main:run" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools.package-data] lumaops_backend = ["migrations/*.sql"] [tool.pytest.ini_options] addopts = "-q" asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ASYNC", "S"] ignore = ["E501", "S101", "S104", "S608"] [tool.mypy] python_version = "3.12" strict = true packages = ["lumaops_backend"]