[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "gagelink" dynamic = ["version"] description = "MCP server and Python library giving AI agents hydrology data: river level, streamflow, flood forecasts, basins, and satellite water levels from USGS, NOAA, France's Hub'Eau, the UK Environment Agency, and SWOT, with units, datums, and record quality attached." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } keywords = [ "mcp", "mcp-server", "model-context-protocol", "agent-tools", "llm", "agents", "hydrology", "water", "streamflow", "river", "flood", "usgs", "nwis", "noaa", "swot", "era5", "grace", "water-quality", "watershed", "reproducibility", ] authors = [{ name = "Kayode Adeniyi" }] dependencies = ["quantity-guard>=0.8", "certifi>=2024.0"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "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", "Topic :: Scientific/Engineering :: Hydrology", "Topic :: Scientific/Engineering :: GIS", "Topic :: Software Development :: Libraries :: Python Modules", "Environment :: Console", "Typing :: Typed", ] [project.scripts] gagelink-mcp = "gagelink.server:main" gagelink-replay = "gagelink.replay:main" [project.optional-dependencies] dev = ["pytest>=8.0", "mypy>=1.11"] [project.urls] Homepage = "https://github.com/Adeniyikayodee/gagelink" Documentation = "https://github.com/Adeniyikayodee/gagelink#readme" Issues = "https://github.com/Adeniyikayodee/gagelink/issues" Source = "https://github.com/Adeniyikayodee/gagelink" [tool.hatch.version] path = "src/gagelink/__init__.py" [tool.hatch.build.targets.wheel] packages = ["src/gagelink"] [tool.pytest.ini_options] testpaths = ["tests"] # The benchmark is not part of the wheel, so its package has to be importable from the # repository root for the tests that check its ground truth. pythonpath = ["."] addopts = "-m 'not live'" markers = ["live: hits the USGS service; excluded by default"] [tool.mypy] python_version = "3.10" packages = ["gagelink"] warn_unused_ignores = true warn_redundant_casts = true