forked from pnikrou/FIMsim
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenvironment.yml
More file actions
90 lines (83 loc) · 3.15 KB
/
Copy pathenvironment.yml
File metadata and controls
90 lines (83 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
name: FIMsim
channels:
- conda-forge
- defaults
dependencies:
- python=3.11
# Geospatial stack via conda-forge — all share the same GDAL, no DLL conflicts
- rasterio
- pyproj
- pyogrio
- shapely
- fiona
- geopandas
- rioxarray
# Scientific / numerical
- numpy
- scipy
- pandas
- openpyxl
- matplotlib-base # NOT matplotlib — avoids pulling in Qt/PySide6 from conda
# NetCDF / HDF / cloud storage (NWM retrospective)
- xarray
- zarr
# s3fs/aiobotocore must stay compatible with the botocore that boto3 and
# awscli pin, or anonymous S3 breaks and FIMserv (OWP HAND-FIM) silently
# downloads no NWM discharge — see the pip section below.
- s3fs
- fsspec
- numcodecs
- netcdf4
- h5netcdf
- h5py
- aiofiles
- aiobotocore
# Hydrology data download (NHD flowlines, LULC, NWM)
- pynhd
- pygeoogc
- pygeoutils
- async-retriever
# ARC-Curve2Flood backend — NenCarta drives ARC + Curve2Flood.
# gdal gives the osgeo Python bindings these tools import; conda-forge keeps it
# matched to the same GDAL as rasterio (no C-library conflict).
- gdal
- numba=0.60.0 # pinned: fimserve requires exactly this
- fastparquet
- geojson
- cython
- whitebox
# HTTP / networking
- requests
- certifi
- urllib3
- aiohttp
- pip
- pip:
- pyqt6==6.7.1 # pip-only — conda's Qt6 would conflict with this
- fimserve # OWP HAND-FIM backend (HAND-FIM mode)
- "zarr>=3.0.1" # fimserve's kerchunk dep requires zarr 3.x; pin to prevent legacy-resolver downgrade
# ARC-Curve2Flood — GitHub-only (not on PyPI). --no-deps not needed here
# because the conda block above already provides gdal/numba/etc.
- "git+https://github.com/MikeFHS/automated-rating-curve.git" # ARC (import arc)
- "git+https://github.com/MikeFHS/Curve2Flood.git" # Curve2Flood (import curve2flood)
# NenCarta orchestrates ARC + Curve2Flood and provides the `flood-mapping`
# CLI that FIMsim's ARC-Curve2Flood mode drives (see its README).
- geoglows
- progress
# NenCarta imports PyQt5 at module load (nencarta/gui_app.py). FIMsim
# itself is PyQt6 and never imports nencarta in-process — it shells out to
# `flood-mapping` — and main.py pins QT_API=pyqt6 so matplotlib cannot
# bind to PyQt5.
- "PyQt5>=5.15"
- "git+https://github.com/jlgutenson/nencarta.git" # flood-mapping CLI
# ── Anonymous-S3 stack (FIMserv reads the NWM retrospective zarr from
# S3 via s3fs). aiobotocore pins botocore VERY tightly, and boto3/awscli
# pin it too; when the two pins disagree every anonymous S3 read dies with
# TypeError: ClientArgsCreator.compute_endpoint_resolver_builtin_defaults()
# missing 1 required positional argument: 's3_disable_express_session_auth'
# and FIMserv then generates FIM with no discharge — i.e. no flood map.
# aiobotocore 3.9 accepts botocore 1.43.3–1.43.56 (boto3 1.43.36 pins
# 1.43.36), and s3fs >= 2026.1 allows aiobotocore 3.x. Keep these three
# consistent if you ever upgrade one.
- "aiobotocore>=3.9.0"
- "s3fs>=2026.2.0"