[project] name = "openfeature-python-contrib" version = "0.0.0" # not used requires-python = ">=3.9" dependencies = [ # hooks "openfeature-hooks-opentelemetry", # providers "openfeature-provider-env-var", "openfeature-provider-flagd", "openfeature-provider-flipt", "openfeature-provider-ofrep", ] [dependency-groups] dev = [ "coverage[toml]>=7.10.0,<8.0.0", "mypy[faster-cache]>=1.17.0,<2.0.0", "pytest>=8.4.0,<9.0.0", ] [tool.uv] required-version = "~=0.8.0" package = false [tool.uv.sources] # hooks openfeature-hooks-opentelemetry = { workspace = true } # providers openfeature-provider-env-var = { workspace = true } openfeature-provider-flagd = { workspace = true } openfeature-provider-flipt = { workspace = true } openfeature-provider-ofrep = { workspace = true } [tool.uv.workspace] members = [ "hooks/*", "providers/*", ] [tool.ruff] target-version = "py39" exclude = [ ".git", ".venv", "__pycache__", "venv", "providers/openfeature-provider-flagd/src/openfeature/schemas/**" ] [tool.ruff.lint] select = [ "A", "B", "C4", "C90", "E", "F", "FLY", "FURB", "I", "LOG", "N", "PERF", "PGH", "PLC", "PLR0913", "PLR0915", "RUF", "S", "SIM", "T10", "T20", "UP", "W", "YTT", ] ignore = [ "E501", # the formatter will handle any too long line ] [tool.ruff.lint.per-file-ignores] "**/tests/**/*" = ["S101"] [tool.ruff.lint.isort] known-first-party = ["openfeature"] [tool.ruff.lint.pylint] max-args = 6 max-statements = 30 [tool.ruff.lint.pyupgrade] # Preserve types, even if a file imports `from __future__ import annotations`. keep-runtime-typing = true