[project]
name = "ipybox"
dynamic = ["version"]
description = "ipybox"
authors = [
{ name = "Martin Krasser", email = "martin@gradion.ai" },
]
requires-python = ">=3.11,<3.15"
readme = "README.md"
license = "Apache-2.0"
dependencies = [
"aiofiles>=25.1.0",
"aiohttp>=3.13.2",
"datamodel-code-generator>=0.35.0",
"fastapi>=0.121.2",
"ipykernel>=7.1.0",
"jupyter-kernel-gateway>=3.0.1",
"mcp>=1.21.2",
"pillow>=12.0.0",
"pip>=25.3",
"psutil>=7.1.3",
"python-dotenv>=1.2.1",
"requests>=2.32.5",
"uvicorn>=0.38.0",
"websockets>=15.0.1",
]
[tool.uv]
default-groups = [
"docs",
"dev",
]
[dependency-groups]
docs = [
"griffe-pydantic>=1.1.8",
"mkdocs>=1.6.1,<2",
"mkdocs-material>=9.5.48,<10",
"mkdocs-redirects>=1.2.2",
"mkdocstrings-python>=1.12.2,<2",
"mkdocs-llmstxt>=0.4.0",
"click<=8.2.1",
]
dev = [
"flaky>=3.8.1",
"invoke>=2.2,<3",
"jsonschema>=4.25",
"matplotlib>=3.10.7",
"pre-commit>=4.3.0,<5",
"pytest>=8.4.2,<9",
"pytest-asyncio>=1.2.0,<2",
"pytest-cov>=4.1.0,<5",
]
[project.scripts]
ipybox = "ipybox.mcp_server:cli"
[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.uv-dynamic-versioning]
vcs = "git"
pattern = "default-unprefixed"
style = "pep440"
[tool.hatch.build.targets.sdist]
include = ["ipybox"]
[tool.hatch.build.targets.wheel]
include = ["ipybox"]
[tool.ruff]
line-length = 120
[tool.ruff.lint.per-file-ignores]
"**/__init__.py" = ["F401"]
[tool.mypy]
check_untyped_defs = true
ignore_missing_imports = true
[[tool.mypy.overrides]]
ignore_errors = true
module = [
"mcptools.*",
"aiofiles.*",
"requests.*",
]