[tool.poetry] name = "aitbc" version = "v0.2.3" description = "AI Agent Compute Network - Consolidated Dependencies" authors = ["AITBC Team"] packages = [] [tool.poetry.dependencies] python = "^3.13" # Core Web Framework fastapi = ">=0.115.0" uvicorn = {extras = ["standard"], version = ">=0.32.0"} gunicorn = ">=22.0.0" starlette = {version = ">=0.37.2,<0.38.0", optional = true} # Database & ORM sqlalchemy = ">=2.0.47" sqlmodel = ">=0.0.37" alembic = ">=1.18.0" aiosqlite = ">=0.20.0" asyncpg = ">=0.29.0" # Configuration & Environment pydantic = ">=2.12.0" pydantic-settings = ">=2.13.0" python-dotenv = ">=1.2.0" # Rate Limiting & Security slowapi = ">=0.1.9" limits = ">=5.8.0" prometheus-client = ">=0.24.0" # HTTP Client & Networking httpx = ">=0.28.0" requests = ">=2.32.0" aiohttp = ">=3.9.0" websockets = ">=12.0" # Cryptography & Blockchain cryptography = ">=46.0.0" pynacl = ">=1.5.0" ecdsa = ">=0.19.0" base58 = ">=2.1.1" bech32 = ">=1.2.0" web3 = ">=6.11.0" eth-account = ">=0.13.0" # Data Processing pandas = ">=2.2.0" numpy = ">=1.26.0" orjson = ">=3.10.0" # Machine Learning & AI (Optional) torch = {version = ">=2.10.0", optional = true} torchvision = {version = ">=0.15.0", optional = true} # CLI Tools click = ">=8.1.0" rich = ">=13.0.0" typer = ">=0.12.0" click-completion = ">=0.5.2" tabulate = ">=0.9.0" colorama = ">=0.4.4" keyring = ">=23.0.0" # Logging & Monitoring structlog = ">=24.1.0" sentry-sdk = ">=2.0.0" # Utilities python-dateutil = ">=2.9.0" pytz = ">=2024.1" schedule = ">=1.2.0" aiofiles = ">=24.1.0" pyyaml = ">=6.0" psutil = ">=5.9.0" tenseal = ">=0.3.0" # Async Support asyncio-mqtt = ">=0.16.0" uvloop = ">=0.22.0" # Image Processing (Optional) pillow = {version = ">=10.0.0", optional = true} opencv-python = {version = ">=4.9.0", optional = true} # Additional Dependencies redis = ">=5.0.0" msgpack = ">=1.1.0" python-multipart = ">=0.0.6" [tool.poetry.extras] # Installation profiles for different use cases web = ["starlette", "uvicorn", "gunicorn"] database = ["sqlalchemy", "sqlmodel", "alembic", "aiosqlite", "asyncpg"] blockchain = ["cryptography", "pynacl", "ecdsa", "base58", "bech32", "web3", "eth-account"] ml = ["torch", "torchvision", "numpy", "pandas"] cli = ["click", "rich", "typer", "click-completion", "tabulate", "colorama", "keyring"] monitoring = ["structlog", "sentry-sdk", "prometheus-client"] image = ["pillow", "opencv-python"] all = ["web", "database", "blockchain", "ml", "cli", "monitoring", "image"] [tool.poetry.group.dev.dependencies] # Development & Testing pytest = ">=8.2.0" pytest-asyncio = ">=0.24.0" black = ">=24.0.0" flake8 = ">=7.0.0" ruff = ">=0.1.0" mypy = ">=1.8.0" isort = ">=5.13.0" pre-commit = ">=3.5.0" bandit = ">=1.7.0" pydocstyle = ">=6.3.0" pyupgrade = ">=3.15.0" safety = ">=2.3.0" [tool.poetry.group.test.dependencies] pytest-cov = ">=4.0.0" pytest-mock = ">=3.10.0" pytest-xdist = ">=3.0.0" [tool.black] line-length = 127 target-version = ['py313'] include = '\.pyi?$' extend-exclude = ''' /( \\.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 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.mypy.overrides]] module = [ "torch.*", "cv2.*", "pandas.*", "numpy.*", "web3.*", "eth_account.*", ] ignore_missing_imports = 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 ] ignore = [ "E501", # line too long, handled by black "B008", # do not perform function calls in argument defaults "C901", # too complex ] [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] minversion = "8.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", ] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"