[build-system] requires = ["hatchling>=1.25"] build-backend = "hatchling.build" [project] name = "labscout" version = "0.4.1" description = "LabScout finds the labs, people, grants, trials and patents behind a research topic from public sources, as a web page, a command line tool and an MCP server." readme = "README.md" license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.10" authors = [{ name = "Actogram Ltd", email = "admin@actogram.ai" }] keywords = ["pubmed", "europe-pmc", "ror", "research", "collaboration", "mcp", "bibliometrics", "grants", "patents"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Information Analysis", ] dependencies = [ "httpx>=0.27", "mcp>=2.3,<3", "openpyxl>=3.1", "pycountry>=23.12", "starlette>=0.27", "uvicorn>=0.31", ] [project.optional-dependencies] dev = ["pytest>=8", "ruff>=0.6"] [project.scripts] labscout = "labscout.cli:run" [project.urls] Homepage = "https://actogram.org" Source = "https://github.com/actogram/scholar-mcp" Issues = "https://github.com/actogram/scholar-mcp/issues" [tool.hatch.build.targets.wheel] packages = ["src/labscout"] [tool.pytest.ini_options] testpaths = ["tests"] markers = ["network: talks to the real public APIs (run with -m network)"] addopts = "-m 'not network'" [tool.ruff] line-length = 120 target-version = "py310" [tool.ruff.lint] select = ["E", "F", "W", "I", "B", "UP", "SIM"] [tool.ruff.lint.per-file-ignores] "src/labscout/export.py" = ["E501"] # the HTML report template keeps its lines as written "src/labscout/web.py" = ["E501"] # so do the page templates