| [build-system] |
| requires = ["hatchling"] |
| build-backend = "hatchling.build" |
|
|
| [project] |
| name = "eurus" |
| version = "1.0.0" |
| description = "Eurus Climate Agent - Access ERA5 reanalysis data through Model Context Protocol" |
| readme = "README.md" |
| license = {text = "MIT"} |
| requires-python = ">=3.10" |
| authors = [ |
| {name = "Eurus Team", email = "eurus@example.com"} |
| ] |
| keywords = [ |
| "era5", |
| "climate", |
| "mcp", |
| "model-context-protocol", |
| "oceanography", |
| "reanalysis", |
| "weather", |
| "xarray", |
| "zarr" |
| ] |
| classifiers = [ |
| "Development Status :: 4 - Beta", |
| "Environment :: Console", |
| "Intended Audience :: Science/Research", |
| "License :: OSI Approved :: MIT License", |
| "Operating System :: OS Independent", |
| "Programming Language :: Python :: 3", |
| "Programming Language :: Python :: 3.10", |
| "Programming Language :: Python :: 3.11", |
| "Programming Language :: Python :: 3.12", |
| "Topic :: Scientific/Engineering :: Atmospheric Science", |
| "Topic :: Scientific/Engineering :: GIS", |
| ] |
|
|
| dependencies = [ |
| "mcp>=1.0.0", |
| "arraylake>=0.10.0", |
| "xarray>=2024.10.0", |
| "zarr>=3.0.0", |
| "pandas>=2.0.0", |
| "numpy>=1.24.0", |
| "pydantic>=2.0.0", |
| "python-dotenv>=1.0.0", |
| ] |
|
|
| [project.optional-dependencies] |
| agent = [ |
| "langchain>=0.3.0", |
| "langchain-openai>=0.2.0", |
| "langchain-core>=0.3.0", |
| "openai>=1.0.0", |
| "jupyter_client>=8.0.0", |
| "ipykernel>=6.0.0", |
| "matplotlib>=3.7.0", |
| "scipy>=1.10.0", |
| "seaborn>=0.12.0", |
| ] |
| web = [ |
| "fastapi>=0.109.0", |
| "uvicorn[standard]>=0.27.0", |
| "jinja2>=3.1.0", |
| "python-multipart>=0.0.6", |
| "websockets>=12.0", |
| ] |
| dev = [ |
| "pytest>=7.0.0", |
| "pytest-asyncio>=0.21.0", |
| "pytest-cov>=4.0.0", |
| "black>=23.0.0", |
| "ruff>=0.1.0", |
| "mypy>=1.0.0", |
| "pre-commit>=3.0.0", |
| ] |
| docs = [ |
| "mkdocs>=1.5.0", |
| "mkdocs-material>=9.0.0", |
| "mkdocstrings[python]>=0.24.0", |
| ] |
|
|
| [project.urls] |
| Homepage = "https://github.com/yourusername/era5-mcp" |
| Documentation = "https://github.com/yourusername/era5-mcp#readme" |
| Repository = "https://github.com/yourusername/era5-mcp" |
| Issues = "https://github.com/yourusername/era5-mcp/issues" |
|
|
| [project.scripts] |
| eurus-mcp = "eurus.server:main" |
| eurus-agent = "eurus.agent:main" |
| eurus-web = "web.app:main" |
|
|
| [tool.hatch.build.targets.wheel] |
| packages = ["src/eurus"] |
|
|
| [tool.hatch.build.targets.sdist] |
| include = [ |
| "/src", |
| "/tests", |
| "/README.md", |
| "/LICENSE", |
| ] |
|
|
| [tool.black] |
| line-length = 100 |
| target-version = ['py310', 'py311', 'py312'] |
|
|
| [tool.ruff] |
| line-length = 100 |
| select = [ |
| "E", |
| "W", |
| "F", |
| "I", |
| "B", |
| "C4", |
| "UP", |
| ] |
| ignore = [ |
| "E501", |
| "B008", |
| ] |
|
|
| [tool.mypy] |
| python_version = "3.10" |
| warn_return_any = true |
| warn_unused_configs = true |
| disallow_untyped_defs = true |
|
|
| [tool.pytest.ini_options] |
| asyncio_mode = "auto" |
| testpaths = ["tests"] |
| addopts = "-v --cov=src/eurus --cov-report=term-missing" |
|
|
| [tool.coverage.run] |
| source = ["src/eurus"] |
| branch = true |
|
|
| [tool.coverage.report] |
| exclude_lines = [ |
| "pragma: no cover", |
| "def __repr__", |
| "raise AssertionError", |
| "raise NotImplementedError", |
| ] |
|
|