[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "aitbc-agent-sdk"
version = "0.1.0"
description = "Python SDK for AITBC AI Agent Network"
readme = "README.md"
license = {file = "LICENSE"}
authors = [
    {name = "AITBC Agent Network", email = "dev@aitbc.bubuit.net"}
]
maintainers = [
    {name = "AITBC Agent Network", email = "dev@aitbc.bubuit.net"}
]
keywords = ["ai", "agents", "blockchain", "decentralized", "computing", "swarm", "intelligence"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Operating System :: POSIX :: Linux",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.13",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Topic :: System :: Distributed Computing",
]
requires-python = ">=3.13"
dependencies = [
    "fastapi>=0.104.0",
    "uvicorn>=0.24.0",
    "pydantic>=2.4.0",
    "sqlalchemy>=2.0.0",
    "alembic>=1.12.0",
    "redis>=5.0.0",
    "cryptography>=41.0.0",
    "web3>=6.11.0",
    "requests>=2.31.0",
    "psutil>=5.9.0",
    "asyncio-mqtt>=0.16.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.4.0",
    "pytest-asyncio>=0.21.0",
    "black>=23.9.0",
    "flake8>=6.1.0",
    "mypy>=1.6.0",
    "pre-commit>=3.4.0",
]
gpu = [
    "torch>=2.1.0",
    "torchvision>=0.16.0",
    "torchaudio>=2.1.0",
    "nvidia-ml-py>=12.535.0",
]
edge = [
    "paho-mqtt>=1.6.0",
    "aiohttp>=3.9.0",
    "cryptography>=41.0.0",
]

[project.urls]
Homepage = "https://github.com/oib/AITBC"
Documentation = "https://docs.aitbc.bubuit.net"
Repository = "https://github.com/oib/AITBC"
"Bug Tracker" = "https://github.com/oib/AITBC/issues"

[project.scripts]
aitbc-agent = "aitbc_agent.cli:main"
aitbc-agent-provider = "aitbc_agent.provider:main"
aitbc-agent-consumer = "aitbc_agent.consumer:main"
aitbc-agent-coordinator = "aitbc_agent.coordinator:main"

[tool.setuptools]
packages = ["aitbc_agent"]

[tool.setuptools.package-data]
aitbc_agent = [
    "config/*.yaml",
    "templates/*.json",
    "schemas/*.json",
]

[tool.black]
line-length = 88
target-version = ['py313']
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
)/
'''

[tool.mypy]
python_version = "3.13"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true

[tool.pytest.ini_options]
minversion = "6.0"
addopts = "-ra -q --strict-markers --strict-config"
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "integration: marks tests as integration tests",
    "unit: marks tests as unit tests",
]

[tool.coverage.run]
source = ["aitbc_agent"]
omit = [
    "*/tests/*",
    "*/test_*",
    "setup.py",
]

[tool.coverage.report]
exclude_lines = [
    "pragma: no cover",
    "def __repr__",
    "if self.debug:",
    "if settings.DEBUG",
    "raise AssertionError",
    "raise NotImplementedError",
    "if 0:",
    "if __name__ == .__main__.:",
    "class .*\\bProtocol\\):",
    "@(abc\\.)?abstractmethod",
]
