[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "refinire"
version = "0.2.16"
description = "Refined simplicity for AI agents - Build intelligent workflows with automatic quality assurance and multi-provider LLM support"
readme = "README.md"
license = {text = "MIT"}
authors = [
    {name = "Kitfactory", email = "kitfactory@gmail.com"}
]
keywords = ["ai", "agents", "llm", "workflow", "orchestration"]
classifiers = [
    "Development Status :: 4 - Beta",
    "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",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
]
requires-python = ">=3.10"
dependencies = [
    "openai-agents>=0.0.17",
    "pydantic>=2.0.0",
    "httpx>=0.24.0",
    "oneenv",
    "nest_asyncio>=1.5.0",
]

[project.optional-dependencies]
# Provider-specific dependencies
anthropic = [
    "anthropic>=0.34.0",
]
google = [
    "google-generativeai>=0.3.0",
]
ollama = [
    "ollama>=0.1.0",
]

# OpenInference instrumentation dependencies
openinference-instrumentation = [
    "openinference-instrumentation",
    "openinference-instrumentation-openai",
    "opentelemetry-exporter-otlp",
]

# Development dependencies
dev = [
    "mkdocs-material>=9.6.14",
    "mkdocstrings>=0.29.1",
    "mkdocstrings-python>=1.16.10",
    "pytest>=8.0.0",
    "pytest-asyncio>=0.26.0",
    "pytest-cov>=4.1.0",
    "mypy>=1.10.0",
    "colorama>=0.4.6",
    "pydantic>=2.0.0"
]

# All features
all = [
    "anthropic>=0.34.0",
    "google-generativeai>=0.3.0",
    "ollama>=0.1.0",
    "openinference-instrumentation",
    "openinference-instrumentation-openai",
    "opentelemetry-exporter-otlp",
]
[project.urls]
Homepage = "https://github.com/kitfactory/refinire"
Documentation = "https://kitfactory.github.io/refinire/"
Repository = "https://github.com/kitfactory/refinire"
Bug-Tracker = "https://github.com/kitfactory/refinire/issues"

[project.entry-points."oneenv.templates"]
core = "refinire.templates:core_template"
tracing = "refinire.templates:tracing_template"
agents = "refinire.templates:agents_template" 
development = "refinire.templates:development_template"

[tool.hatch.build.targets.wheel]
packages = ["src/refinire"]


[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = [
    "--import-mode=importlib",
    "--cov=oneenv",
    "--cov-report=term-missing",
]

[tool.mypy]
strict = true
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_any_generics = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_decorators = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_any_unimported = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true

[dependency-groups]
dev = [
    "mkdocs-material>=9.6.14",
    "mkdocstrings>=0.29.1",
    "mkdocstrings-python>=1.16.10",
    "pytest>=8.3.5",
    "pytest-cov>=6.1.1",
]
