[tool.poetry] name = "aitbc" version = "0.6.0" description = "AI Agent Compute Network - Main Project" authors = ["AITBC Team"] [tool.poetry.dependencies] python = ">=3.13,<3.14" # Core Web Framework fastapi = ">=0.115.6" uvicorn = {extras = ["standard"], version = ">=0.34.0"} gunicorn = ">=23.0.0" starlette = ">=0.49.1" # Database & ORM sqlalchemy = {extras = ["asyncio"], version = ">=2.0.49"} sqlmodel = ">=0.0.38" alembic = ">=1.18.4" aiosqlite = ">=0.20.0" asyncpg = ">=0.30.0" # Configuration & Environment pydantic = ">=2.11.0" pydantic-settings = ">=2.13.1" python-dotenv = ">=1.1.0" # Rate Limiting & Security slowapi = ">=0.1.9" limits = ">=5.8.0" prometheus-client = ">=0.21.1" # HTTP Client & Networking httpx = ">=0.28.1" requests = ">=2.32.4" urllib3 = ">=2.6.3" aiohttp = ">=3.12.14" aiostun = ">=0.1.0" # Cryptocurrency & Blockchain cryptography = ">=46.0.0" pynacl = ">=1.6.2" base58 = ">=2.1.1" bech32 = ">=1.2.0" web3 = ">=7.15.0" eth-account = ">=0.13.7" # Data Processing pandas = ">=2.2.3" numpy = ">=2.2.0" # Machine Learning & AI torch = ">=2.11.0" torchvision = ">=0.26.0" # CLI Tools click = ">=8.3.2" rich = ">=14.3.3" typer = ">=0.24.1" click-completion = ">=0.5.2" tabulate = ">=0.10.0" colorama = ">=0.4.6" keyring = ">=25.7.0" # JSON & Serialization orjson = ">=3.11.0" msgpack = ">=1.1.2" python-multipart = ">=0.0.27" # Logging & Monitoring structlog = ">=25.1.0" sentry-sdk = ">=2.20.0" # Utilities python-dateutil = ">=2.9.0" pytz = ">=2026.1" schedule = ">=1.2.2" aiofiles = ">=25.1.0" pyyaml = ">=6.0.2" # Async Support asyncio-mqtt = ">=0.16.2" websockets = ">=14.1.0" # Image Processing (for AI services) pillow = ">=11.1.0" opencv-python = ">=4.11.0" # Additional Dependencies redis = ">=5.2.1" psutil = ">=6.1.0" tenseal = ">=0.3.0" idna = ">=3.7" hypothesis = "^6.152.4" [tool.poetry.group.dev.dependencies] pytest = "9.0.3" pytest-asyncio = "1.3.0" pytest-timeout = "2.4.0" black = "24.4.2" flake8 = "7.3.0" ruff = "0.15.10" mypy = "2.0.0" isort = "8.0.1" pre-commit = "4.5.1" bandit = "1.9.4" pydocstyle = "6.3.0" pyupgrade = "3.21.2" safety = "3.7.0" pytest-cov = "6.0.0" types-requests = ">=2.32.0" types-PyYAML = ">=6.0.0" types-python-dateutil = ">=2.9.0" [tool.black] line-length = 127 target-version = ['py313'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist )/ ''' [tool.isort] profile = "black" line_length = 127 multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true [tool.mypy] python_version = "3.13" warn_return_any = true warn_unused_configs = true # Start with less strict mode and gradually increase check_untyped_defs = false disallow_incomplete_defs = true disallow_untyped_defs = true disallow_untyped_decorators = false no_implicit_optional = false warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = false strict_equality = false [[tool.mypy.overrides]] module = [ "torch.*", "cv2.*", "pandas.*", "numpy.*", "web3.*", "eth_account.*", "sqlalchemy.*", "alembic.*", "uvicorn.*", "fastapi.*", ] ignore_missing_imports = true [[tool.mypy.overrides]] module = [ "apps.coordinator-api.src.app.routers.*", "apps.coordinator-api.src.app.services.*", "apps.coordinator-api.src.app.storage.*", "apps.coordinator-api.src.app.utils.*", "apps.coordinator-api.src.app.domain.global_marketplace", "apps.coordinator-api.src.app.domain.cross_chain_reputation", "apps.coordinator-api.src.app.domain.agent_identity", ] ignore_errors = true [tool.ruff] line-length = 127 target-version = "py313" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "E722", # bare except (explicitly enforce) "G", # logging-string-format (enforce f-strings in logging) "LOG", # logging best practices ] ignore = [ "E501", # line too long, handled by black "B008", # do not perform function calls in argument defaults "C901", # too complex "G001", # logging-string-format (allow for now, migration in progress) "G002", # logging-string-format (allow for now, migration in progress) ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] "tests/*" = ["B011"] [tool.pydocstyle] convention = "google" add_ignore = ["D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107"] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" minversion = "8.0" addopts = "-ra -q --strict-markers --strict-config --cov=apps --cov=packages --cov=cli --cov-report=term-missing --cov-report=html --cov-fail-under=50" 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 = ["apps", "packages", "cli"] omit = [ "*/tests/*", "*/test_*.py", "*/__pycache__/*", "*/migrations/*", "*/venv/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "@abstractmethod", ] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"