From 7ed4211f21996b5d433d11294a8c672a2ee9f714 Mon Sep 17 00:00:00 2001
From: Lloyd Izard <76954858+LOCEANlloydizard@users.noreply.github.com>
Date: Thu, 21 May 2026 10:15:39 -0700
Subject: [PATCH 1/4] just changing the org name!
---
README.md | 4 ++--
docs/_config.yml | 2 +-
docs/general/install.md | 4 ++--
pyproject.toml | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 23797a6d..f0a90276 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
-
-
+
+
diff --git a/docs/_config.yml b/docs/_config.yml
index c14b876e..bbb5a658 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -24,7 +24,7 @@ parse:
# Information about where the book exists on the web
repository:
- url: https://github.com/OSOceanAcoustics/echopop # Online location of your book
+ url: https://github.com/echostack-org/echopop # Online location of your book
path_to_book: docs # Optional path to your book, relative to the repository root
branch: main # Which branch of the repository should be used when creating links (optional)
diff --git a/docs/general/install.md b/docs/general/install.md
index 092bc600..b59f58e5 100644
--- a/docs/general/install.md
+++ b/docs/general/install.md
@@ -31,13 +31,13 @@ We recommend using the ``libmamba`` solver instead of the classic solver.
```
## Latest source
-[](https://github.com/OSOceanAcoustics/echopop/releases)
+[](https://github.com/echostack-org/echopop/releases)
If you need the latest development version or want to contribute, clone the repository and install from source:
```shell
# Clone the repository
-git clone https:://github.com/OSOceanAcoustics/echopop.git
+git clone https:://github.com/echostack-org/echopop.git
cd echopop
# Create a conda environment using the supplied requirements files
diff --git a/pyproject.toml b/pyproject.toml
index 4562ebe5..d48c4784 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -67,7 +67,7 @@ dependencies = [
]
[project.urls]
-Homepage = "https://github.com/OSOceanAcoustics/echopop"
+Homepage = "https://github.com/echostack-org/echopop"
[tool.setuptools.packages.find]
where = ["."]
From 94fa1f2dc1dd235d31158b36ae45ecbd60abc2f5 Mon Sep 17 00:00:00 2001
From: Lloyd Izard <76954858+LOCEANlloydizard@users.noreply.github.com>
Date: Thu, 21 May 2026 11:38:35 -0700
Subject: [PATCH 2/4] Migrate dependency management to pyproject.toml
- Move dev/docs deps to pyproject extras
- Update CI and RTD install workflows
- Remove legacy requirements/config files
- Refresh installation documentation
---
.flake8 | 5 -----
.github/workflows/pr.yaml | 3 +--
.github/workflows/pypi.yaml | 2 +-
.readthedocs.yaml | 3 ++-
docs/conf.py | 18 ++--------------
docs/general/install.md | 17 ++++++++-------
docs/requirements.txt | 8 --------
environment.yaml | 39 -----------------------------------
pyproject.toml | 22 +++++++++++++++++++-
requirements-dev.txt | 8 --------
requirements.txt | 34 ------------------------------
tox.ini | 41 -------------------------------------
12 files changed, 35 insertions(+), 165 deletions(-)
delete mode 100644 .flake8
delete mode 100644 docs/requirements.txt
delete mode 100644 environment.yaml
delete mode 100644 requirements-dev.txt
delete mode 100644 requirements.txt
delete mode 100644 tox.ini
diff --git a/.flake8 b/.flake8
deleted file mode 100644
index 1254d6a7..00000000
--- a/.flake8
+++ /dev/null
@@ -1,5 +0,0 @@
-[flake8]
-max-line-length = 100
-output-file = flake8_log.txt
-tee = True
-ignore = E722,E203,W503,T001
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index 96e84b2b..f928619b 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -29,8 +29,7 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools wheel
- pip install -r requirements-dev.txt
- pip install -e .
+ python -m pip install -e ".[dev]"
- name: Test with pytest
run: |
pytest
diff --git a/.github/workflows/pypi.yaml b/.github/workflows/pypi.yaml
index 87a14fbd..14bf4e9b 100644
--- a/.github/workflows/pypi.yaml
+++ b/.github/workflows/pypi.yaml
@@ -34,7 +34,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
- run: python -m pip install --upgrade pip build setuptools>=64.0.0 setuptools_scm[toml]>=8.0 wheel
+ run: python -m pip install --upgrade pip build "setuptools>=64.0.0" "setuptools_scm[toml]>=8.0" wheel
- name: Build distributions
run: |
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 70eb2345..d45d8421 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -40,6 +40,7 @@ sphinx:
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- - requirements: docs/requirements.txt
- method: pip
path: .
+ extra_requirements:
+ - docs
diff --git a/docs/conf.py b/docs/conf.py
index 96b1a7c8..cefebe5b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,17 +1,3 @@
-import sys
-from pathlib import Path
+"""Sphinx configuration for Echopop documentation."""
-# Add the '_ext' directory to sys.path
-# sys.path.append(str(Path('_ext').resolve()))
-# sys.path.insert(0, str(Path(__file__).parent / "_ext"))
-
-sys.path.append(str(Path("_ext").resolve()))
-
-
-# Import the echoautobody extension
-# extensions = ['echoautobody', 'helloworld']
-extensions = ["echoautobody"]
-
-# Manually import extension (this registers the directives)
-# import echoautobody
-# import helloworld
+extensions = ["echopop._sphinx_ext.echoautobody"]
diff --git a/docs/general/install.md b/docs/general/install.md
index b59f58e5..b2fae28a 100644
--- a/docs/general/install.md
+++ b/docs/general/install.md
@@ -10,7 +10,7 @@ Ensure you have Python 3.12 or 3.13 installed, as Python 3.14 has known dependen
[](https://pypi.org/project/echopop/)
-Install Echopop directly from PyPi:
+Install Echopop directly from PyPI:
```shell
pip install echopop
@@ -37,13 +37,11 @@ If you need the latest development version or want to contribute, clone the repo
```shell
# Clone the repository
-git clone https:://github.com/echostack-org/echopop.git
+git clone https://github.com/echostack-org/echopop.git
cd echopop
-# Create a conda environment using the supplied requirements files
-conda create -c conda-forge -n echopop --yes python=3.12 --file requirements.txt
-
-# Switch to the newly built environment
+# Create and activate a conda environment
+conda create -c conda-forge -n echopop --yes python=3.12
conda activate echopop
# Optional: Install ipykernel for JupyterLab support
@@ -53,11 +51,12 @@ conda install -c conda-forge ipykernel
pip install -e .
```
-For a full development environment that includes docs building and testing, use:
+For a full development environment that includes testing and documentation tools, use:
```shell
-conda create -c conda-forge -n echopop --yes python=3.12 --file requirements.txt --file requirements-dev.txt --file docs/requirements.txt
-pip install -e .
+conda create -c conda-forge -n echopop-dev --yes python=3.12
+conda activate echopop-dev
+pip install -e ".[dev,docs]"
```
:::{admonition} Development mode
diff --git a/docs/requirements.txt b/docs/requirements.txt
deleted file mode 100644
index 7544e8b1..00000000
--- a/docs/requirements.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-docutils>=0.18,<0.22
-jupyter-book==1.0.4.post1
-numpydoc
-setuptools
-sphinx-automodapi
-sphinxcontrib-bibtex
-sphinx-tippy
-sphinx-togglebutton
diff --git a/environment.yaml b/environment.yaml
deleted file mode 100644
index 9332cd30..00000000
--- a/environment.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: echopop
-channels:
- - conda-forge
-dependencies:
- - python>=3.9
- - pip
- # Computational stack
- - awkward
- - lmfit
- - numpy
- - openpyxl
- - pandas
- - scipy
- - xarray>=2026.01.0
- # Spatial stack
- - geopandas
- - geopy
- - pyproj
- - shapely
- - verde
- # Validation stack
- - pandera>=0.25
- - pydantic>=2.0.0
- - traitlets
- # Data stack
- - pyarrow
- # Jupyter stack
- - ipympl
- - jupyter_bokeh>=3.0.5
- # Static visualization stack
- - cartopy
- - matplotlib
- - seaborn
- # Interactive visualization stack
- - bokeh
- - geoviews
- - holoviews
- - hvplot
- - ipywidgets
diff --git a/pyproject.toml b/pyproject.toml
index d48c4784..188e5374 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -63,7 +63,27 @@ dependencies = [
"holoviews",
"hvplot",
"ipywidgets"
+]
+
+[project.optional-dependencies]
+dev = [
+ "black",
+ "coverage",
+ "isort",
+ "pre-commit",
+ "pytest",
+ "ruff",
+]
+docs = [
+ "docutils>=0.18,<0.22",
+ "jupyter-book==1.0.4.post1",
+ "numpydoc",
+ "setuptools",
+ "sphinx-automodapi",
+ "sphinxcontrib-bibtex",
+ "sphinx-tippy",
+ "sphinx-togglebutton",
]
[project.urls]
@@ -90,7 +110,7 @@ extend-exclude = [
]
[tool.ruff.lint]
-# E/F = Flake8 basics, I = Isort, D = Docstrings (pydocstyle)
+# E/F = pycodestyle/pyflakes basics, I = import sorting, D = docstrings
select = ["E", "F", "I", "D", "UP", "B"]
ignore = [
"D100", # Missing docstring in public module
diff --git a/requirements-dev.txt b/requirements-dev.txt
deleted file mode 100644
index 8a6e2829..00000000
--- a/requirements-dev.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-black
-coverage
-flake8
-isort
-pre-commit
-pytest
-ruff
-tox
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 1caa5e44..00000000
--- a/requirements.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-# Data processing and wrangling stack
-awkward
-lmfit
-numpy
-openpyxl
-pandas
-scipy
-numba>=0.63.0b1
-xarray>=2026.01.0
-# Spatial data processing stack
-cartopy
-geopandas
-geopy
-pyproj
-shapely
-verde
-# Validation stack
-pandera>=0.25
-pydantic>=2.0.0
-traitlets
-# Data stack
-pyarrow
-# Jupyter stack
-ipympl
-jupyter_bokeh>=3.0.5
-# Static visualization stack
-matplotlib
-seaborn
-# Interactive visualization stack
-bokeh
-geoviews
-holoviews
-hvplot
-ipywidgets
diff --git a/tox.ini b/tox.ini
deleted file mode 100644
index 6c2c9cbb..00000000
--- a/tox.ini
+++ /dev/null
@@ -1,41 +0,0 @@
-[tox]
-envlist = py312, py313, coverage, docs, lint
-skip_missing_interpreters = true
-recreate = true
-parallel = auto
-
-[testenv]
-deps =
- pytest
- pytest-cov
-commands = pytest --cov=echopop --cov-report=term --cov-report=html
-install_command = pip install --cache-dir={env:TOX_PIP_CACHE_DIR:.tox/.cache} {opts} {packages}
-
-[testenv:py311]
-venv = fresh_py311
-allowlist_externals =
- pytest
- pytest-cov
-deps =
- python-dateutil
-commands = pytest --cov=echopop --cov-report=term --cov-report=html
-install_command = pip install --cache-dir={env:TOX_PIP_CACHE_DIR:.tox/.cache} {opts} {packages}
-
-[testenv:docs]
-deps =
- -r ./docs/requirements.txt
-commands =
- jupyter-book build ./docs
-
-[testenv:lint]
-deps = pre-commit
-commands = pre-commit run --all-files
-
-[testenv:coverage]
-description = Run tests with coverage
-skip_install = true
-deps =
- coverage
-commands =
- coverage report
- coverage html
From fb46f21bff28fd2481bafdf534c3b6503dd96002 Mon Sep 17 00:00:00 2001
From: Lloyd Izard <76954858+LOCEANlloydizard@users.noreply.github.com>
Date: Thu, 21 May 2026 15:28:00 -0700
Subject: [PATCH 3/4] Update pyproject.toml
Co-authored-by: Brandyn Lucca <45861253+brandynlucca@users.noreply.github.com>
---
pyproject.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index 188e5374..2f5b423c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -105,7 +105,7 @@ write_to_template = 'version = "{version}" # noqa'
line-length = 100
target-version = "py312"
extend-exclude = [
- "echopop/workflows/nwfsc_feat/workflows",
+ "echopop/workflow_examples"
"*.ipynb"
]
From 3cc582a381d4df5f997d71f65ae5e13f0cff652a Mon Sep 17 00:00:00 2001
From: Brandyn Lucca <45861253+brandynlucca@users.noreply.github.com>
Date: Thu, 21 May 2026 15:33:14 -0700
Subject: [PATCH 4/4] Re-adding missing comma
---
pyproject.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index 2f5b423c..92063f81 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -105,7 +105,7 @@ write_to_template = 'version = "{version}" # noqa'
line-length = 100
target-version = "py312"
extend-exclude = [
- "echopop/workflow_examples"
+ "echopop/workflow_examples",
"*.ipynb"
]