Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
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
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
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
22 changes: 8 additions & 14 deletions .github/workflows/nbval.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,22 @@ jobs:
'TrendAnalysis_example.ipynb',
'TrendAnalysis_example_NSRDB.ipynb',
'degradation_and_soiling_example.ipynb',
'system_availability_example.ipynb'
'system_availability_example.ipynb',
'Multi-year_on_year_example.ipynb'
]

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
- uses: prefix-dev/setup-pixi@v0.8.3
with:
python-version: "3.12"
- name: Install notebook environment
environments: dev
- name: Validate notebook output
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
pixi run -e dev pytest --nbval --nbval-sanitize-with docs/nbval_sanitization_rules.cfg docs/${{ matrix.notebook-file }}
- name: Convert notebook to HTML
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
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
with:
Expand Down
73 changes: 54 additions & 19 deletions .github/workflows/pytest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,60 @@ on:


jobs:
build:
validate-envs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: prefix-dev/setup-pixi@v0.8.3
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:
environment: [dev-py310, dev-py311, dev-py312, dev-py313, dev-py314]
fail-fast: false

steps:
- uses: actions/checkout@v4
- uses: prefix-dev/setup-pixi@v0.8.3
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@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

test-min:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: prefix-dev/setup-pixi@v0.8.3
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@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

test-latest:
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]'
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false

steps:
Expand All @@ -35,13 +71,12 @@ jobs:
uses: actions/setup-python@v5
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
env:
Expand Down
29 changes: 0 additions & 29 deletions .github/workflows/requirements.yaml

This file was deleted.

5 changes: 5 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,9 @@ rdtools.egg-info*

*.pickle

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

# ignore vscode settings
.vscode/
Binary file added .pixi.lnk
Binary file not shown.
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.

42 changes: 34 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<img src="./docs/sphinx/source/_images/logo_horizontal_highres.png" width="500" alt="RdTools logo"/>

Master branch:
[![Build Status](https://github.com/NREL/rdtools/workflows/pytest/badge.svg?branch=master)](https://github.com/NREL/rdtools/actions?query=branch%3Amaster)
[![Build Status](https://github.com/NatLabRockies/rdtools/actions/workflows/pytest.yaml/badge.svg?branch=master)](https://github.com/NatLabRockies/rdtools/actions/workflows/pytest.yaml?query=branch%3Amaster)

Development branch:
[![Build Status](https://github.com/NREL/rdtools/workflows/pytest/badge.svg?branch=development)](https://github.com/NREL/rdtools/actions?query=branch%3Adevelopment)
[![Build Status](https://github.com/NatLabRockies/rdtools/actions/workflows/pytest.yaml/badge.svg?branch=development)](https://github.com/NatLabRockies/rdtools/actions/workflows/pytest.yaml?query=branch%3Adevelopment)

Code coverage:
[![codecov](https://codecov.io/gh/NREL/rdtools/graph/badge.svg?token=K2HDjFkBws)](https://codecov.io/gh/NREL/rdtools)
[![codecov](https://codecov.io/gh/NatLabRockies/rdtools/graph/badge.svg?token=K2HDjFkBws)](https://codecov.io/gh/NatLabRockies/rdtools)

RdTools is an open-source library to support reproducible technical analysis of
time series data from photovoltaic energy systems. The library aims to provide
Expand All @@ -25,20 +25,46 @@ command line:
pip install rdtools
```

Optional extras are available:

```
pip install rdtools[notebooks] # Jupyter and notebook dependencies
pip install rdtools[test] # pytest, coverage, flake8
pip install rdtools[dev] # notebooks + test combined
```

Alternatively, RdTools uses [pixi](https://pixi.sh) for reproducible
environment management. To get started with pixi:

```
pixi install # default environment (core + notebooks)
pixi run lab # launch Jupyter Lab
```

For development, use the `dev` environment which includes both notebook
and test dependencies:

```
pixi shell -e dev # activate the dev environment
pixi run -e dev test # run pytest with coverage
pixi run -e dev nbval # validate notebooks
pixi run -e dev lab # launch Jupyter Lab
```

For API documentation and full examples, please see the [documentation](https://rdtools.readthedocs.io).

RdTools currently is tested on Python 3.9+.
RdTools currently is tested on Python 3.10+.

## Citing RdTools

To cite RdTools, please use the following along with the version number
and the specific DOI coresponding to that version from [Zenodo](https://doi.org/10.5281/zenodo.1210316):

- Michael G. Deceglie, Kevin Anderson, Adam Shinn, Ambarish Nag, Mark Mikofski,
Martin Springer, Jiyang Yan, Kirsten Perry, Sandra Villamar, Will Vining,
- Michael G. Deceglie, Martin Springer, Kevin Anderson, Adam Shinn, Kirsten Perry, Ambarish Nag,
Mark Mikofski, Jiyang Yan, Sandra Villamar, Will Vining,
Gregory Kimball, Daniel Ruth, Noah Moyer, Quyen Nguyen, Dirk Jordan,
Matthew Muller, and Chris Deline, RdTools, version {insert version}, Computer Software,
https://github.com/NREL/rdtools. DOI:{insert DOI}
https://github.com/NatLabRockies/rdtools. DOI:{insert DOI}

The underlying workflow of RdTools has been published in several places.
If you use RdTools in a published work, you may also wish to cite the following as
Expand Down Expand Up @@ -76,5 +102,5 @@ Other useful references which may also be consulted for degradation rate methodo

## Further Instructions and Updates

Check out the [wiki](https://github.com/NREL/rdtools/wiki) for additional usage documentation, and for information on development goals and framework.
Check out the [wiki](https://github.com/NatLabRockies/rdtools/wiki) for additional usage documentation, and for information on development goals and framework.

Loading
Loading