pyproject.toml•6.49 kB
[project]
dependencies = [
"dotpromptz",
"genkit",
"genkit-plugin-dev-local-vectorstore",
"genkit-plugin-compat-oai",
"genkit-plugin-firebase",
"genkit-plugin-flask",
"genkit-plugin-google-genai",
"genkit-plugin-google-cloud",
"genkit-plugin-ollama",
"genkit-plugin-vertex-ai",
"liccheck>=0.9.2",
"strenum>=0.4.15; python_version < '3.11'",
]
description = "Workspace for Genkit packages"
license = { text = "Apache-2.0" }
name = "genkit-workspace"
readme = "README.md"
requires-python = ">=3.10"
version = "0.1.0"
[dependency-groups]
dev = [
"bpython>=0.25",
"ipython~=8.22; python_version <= '3.10'",
"ipython~=9.0.2; python_version >= '3.11'",
"jupyter>=1.1.1",
"pytest-asyncio>=0.25.3",
"pytest>=8.3.4",
"pytest-cov>=6.0.0",
"datamodel-code-generator>=0.27.3",
"pytest-watcher>=0.4.3",
"pytest-mock>=3.14.0",
"twine>=6.1.0",
"poethepoet>=0.33.1",
"pip>=25.0.1",
"tox>=4.25.0",
"tox-uv>=1.25.0",
"nox>=2025.2.9",
"nox-uv>=0.2.2",
]
lint = ["mypy>=1.15", "ruff>=0.9"]
[tool.hatch.build.targets.wheel]
packages = []
[tool.setuptools]
py-modules = []
# Pytest for unit testing and coverage.
[tool.pytest]
[tool.pytest.ini_options]
addopts = [
"--cov",
#"--cov-report=", # Disable terminal report generation by pytest-cov
"-ra",
"-vv",
]
asyncio_default_fixture_loop_scope = "session"
python_files = ["test_*.py", "*_test.py"]
testpaths = ["packages", "plugins", "samples", "tests"]
#asyncio_mode = "auto"
asyncio_mode = "strict"
[tool.coverage.report]
fail_under = 78
[tool.coverage.run]
omit = [
"**/__init__.py", # Often contains just imports
"**/testing.py", # Test utilities
"**/constants.py", # Typically just constants
"**/typing.py", # Often auto-generated or complex types
"**/types.py", # Often auto-generated or complex types
]
# uv based package management.
[tool.uv]
default-groups = ["dev", "lint"]
[tool.uv.sources]
dotpromptz = { git = "https://github.com/google/dotprompt.git", subdirectory = "python/dotpromptz", rev = "main" }
genkit = { workspace = true }
genkit-plugin-compat-oai = { workspace = true }
genkit-plugin-dev-local-vectorstore = { workspace = true }
genkit-plugin-firebase = { workspace = true }
genkit-plugin-flask = { workspace = true }
genkit-plugin-google-cloud = { workspace = true }
genkit-plugin-google-genai = { workspace = true }
genkit-plugin-ollama = { workspace = true }
genkit-plugin-vertex-ai = { workspace = true }
google-genai-hello = { workspace = true }
google-genai-image = { workspace = true }
[tool.uv.workspace]
members = ["packages/*", "plugins/*", "samples/*"]
# Ruff checks and formatting.
[tool.ruff]
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".git-rewrite",
".hg",
".ipynb_checkpoints",
".mypy_cache",
".nox",
".pants.d",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
".vscode",
"__pypackages__",
"_build",
"bazel-*",
"buck-out",
"build",
"dist",
"node_modules",
"site-packages",
"venv",
]
indent-width = 4
line-length = 120
preview = true
target-version = "py311" # NOTE: Keep this at 3.11 not 3.10. We use backported libs for enums.
unsafe-fixes = true
[tool.ruff.lint]
fixable = ["ALL"]
select = [
"E", # pycodestyle (errors)
"W", # pycodestyle (warnings)
"F", # pyflakes
"I", # isort (import sorting)
"UP", # pyupgrade (Python version upgrades)
"B", # flake8-bugbear (common bugs)
"N", # pep8-naming (naming conventions)
"D", # pydocstyle
"F401", # unused imports
"F403", # wildcard imports
"F841", # unused variables
]
[tool.ruff.lint.isort]
combine-as-imports = true
force-single-line = false
known-first-party = ["genkit"]
section-order = [
"future",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.format]
docstring-code-format = true
docstring-code-line-length = 120
indent-style = "space"
line-ending = "lf"
quote-style = "single"
skip-magic-trailing-comma = false
# Static type checking.
[tool.mypy]
disallow_incomplete_defs = true
disallow_untyped_defs = true
exclude = ["samples/"]
explicit_package_bases = true
mypy_path = [
"packages/genkit/src",
"plugins/chroma/src",
"plugins/compat-oai/src",
"plugins/dev-local-vectorstore/src",
"plugins/firebase/src",
"plugins/flask/src",
"plugins/google-cloud/src",
"plugins/google-genai/src",
"plugins/ollama/src",
"plugins/pinecone/src",
"plugins/vertex-ai/src",
]
namespace_packages = true
strict = true
warn_unused_configs = true
[tool.datamodel-codegen]
#collapse-root-models = true # Don't use; produces Any as types.
#strict-types = ["str", "int", "float", "bool", "bytes"] # Don't use; produces StrictStr, StrictInt, etc.
#use-subclass-enum = true
capitalize-enum-members = true
disable-timestamp = true
enable-version-header = true
field-constraints = true
input = "../genkit-tools/genkit-schema.json"
input-file-type = "jsonschema"
output = "packages/genkit/src/genkit/core/typing.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-default = false
use-schema-description = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
use-unique-items-as-set = true
[tool.liccheck]
authorized_licenses = [
"3-clause bsd",
"apache 2.0",
"apache software license",
"apache software",
"apache",
"apache-2.0",
"bsd license",
"bsd-3-clause",
"bsd",
"cmu license (mit-cmu)",
"isc license (iscl)",
"isc license",
"mit license",
"mit",
"mit-cmu",
"new bsd license",
"new bsd",
"psf-2.0",
"python software foundation license",
"simplified bsd",
"the unlicense (unlicense)", # TODO: verify.
]
dependencies = true
unauthorized_licenses = [
"gnu lgpl",
"gpl v3",
"lgpl with exceptions or zpl",
"zpl 2.1",
"mpl",
]
[tool.liccheck.authorized_packages]
certifi = "2025.4.26" # TODO: Verify.
dependencies = true
ollama = "0.5.1" # MIT "https://github.com/ollama/ollama-python/blob/main/LICENSE"