Files
pydantic-ai-harness/pyproject.toml
T
David Montague 1b823c3fce Add Python package skeleton with CI/CD release pipeline
Set up pydantic-harness as a publishable Python package using hatchling,
with CI (lint, test across Python 3.10-3.13) and automated PyPI releases
on tag pushes via OIDC trusted publishing — mirroring pydantic-handlebars.
2026-03-22 20:35:16 -06:00

90 lines
1.9 KiB
TOML

[build-system]
requires = ['hatchling']
build-backend = 'hatchling.build'
[project]
name = 'pydantic-harness'
version = '0.0.1'
description = 'Agent harness for composable, reusable AI agent capabilities, built on PydanticAI'
readme = 'README.md'
requires-python = '>=3.10'
license = 'MIT'
authors = [
{ name = 'Pydantic Services Inc.' },
]
classifiers = [
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Topic :: Software Development :: Libraries',
'Typing :: Typed',
]
dependencies = ['pydantic-ai-slim>=0.1']
[project.urls]
Homepage = 'https://github.com/pydantic/pydantic-harness'
Source = 'https://github.com/pydantic/pydantic-harness'
Issues = 'https://github.com/pydantic/pydantic-harness/issues'
[dependency-groups]
dev = [
'pytest',
'pytest-xdist',
'coverage',
]
lint = [
'ruff>=0.14',
'pyright>=1.1.408',
]
[tool.hatch.build.targets.wheel]
packages = ['src/pydantic_harness']
[tool.ruff]
line-length = 120
target-version = 'py310'
[tool.ruff.lint]
extend-select = ['Q', 'RUF100', 'C90', 'UP', 'I', 'D', 'TID251']
[tool.ruff.lint.per-file-ignores]
'tests/**/*.py' = ['D']
[tool.ruff.lint.flake8-quotes]
inline-quotes = 'single'
[tool.ruff.lint.mccabe]
max-complexity = 15
[tool.ruff.lint.pydocstyle]
convention = 'google'
[tool.ruff.format]
quote-style = 'single'
[tool.pyright]
pythonVersion = '3.10'
typeCheckingMode = 'strict'
[tool.pytest.ini_options]
xfail_strict = true
filterwarnings = ['error']
[tool.coverage.run]
branch = true
source = ['pydantic_harness', 'tests']
[tool.coverage.report]
fail_under = 100
show_missing = true
exclude_lines = [
'pragma: no cover',
'assert_never',
'if TYPE_CHECKING:',
]