pyproject.toml•3.12 kB
[project]
name = "biocontext_kb"
version = "0.1.3"
description = "An MCP server for biomedical research."
readme = "README.md"
requires-python = ">=3.12"
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: Healthcare Industry",
"Natural Language :: English",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
]
dependencies = [
"asyncio>=3.4.3,<4",
"dotenv>=0.9.9,<1",
"fastmcp==2.11.3",
"gql>=3.5.3,<4",
"gunicorn>=23.0.0,<24",
"httpx>=0.28.1",
"numpy>=2.2.5,<3",
"pandas>=2.2.3,<3",
"pandas-stubs>=2.2.3.250308",
"pillow>=11.2.1",
"pyyaml>=6.0.2",
"requests>=2.32.3,<3",
"requests-toolbelt>=1.0.0",
"scholarly>=1.7.11",
"types-pyyaml>=6.0.12.20250402",
"types-requests>=2.32.0.20250328",
"uvicorn-worker>=0.3.0",
]
[project.urls]
Home = "https://github.com/biocontext_ai/knowledgebase-mcp"
Source = "https://github.com/biocontext_ai/knowledgebase-mcp"
Documentation = "https://server.biocontext.ai"
[project.scripts]
biocontext_kb = "biocontext_kb:run_app"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/biocontext_kb"]
[dependency-groups]
dev = [
"ipykernel>=6.29.5",
"ipython>=9.2.0",
"jupyter-client>=8.6.3",
"jupyter-core>=5.7.2",
"myst-parser>=4.0.1",
"nbsphinx>=0.9.7",
"pip-licenses>=5.0.0",
"pretty-errors>=1.2.25",
"pytest>=8.3.5",
"pytest-asyncio>=0.26.0",
"pytest-cov>=6.1.1",
"ruff==0.11.9",
"sphinx>=8.1.3",
"sphinx-autoapi>=3.6.0",
"sphinx-autodoc-typehints>=3.0.1",
"sphinx-book-theme>=1.1.4",
]
[tool.ruff]
include = [
"pyproject.toml",
"docs/**/*.py",
"docs/**/*.ipynb",
"src/**/*.py",
"test/**/*.py",
]
cache-dir = "~/.cache/ruff"
line-length = 120
[tool.ruff.lint]
select = [
"A",
"ARG",
"B",
"C4",
"D",
"I",
"E4",
"E7",
"E9",
"F",
"FIX",
"N",
"NPY",
"PD",
"PERF",
"RUF",
"SIM",
"TID",
"W",
]
ignore = ["D100", "D104", "F403", "SIM118"]
fixable = ["ALL"]
unfixable = []
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
pydocstyle.convention = "google"
mccabe.max-complexity = 7
isort.case-sensitive = true
isort.order-by-type = true
[tool.ruff.format]
docstring-code-format = true
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_functions = "test_*"
asyncio_mode = "auto"
markers = [
"no_ci: marks tests that should not run in CI environments",
]
[tool.coverage.run]
source = ["biocontext_kb"]
omit = ["*/test/*"]
[tool.coverage.report]
# don't complain if non-runnable code isn't run:
exclude_lines = ["if __name__ == __main__:", "raise", "except"]
ignore_errors = true