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 @@ DOI - - GitHub License + + GitHub License 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 -[![GitHub release](https://img.shields.io/github/v/release/OSOceanAcoustics/echopop)](https://github.com/OSOceanAcoustics/echopop/releases) +[![GitHub release](https://img.shields.io/github/v/release/echostack-org/echopop)](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 [![PyPI version](https://img.shields.io/pypi/v/echopop)](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" ]