Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
0294a7e
Multi yoy integration - combines PRs #456, #460 and #464 at once. (#470)
cdeline Mar 5, 2026
2560977
Increase test coverage (#486)
martin-springer Mar 5, 2026
1476f02
rename pending to v3.2.0
martin-springer Mar 5, 2026
b25219d
Update docstrings and address simple comments from copilot
cdeline Mar 5, 2026
1d2d060
flake8 grumbles
cdeline Mar 5, 2026
cfc71da
initial pyproject.toml implementation
martin-springer Mar 6, 2026
77e8bd8
changelog
martin-springer Mar 6, 2026
687f66d
update URLs
martin-springer Mar 6, 2026
993fb1e
change NREL to NLR
martin-springer Mar 6, 2026
9c4dac5
linting
martin-springer Mar 6, 2026
cadebc6
changelog
martin-springer Mar 6, 2026
3f773bf
Fix broad `except ValueError` in `degradation_timeseries_plot` for mu…
Copilot Mar 6, 2026
3c594db
Merge branch 'master' into development
martin-springer Mar 19, 2026
55b4a3a
Merge branch 'development' into migrate-to-pyproject-toml
martin-springer Mar 19, 2026
47c7187
Merge branch 'migrate-to-pyproject-toml' into migrate-NREL-to-NatLabR…
martin-springer Mar 19, 2026
b505b3f
Migration from setup.py to pyproject.toml (#491)
martin-springer Mar 20, 2026
3d53bd1
update PVDAQ citation in notebooks
martin-springer Mar 20, 2026
764eb20
Merge branch 'release_321' into migrate-NREL-to-NatLabRockies
martin-springer Mar 20, 2026
afb26a7
Change NREL to NLR (#492)
martin-springer Mar 20, 2026
dec571e
Adopt pixi for environment management and modernize CI (#493)
martin-springer Mar 20, 2026
6e9744e
merge pixi implementation
martin-springer Mar 20, 2026
2538d16
move changelog from pending to 3.2.1
martin-springer Mar 20, 2026
02eb66d
re-run notebooks to account for formatting changes in warning messages
martin-springer Mar 20, 2026
98907c1
sanitize filterpy SyntaxWarning
martin-springer Mar 20, 2026
e7b957b
replace unmaintained filterpy package with drop in replacement bayesi…
martin-springer Mar 20, 2026
51ea5b6
update package imports
martin-springer Mar 20, 2026
a5b226a
delete duplicate line
martin-springer Mar 20, 2026
4e21a00
add new multi year nb to nbval
martin-springer Mar 20, 2026
f4544a7
fix pytest status badges
martin-springer Mar 20, 2026
f4a18e1
Multi yoy no label (#498)
cdeline Jun 24, 2026
8b22e2e
Merge remote-tracking branch 'origin/master' into development
martin-springer Jun 24, 2026
e5b39ee
Merge remote-tracking branch 'origin/development' into release_321
martin-springer Jun 24, 2026
6238de5
re-run TrendAnalysis nb
martin-springer Jun 26, 2026
b240e6e
comments mdeceglie
martin-springer Jun 30, 2026
e105ede
Merge branch 'development' into release_321
martin-springer Jun 30, 2026
34de395
update release date
martin-springer Jul 1, 2026
2eaae37
Merge branch 'master' into development
martin-springer Jul 1, 2026
df5f4af
Merge branch 'development' into release_321
martin-springer Jul 1, 2026
653af0c
Fix release 3.2.1 audit issues
martin-springer Jul 1, 2026
614884b
fix xgboost min dep
martin-springer Jul 1, 2026
3ba9183
add dependency checks
martin-springer Jul 1, 2026
37e38e2
update pixi lock
martin-springer Jul 1, 2026
a7036ed
update to pixi lock v7
martin-springer Jul 2, 2026
f057e45
update developer notes
martin-springer Jul 2, 2026
9c8f4c8
clarify readme
martin-springer Jul 2, 2026
1fe34ad
update github workflows
martin-springer Jul 2, 2026
51fa325
copilot suggestions
martin-springer Jul 2, 2026
bcfbd09
fix version tag in CI
martin-springer Jul 2, 2026
b1f0b10
update release date
martin-springer Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/flake8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,23 @@ name: flake8
# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#pull_request
on: [pull_request]

permissions:
contents: read

jobs:
lint:

runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.12]
python-version: ["3.13"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0 # fetch all branches, needed so we can diff against the target branch
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install flake8
Expand Down
28 changes: 13 additions & 15 deletions .github/workflows/nbval.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ name: nbval

on: [pull_request]

permissions:
contents: read

jobs:
notebook-check:

Expand All @@ -18,26 +21,21 @@ jobs:
]

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
- uses: actions/checkout@v7
with:
python-version: "3.12"
- name: Install notebook environment
run: |
python -m pip install --upgrade pip wheel
pip install --timeout=300 -r requirements.txt -r docs/notebook_requirements.txt .[test]
- name: Run notebook and check output
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- uses: prefix-dev/setup-pixi@v0.10.0
with:
environments: dev
- name: Validate notebook output
run: |
# --nbval-sanitize-with: pre-process text to remove irrelevant differences (e.g. warning filepaths)
pytest --nbval --nbval-sanitize-with docs/nbval_sanitization_rules.cfg docs/${{ matrix.notebook-file }}
- name: Run notebooks again, save files
pixi run -e dev pytest --nbval --nbval-sanitize-with docs/nbval_sanitization_rules.cfg docs/${{ matrix.notebook-file }}
- name: Convert notebook to HTML
run: |
pip install nbconvert[webpdf]
mkdir docs/artifacts
jupyter nbconvert --to html --execute --ExecutePreprocessor.timeout=600 --allow-errors --output artifacts/${{ matrix.notebook-file }}.html docs/${{ matrix.notebook-file }}
pixi run -e dev jupyter nbconvert --to html --output artifacts/${{ matrix.notebook-file }}.html docs/${{ matrix.notebook-file }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: executed_notebook_${{ matrix.notebook-file }}
path: docs/artifacts
21 changes: 16 additions & 5 deletions .github/workflows/publish-to-pypi.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
name: Publish Python distribution to PyPI and TestPyPI

on: push
on:
push:
branches:
- master
- development
tags:
- '*'

permissions:
contents: read

jobs:
build:
name: Build distribution
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install pypa/build
Expand All @@ -22,7 +33,7 @@ jobs:
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: python-package-distributions
path: dist/
Expand All @@ -42,7 +53,7 @@ jobs:

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/
Expand Down
114 changes: 92 additions & 22 deletions .github/workflows/pytest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,112 @@ on:
- development
pull_request:

permissions:
contents: read

jobs:
build:
check-deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- uses: prefix-dev/setup-pixi@v0.10.0
with:
run-install: false
- name: Verify pixi.lock is in sync with pyproject.toml
run: |
if ! pixi install --locked -e dev; then
echo ""
echo "::error title=pixi.lock out of sync::pixi.lock does not match pyproject.toml."
echo ""
echo "To fix, run 'pixi install' locally and commit the updated pixi.lock:"
echo ""
echo " pixi install"
echo " git add pixi.lock"
echo " git commit -m 'Update pixi.lock'"
exit 1
fi
- name: Verify min-feature pins match project.dependencies lower bounds
run: pixi run -e dev check-deps

validate-envs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- uses: prefix-dev/setup-pixi@v0.10.0
with:
environments: core default dev
frozen: true
- name: Validate core environment
run: pixi run -e core python -c "import rdtools; print(rdtools.__version__)"
- name: Validate default environment
run: pixi run python -c "import rdtools; import jupyter; print('default OK')"
- name: Validate dev environment
run: pixi run -e dev python -c "import rdtools; import pytest; import jupyter; print('dev OK')"

test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
env: [
'-r requirements.txt .[test]',
'-r requirements-min.txt .[test]',
'--upgrade --upgrade-strategy=eager .[test]'
]
exclude:
- python-version: "3.11"
env: '-r requirements-min.txt .[test]'
- python-version: "3.12"
env: '-r requirements-min.txt .[test]'
- python-version: "3.13"
env: '-r requirements-min.txt .[test]'
environment: [dev-py310, dev-py311, dev-py312, dev-py313, dev-py314]
fail-fast: false

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- uses: prefix-dev/setup-pixi@v0.10.0
with:
environments: ${{ matrix.environment }}
- name: Test with pytest (${{ matrix.environment }})
run: pixi run -e ${{ matrix.environment }} test
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

test-min:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- uses: prefix-dev/setup-pixi@v0.10.0
with:
environments: dev-min
- name: Test with pytest (minimum versions)
run: pixi run -e dev-min test
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

test-latest:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false

steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # setuptools-scm needs tags to resolve the version
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install ${{ matrix.env }}
- name: Install latest versions
run: |
python -m pip install --upgrade pip wheel
pip install --timeout=300 ${{ matrix.env }}
- name: Test with pytest ${{ matrix.env }}
run: |
python -m pytest --cov=./ --cov-report=xml
pip install --timeout=300 --upgrade --upgrade-strategy=eager .[test]
- name: Test with pytest (latest)
run: python -m pytest --cov=rdtools --cov-report=xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
29 changes: 0 additions & 29 deletions .github/workflows/requirements.yaml

This file was deleted.

8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
.coveralls.yml
.coverage
.coverage.*
coverage.xml
htmlcov/

# ignore test cache
Expand Down Expand Up @@ -38,5 +39,12 @@ rdtools.egg-info*

*.pickle

# pixi environments (local, not committed)
.pixi/*
!.pixi/config.toml

# Windows shortcuts (developer-local)
*.lnk

# ignore vscode settings
.vscode/
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ authors:
orcid: "https://orcid.org/0000-0002-9867-8930"
title: "RdTools"
doi: 10.5281/zenodo.1210316
url: "https://github.com/NREL/rdtools"
url: "https://github.com/NatLabRockies/rdtools"
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at RdTools@nrel.gov. All
reported by contacting the project team at RdTools@nlr.gov. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Expand Down
5 changes: 0 additions & 5 deletions MANIFEST.in

This file was deleted.

Loading
Loading