[project] name = "looksee" version = "0.2.0" requires-python = ">=3.12,<3.13" [dependency-groups] dev = [ "fastapi-cli", "pytest>=9", "pytest-asyncio>=1.3", "ruff>=0.16.2,<0.18", ] [tool.uv] package = false override-dependencies = ["opencv-python; sys_platform == 'never'"] conflicts = [ [ { package = "looksee-inference", extra = "cpu" }, { package = "looksee-inference", extra = "gpu" }, ], ] [tool.uv.workspace] members = ["apps/api", "apps/inference", "packages/shared", "ee/api"] [tool.pytest.ini_options] testpaths = ["packages/shared/tests", "apps/api/tests", "apps/inference/tests", "ee/api/tests"] addopts = "--import-mode=importlib" asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" filterwarnings = ["error"] [tool.ruff] line-length = 100 src = ["apps/api/src", "apps/inference/src", "packages/shared/src", "ee/api/src"] [tool.ruff.lint] select = [ "ASYNC", "B", "C4", "DTZ", "E4", "E7", "E9", "F", "FAST", "G", "I", "LOG", "N", "PIE", "PTH", "RET", "RUF", "S", "SIM", "T20", "TC", "UP", "W", ] [tool.ruff.lint.per-file-ignores] "**/tests/**" = ["S101", "S105", "S106"] [tool.ruff.lint.flake8-type-checking] runtime-evaluated-decorators = ["pydantic.dataclasses.dataclass"] runtime-evaluated-base-classes = [ "pydantic.BaseModel", "pydantic_settings.BaseSettings", "sqlalchemy.orm.DeclarativeBase", "api.domain.workflow.base.WorkflowModel", "api.domain.workflow.conditions.ConditionModel", "api.domain.workflow.filters.FilterNodeData", "api.domain.workflow.actions.ActionNodeData", ]