[build-system] requires = ["setuptools>=69", "wheel"] build-backend = "setuptools.build_meta" [project] name = "ConvGRU-Ensemble" version = "0.1.0" description = "Ensemble precipitation nowcasting using Convolutional GRU networks" readme = "README.md" requires-python = ">=3.13" dependencies = [ "absl-py>=2.3.1", "einops>=0.8.1", "etils>=1.13.0", "fiddle>=0.3.0", "fire>=0.7.1", "importlib-resources>=6.5.2", "jupyterlab>=4.5.5", "matplotlib>=3.10.8", "numpy>=2.3.5", "netCDF4>=1.7.0", "pandas>=2.3.3", "pysteps>=1.19.0", "pytorch-lightning>=2.6.0", "pyyaml>=6.0.3", "tqdm>=4.67.1", "tensorboard>=2.20.0", "torch>=2.9.1", "torchvision>=0.24.1", "xarray>=2025.12.0", "zarr>=3.1.5", "huggingface_hub>=0.27.0", "h5netcdf>=1.8.1", "h5py>=3.15.1", "python-magic>=0.4.27", ] [project.optional-dependencies] serve = [ "fastapi>=0.115.0", "uvicorn>=0.34.0", "python-multipart>=0.0.18", ] [project.scripts] convgru-ensemble = "convgru_ensemble.cli:main" [dependency-groups] dev = [ "pytest>=8.3.5", "pre-commit>=4.0.0", "ruff>=0.9.10", ] [tool.setuptools] packages = ["convgru_ensemble"] [tool.ruff] target-version = "py313" line-length = 120 extend-exclude = ["notebooks/", "importance_sampler/"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "UP", # pyupgrade "B", # flake8-bugbear "SIM", # flake8-simplify "NPY", # numpy-specific rules ] ignore = [ "E501", # line too long (handled by formatter) "SIM108", # ternary operator (readability preference) ] [tool.ruff.lint.isort] known-first-party = ["convgru_ensemble"]