Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
427 commits
Select commit Hold shift + click to select a range
8dd5b2e
Merge branch 'development' into db_merge
RDaxini Oct 15, 2025
e215261
test matrix upgrade
martin-springer Oct 16, 2025
31019b9
deprecate python 3.9 support
martin-springer Oct 16, 2025
764ba54
set fail-fast to false
martin-springer Oct 16, 2025
13fda85
update test data for PVGIS 5.3
martin-springer Oct 16, 2025
e8aa734
numba is not ready for python 3.14
martin-springer Oct 16, 2025
01c9547
Merge pull request #281 from NREL/test_matrix
martin-springer Oct 16, 2025
193d704
Update HPC Connection Required - Scenario - Geospatial.ipynb
RDaxini Oct 17, 2025
dc7fc56
move to nrel folder
RDaxini Oct 17, 2025
afff670
skip nrel only notebooks
RDaxini Oct 17, 2025
0bdc502
file organization
RDaxini Oct 17, 2025
0f8ae62
update python version for testbook check
RDaxini Oct 17, 2025
7312b2b
move sanitization cfg and testbook py
RDaxini Oct 17, 2025
edd2069
Update humidity.py
RDaxini Oct 17, 2025
aa2c49d
group testbook checks
RDaxini Oct 17, 2025
52a254c
Update testbook.yaml
RDaxini Oct 17, 2025
92171e0
back to matrix (since one failure stops other checks)
RDaxini Oct 17, 2025
0aa9b7a
linting
RDaxini Oct 17, 2025
997ee3d
update logic for passing function args in geospatialscenario.py
RDaxini Oct 17, 2025
ef6379c
update docs of humidity.py (t vs backsheet_thickness)
RDaxini Oct 17, 2025
0d507fb
specify back_encap_thickness as well in notebook
RDaxini Oct 17, 2025
034a71b
delete empty cell
RDaxini Oct 17, 2025
c9dd36a
update logic in scenario.py to preserve datetimeindex
RDaxini Oct 17, 2025
0695cc8
use try/except for demonstration of failure
RDaxini Oct 17, 2025
a2e173c
linting
RDaxini Oct 17, 2025
0c5e059
fix datetime index issues (temperature nb and scenario.py)
RDaxini Oct 17, 2025
f1bb10b
increase points for downselect
RDaxini Oct 17, 2025
dfe87ac
fix json file path
RDaxini Oct 17, 2025
2c30f41
black formatting geospatialscenario.py
RDaxini Oct 17, 2025
0710a79
add skip for kestrel check function
RDaxini Oct 17, 2025
1dd099e
generate reference geospatial templates
RDaxini Oct 17, 2025
736e6ca
Update DegradationDatabase.json
MDKempe Oct 17, 2025
3569a30
Revert "add skip for kestrel check function"
RDaxini Oct 17, 2025
e03bbb4
Update standards.py
RDaxini Oct 17, 2025
58aa495
reference, letid accel
RDaxini Oct 17, 2025
4a152e5
Create Trenton-Wells.md
Trenton-Wells Oct 20, 2025
109a4f0
Update Tools - Degradation.ipynb
MDKempe Oct 20, 2025
d6676e4
Merge remote-tracking branch 'origin/dev-spectral-irrad-tools' into K…
MDKempe Oct 20, 2025
acc0fb0
initial function call updates
RDaxini Oct 21, 2025
22f9dfd
update `get_anywhere()`
RDaxini Oct 21, 2025
47049cc
update notebook monte carlo arrhenius psm3 call
RDaxini Oct 21, 2025
560f1b0
argument fixes, clear outputs
RDaxini Oct 21, 2025
ef9dfdb
update monte carlo standoff weather db
RDaxini Oct 21, 2025
54ada8a
Update 4 - Weather Database Access.ipynb
RDaxini Oct 21, 2025
a1cdacd
Update Monte Carlo - Standoff.ipynb
RDaxini Oct 21, 2025
53501ca
regenerate reference output monte carlo arrhenius
RDaxini Oct 21, 2025
589ca4d
regenerate output monte carlo standoff
RDaxini Oct 21, 2025
2035bcf
regenerate output weather database access
RDaxini Oct 21, 2025
8ee8b7b
Update ASTM Live Demo.ipynb
RDaxini Oct 21, 2025
75e5670
astm live demo fix plotting bugs and generate new output
RDaxini Oct 22, 2025
b118e6c
monte carlo arrhenius outputs
RDaxini Oct 22, 2025
3bc363b
try nbval skip tag
RDaxini Oct 22, 2025
321f2b0
fix utilities module for new format
RDaxini Oct 22, 2025
7f51a80
Delete Degradation Database.xlsm
Oct 22, 2025
a257e45
Update DegradationDatabase.json
Oct 22, 2025
63191d0
Update degradation.py
Oct 22, 2025
63aabba
Update test_degradation.py
Oct 22, 2025
af44e5d
Merge branch 'psm4' into db_merge
RDaxini Oct 22, 2025
c8023e4
Update utilities.py
Oct 22, 2025
8059de4
Update Tools - Degradation.ipynb
Oct 22, 2025
9efb682
fix and enhance test_get_kinetics
RDaxini Oct 22, 2025
aefe190
Merge branch 'psm4' into monkey_nbval
RDaxini Oct 22, 2025
3f94041
run precommit
RDaxini Oct 22, 2025
ef7c0d6
Update LETID - Passivated Wafer.ipynb
RDaxini Oct 22, 2025
2b92f31
fix letid accelerated test notebook
RDaxini Oct 22, 2025
1f0b8c3
rerun letid accelerated
RDaxini Oct 22, 2025
7c1bb1f
remove empty cell letid passivated wafer
RDaxini Oct 22, 2025
3ae3ee7
update whatsnew
RDaxini Oct 22, 2025
92935fb
rerun letid passivated wafer
RDaxini Oct 22, 2025
b5d9985
update whatsnew
RDaxini Oct 22, 2025
ddbad38
psm3 -> psm4
RDaxini Oct 22, 2025
f534e69
update NotImplementedError and docs
RDaxini Oct 22, 2025
81acb20
fix test error message
RDaxini Oct 22, 2025
f5ecf82
Update scenario.py
RDaxini Oct 22, 2025
fe72592
Merge branch 'psm4' into monkey_nbval
RDaxini Oct 22, 2025
5025d15
Update weather.py
RDaxini Oct 22, 2025
a1f2547
Merge branch 'psm4' into monkey_nbval
RDaxini Oct 22, 2025
8dac455
Merge branch 'development' into pysam
tobin-ford Oct 22, 2025
ec44d6c
Revert "Update weather.py"
RDaxini Oct 22, 2025
07ebb03
Remove utilities.restore_gids()
tobin-ford Oct 22, 2025
22e9d84
Update weather.py
RDaxini Oct 22, 2025
eef947e
Update weather.py
RDaxini Oct 22, 2025
5f0a479
Update test_weather.py
RDaxini Oct 22, 2025
84fc3ff
Merge branch 'psm4' into monkey_nbval
RDaxini Oct 22, 2025
0f88717
Add load_gcr_from_config test
tobin-ford Oct 22, 2025
d3afab1
Remove extraneous SAM configs from testing
tobin-ford Oct 22, 2025
6ce699a
Update degradation.py
MDKempe Oct 22, 2025
a8e69e3
remove unnecessary args
RDaxini Oct 22, 2025
3944df9
rerun hpc temp notebook
RDaxini Oct 22, 2025
6f88f4f
add default database to standards.py get()
RDaxini Oct 22, 2025
648e1d7
Update scenario.py
RDaxini Oct 22, 2025
66d7b78
Fix test_pysam_missing_nrel_pysam_deps
tobin-ford Oct 22, 2025
7c49ea4
Update standards.py
RDaxini Oct 22, 2025
243faae
set demo api key (to generate ref outputs later)
RDaxini Oct 22, 2025
5fe1f36
ref output (rerun) api load nsrdb distributed
RDaxini Oct 22, 2025
ede0594
rerun (ref output) temperature nb
RDaxini Oct 22, 2025
2cecd0c
rerun single location nb reference output
RDaxini Oct 22, 2025
ae59c3e
Update docstring to full pvlib function name
martin-springer Oct 23, 2025
6c6832d
Merge pull request #287 from NREL/psm4
martin-springer Oct 23, 2025
5128e1f
Merge branch 'development' into CLA
Trenton-Wells Oct 23, 2025
40e7c49
Merge pull request #284 from NREL/CLA
RDaxini Oct 23, 2025
1c4f6ac
Merge branch 'development' into monkey_nbval
RDaxini Oct 23, 2025
6c9ceeb
Merge branch 'development' into db_merge
RDaxini Oct 23, 2025
133c004
pysam nb fix data formatting and nsrdb api call
RDaxini Oct 23, 2025
9e4c52e
update args (psm4) pysam nb
RDaxini Oct 23, 2025
970299f
use datasubset to avoid timeouts
RDaxini Oct 23, 2025
6272305
redo dataset subselection
RDaxini Oct 23, 2025
c4a7c78
try reducing to 2 gids...
RDaxini Oct 23, 2025
dd9ccaf
Update API Call Required - PYSam.ipynb
RDaxini Oct 23, 2025
0d7592a
subset again
RDaxini Oct 23, 2025
8d6e4df
check notebooks in a single env
RDaxini Oct 23, 2025
79a185d
Update testbook.yaml
RDaxini Oct 23, 2025
56757b6
set random seed for reproducible results
RDaxini Oct 23, 2025
a83bafc
Revert "Merge remote-tracking branch 'origin/dev-spectral-irrad-tools…
RDaxini Oct 24, 2025
13e61d6
Update degradation.py
MDKempe Oct 24, 2025
586d446
merge dev
RDaxini Oct 24, 2025
74552b2
fix indentation and tests
RDaxini Oct 24, 2025
b65f536
fix tests
RDaxini Oct 24, 2025
77b1040
fix tests
RDaxini Oct 24, 2025
3b7d7e9
linting
RDaxini Oct 24, 2025
31184b3
set values_only=False
RDaxini Oct 24, 2025
1c29c4a
remove _read_material (error from merge dev branch)
RDaxini Oct 24, 2025
b836ebc
degradation.py linting
RDaxini Oct 24, 2025
4ae4229
fix notebook (using values_only=True)
RDaxini Oct 24, 2025
a390b7f
rerun edge seal o2 ingress notebook
RDaxini Oct 24, 2025
20bb8cb
clean up and refactoring, type hints, defaults... see review comments
RDaxini Oct 28, 2025
136386c
refactor gas constant to module level
RDaxini Oct 28, 2025
b847e19
Merge branch 'development' into test_kempe
RDaxini Oct 28, 2025
f469628
delete from gitignore
RDaxini Oct 31, 2025
671863d
rename testbook py and add docstring
RDaxini Oct 31, 2025
172d905
Merge pull request #235 from NREL/monkey_nbval
martin-springer Oct 31, 2025
0e908eb
Merge branch 'development' into db_merge
RDaxini Oct 31, 2025
5440bd8
fix letid accel nb
RDaxini Oct 31, 2025
e2ff9c6
Merge branch 'development' into test_kempe
RDaxini Nov 2, 2025
8072924
Merge branch 'development' into materials
RDaxini Nov 3, 2025
279cc9a
material->materials in notebook
RDaxini Nov 4, 2025
10d659e
rerun nb
RDaxini Nov 4, 2025
9839b3b
Update .gitignore
RDaxini Nov 4, 2025
a9ede38
Merge branch 'development' into pysam
tobin-ford Nov 5, 2025
9e43175
Update PySAM testing. Remove InSPIRE environment
tobin-ford Nov 6, 2025
5e8a142
format and lint
tobin-ford Nov 6, 2025
515a3c2
Fix flake8 error
tobin-ford Nov 6, 2025
c025e05
Update tutorial pysam kwargs
tobin-ford Nov 6, 2025
9cf6d08
Update tutorial pysam kwargs pt2
tobin-ford Nov 6, 2025
9a523f3
Update DegradationDatabase.json
RDaxini Nov 13, 2025
4f76c5e
Update B-O LID - Accelerated Test.ipynb
RDaxini Nov 13, 2025
5943406
Update LETID - Accelerated Test.ipynb
RDaxini Nov 13, 2025
b1d924d
Fixed units & superscripts.
Trenton-Wells Nov 18, 2025
11fbb16
Reset units outside of docstrings in letid.py to match existing tests.
Trenton-Wells Nov 20, 2025
06c1ed3
Merge pull request #301 from NREL/285-fix-units-in-letidpy
RDaxini Nov 20, 2025
2d6a5fe
Merge pull request #248 from NREL/db_merge
martin-springer Nov 20, 2025
bcc9d9e
Merge pull request #185 from NREL/materials
martin-springer Nov 21, 2025
522f0bf
Merge remote-tracking branch 'origin/development' into test_kempe
martin-springer Nov 21, 2025
b57e7bf
Merge pull request #292 from NREL/test_kempe
martin-springer Nov 21, 2025
0a94878
Merge remote-tracking branch 'origin/development' into pysam
martin-springer Nov 21, 2025
0922056
initial re-structure attempt
martin-springer Nov 21, 2025
508fbd3
update notebook workflow
martin-springer Nov 21, 2025
8c96e3a
update flake8 workflo
martin-springer Nov 21, 2025
b15571b
exclude standoff from workflow
martin-springer Nov 21, 2025
6fb3464
update readme
martin-springer Nov 21, 2025
b5e7a33
re-run notebook
martin-springer Nov 21, 2025
88d9085
exclude tools scripts from flake8
martin-springer Nov 21, 2025
e2a1015
conditionally deploy jb books
martin-springer Nov 21, 2025
85324f4
update notebook
martin-springer Nov 21, 2025
cbce416
remove tool notebooks from notebook checks
martin-springer Nov 21, 2025
08e7dfd
fix in actual notebook
martin-springer Nov 21, 2025
77d8269
exclude scripts from jb workflow
martin-springer Nov 21, 2025
0ddb746
restrict to jupyter book < 2
martin-springer Nov 21, 2025
614ade1
fix logo path and references
martin-springer Nov 21, 2025
1aa3196
Update docs/source/_autosummary/pvdeg.pysam.rst
RDaxini Nov 26, 2025
28f0f5d
Update docs/source/_autosummary/pvdeg.pysam.rst
RDaxini Nov 26, 2025
58f8296
Update pvdeg/utilities.py
RDaxini Nov 26, 2025
bd98a62
update reference
RDaxini Nov 26, 2025
1a4a0b5
Update v0.7.0.rst
RDaxini Nov 26, 2025
48eed1c
Update v0.6.0.rst
RDaxini Nov 26, 2025
12a7fa5
Update optimal GCR function docstring
tobin-ford Nov 26, 2025
eb96c14
remvoe 0.6.2
RDaxini Nov 26, 2025
7e0d727
transfer 0.6..2 to 0.7.0 (based on #252)
RDaxini Nov 26, 2025
070f64f
Update optimal GCR docstring pt2
tobin-ford Nov 26, 2025
43ff01a
Update v0.7.0.rst
RDaxini Nov 26, 2025
d259a4c
Merge pull request #252 from NREL/pysam
RDaxini Nov 26, 2025
4602b65
Merge branch 'development' into whatsnew
RDaxini Nov 26, 2025
ef9fe50
link pr/issues
RDaxini Nov 26, 2025
dbe9252
Merge branch 'whatsnew' of https://github.com/NREL/PVDegradationTools…
RDaxini Nov 26, 2025
f0f874c
Merge branch 'development' into restructure_notebooks
RDaxini Nov 26, 2025
88992f4
update 03 pysam api nb and py
RDaxini Nov 26, 2025
8fca368
remove pysam single loc nb from nbval workflow
RDaxini Nov 26, 2025
8985856
Update index.rst
RDaxini Nov 26, 2025
085a3d3
pysamv1 --> pvsamv1
martin-springer Dec 1, 2025
8b63eed
updates to readme's
martin-springer Dec 2, 2025
410cbad
deploy books to gh-pages-dev
martin-springer Dec 2, 2025
0921a69
use html instead of site
martin-springer Dec 2, 2025
3206cf5
deploy on PR's to development
martin-springer Dec 2, 2025
4ab1b2b
pages subdirectory approach for preview
martin-springer Dec 2, 2025
cd9694b
remove year from copyright
martin-springer Dec 2, 2025
8285080
another try to get development pages to show up
martin-springer Dec 2, 2025
a1f454c
update main readme's
martin-springer Dec 2, 2025
f58064b
include tools notebooks
martin-springer Dec 2, 2025
957404c
toc levels
martin-springer Dec 2, 2025
a5f29ff
max depth
martin-springer Dec 2, 2025
1990f1c
titles only
martin-springer Dec 2, 2025
d4502b7
attempt to fix notebook header levels
martin-springer Dec 2, 2025
019bdac
do not execute hpc notebooks
martin-springer Dec 3, 2025
f97d460
standoff notebook only in tools folder
martin-springer Dec 3, 2025
9141d5a
move tools folder into tutorials
martin-springer Dec 3, 2025
3c695d7
manual toc
martin-springer Dec 3, 2025
d860e2f
remove the hard to maintain version restrictions in the notebooks
martin-springer Dec 3, 2025
931f5f6
combine nrel hpc and geospatial
martin-springer Dec 3, 2025
531a2e4
header levels in tools
martin-springer Dec 3, 2025
489a77a
notebook titles as headers
martin-springer Dec 3, 2025
cd90cb3
split up geospatial and scenario
martin-springer Dec 3, 2025
335227e
update notebook workflows
martin-springer Dec 3, 2025
e3bfd70
update scenario description
martin-springer Dec 3, 2025
e7fb4a2
make notebooks api independent
martin-springer Dec 3, 2025
19df838
make monte carlo standoff independent of API
martin-springer Dec 3, 2025
e96a9c6
update release notes
martin-springer Dec 3, 2025
1c19276
fix publishing to testpypi
martin-springer Dec 3, 2025
b8a37a1
publish pre-releases to testpypi and actual releases to pypi
martin-springer Dec 3, 2025
c423459
update docu index.rst
martin-springer Dec 3, 2025
1cf1240
Merge branch 'restructure_notebooks' into whatsnew
martin-springer Dec 3, 2025
1a1fcd9
Merge pull request #304 from NREL/whatsnew
martin-springer Dec 3, 2025
5484b90
add contributing instructions
martin-springer Dec 3, 2025
9d8488d
instructions to add jupyter kernel
martin-springer Dec 3, 2025
8d5096a
update what's new
martin-springer Dec 3, 2025
42b6ba5
align readme, contributing with docs
martin-springer Dec 3, 2025
4bd0e5c
use NREL repo for developer installation without forking
martin-springer Dec 3, 2025
f2cf2f6
update read the docs
martin-springer Dec 3, 2025
679a500
minor updates to contributing
martin-springer Dec 3, 2025
1aa9635
build docs with each PR
martin-springer Dec 3, 2025
d8b4c03
update changelog index
martin-springer Dec 3, 2025
c55cf39
Merge pull request #302 from NREL/restructure_notebooks
martin-springer Dec 3, 2025
efa3d61
spell PVDeg uniformly in the docs
martin-springer Dec 3, 2025
4b423b8
add zenodo config
martin-springer Dec 3, 2025
b16c88d
add zenodo config and citation
martin-springer Dec 3, 2025
dd2a587
update to one citation for the repo
martin-springer Dec 3, 2025
a6e983e
remove redundant latests release section
martin-springer Dec 3, 2025
de33f21
moved software record into acknowledgements section
martin-springer Dec 3, 2025
c9df628
set paper release date to 2026
martin-springer Dec 3, 2025
8c3bef1
update grant id in zenodo config
martin-springer Dec 3, 2025
38db437
remove grant id - DOE not supported by zenodo
martin-springer Dec 3, 2025
67bba7c
add type to contributors
martin-springer Dec 3, 2025
26ccc02
update citation file on development
martin-springer Dec 3, 2025
f1b80e5
update branch protection
martin-springer Dec 3, 2025
bd98bc3
chore: update CITATION.cff to version 0.7.0rc8
github-actions[bot] Dec 3, 2025
f03e60a
remove logo on index page of docs
martin-springer Dec 3, 2025
88ccefb
update tutorials docs
martin-springer Dec 3, 2025
ec80d9b
Merge branch 'development' of https://github.com/NREL/PVDegradationTo…
martin-springer Dec 3, 2025
b22b4e9
remove init from api index page
martin-springer Dec 3, 2025
7df7544
update docs badge from stable to latest
martin-springer Dec 3, 2025
0f7cb05
chore: update CITATION.cff to version 0.7.0
github-actions[bot] Dec 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ exclude =
.venv
build
tutorials_and_tools/tutorials_and_tools/*.py
tutorials/**/scripts/*.py
tools/**/scripts/*.py
File renamed without changes.
27 changes: 15 additions & 12 deletions .github/workflows/deploy-books.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ on:
push:
branches:
- main
- development
pull_request:
branches:
- development
- main
# If your git repository has the Jupyter Book within some-subfolder next to
# unrelated files, you can make this run only if a file within that specific
# folder has been modified.
Expand All @@ -16,9 +21,8 @@ on:
jobs:
deploy-book:
runs-on: ubuntu-latest
environment:
name: github-pages
permissions:
contents: write
pages: write
id-token: write
steps:
Expand Down Expand Up @@ -47,15 +51,14 @@ jobs:
# Build the book
- name: Build the book
run: |
jupyter-book build tutorials_and_tools
jupyter-book build tutorials

# Upload the book's HTML as an artifact
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "tutorials_and_tools/_build/html"

# Deploy the book's HTML to GitHub Pages
# Deploy to gh-pages using peaceiris action for all branches
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: tutorials/_build/html
publish_branch: gh-pages
destination_dir: ${{ github.ref == 'refs/heads/main' && '.' || 'dev-preview' }}
keep_files: ${{ github.ref != 'refs/heads/main' }}
2 changes: 1 addition & 1 deletion .github/workflows/flake8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ jobs:
run: echo '::add-matcher::.github/workflows/flake8-linter-matcher.json'
- name: Run flake8 on changed files only
run: |
git diff origin/$GITHUB_BASE_REF HEAD -- "*.py" | flake8 --config=.flake8 --diff
git diff origin/$GITHUB_BASE_REF HEAD --name-only -- "*.py" | grep -v -E "(tutorials/.*/scripts/|tools/.*/scripts/)" | xargs -r git diff origin/$GITHUB_BASE_REF HEAD -- | flake8 --config=.flake8 --diff
39 changes: 18 additions & 21 deletions .github/workflows/nbval.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,20 @@ jobs:
env:
# Notebooks with estimated runtime in seconds (format: "notebook:runtime")
ALL_NOTEBOOKS: |
"1 - Basics, Humidity, Design.ipynb:10"
"2 - Degradation.ipynb:5"
"3 - Spectral Degradation.ipynb:5"
"4 - Weather Database Access.ipynb:15"
"ASTM Live Demo.ipynb:10"
"B-O LID - Accelerated Test.ipynb:10"
"Custom-Functions-Nopython.ipynb:30"
"LETID - Accelerated Test.ipynb:120"
"LETID - Outdoor LETID.ipynb:30"
"LETID - Outdoor Scenario Based on Accelerated Test Result.ipynb:45"
"LETID - Passivated Wafer.ipynb:80"
"Monte Carlo - Arrhenius.ipynb:180"
"Monte Carlo - Standoff.ipynb:30"
"Pysam - Single Location.ipynb:25"
"Tools - Edge Seal Oxygen Ingress.ipynb:15"
"Van't Hoff Degradation Model.ipynb:5"
"Geospatial - Local Scenario.ipynb:1"
"01_basics/01_basics_humidity_design.ipynb:10"
"01_basics/02_degradation.ipynb:5"
"01_basics/03_spectral_degradation.ipynb:5"
"01_basics/04_weather_database_access.ipynb:15"
"02_degradation/01_bo_lid_accelerated_test.ipynb:10"
"02_degradation/02_letid_accelerated_test.ipynb:120"
"02_degradation/03_letid_outdoor.ipynb:30"
"02_degradation/04_letid_outdoor_scenario.ipynb:45"
"02_degradation/05_letid_passivated_wafer.ipynb:80"
"02_degradation/06_vant_hoff_degradation_model.ipynb:5"
"03_monte_carlo/01_arrhenius.ipynb:180"
"03_monte_carlo/02_standoff.ipynb:30"
"06_advanced/01_custom_functions_nopython.ipynb:30"
"10_workshop_demos/01_astm_live_demo.ipynb:10"
steps:
- name: Calculate batch matrix
id: set-matrix
Expand Down Expand Up @@ -151,7 +148,7 @@ jobs:
fail-fast: false
matrix: ${{ fromJson(needs.calculate-batches.outputs.matrix) }}
env:
NOTEBOOK_DIR: "tutorials_and_tools/tutorials_and_tools"
NOTEBOOK_DIR: "tutorials"
SANITIZE_CFG: "nbval_sanitization_rules.cfg"
ALL_NOTEBOOKS: ${{ needs.calculate-batches.outputs.notebooks }}
BATCH_ASSIGNMENTS: ${{ needs.calculate-batches.outputs.batch_assignments }}
Expand All @@ -168,14 +165,14 @@ jobs:
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('tutorials_and_tools/requirements.txt', 'pyproject.toml') }}
key: ${{ runner.os }}-pip-${{ hashFiles('tutorials/requirements.txt', 'pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-

- name: Install notebook environment
run: |
python -m pip install --upgrade pip wheel
pip install --timeout=300 -r tutorials_and_tools/requirements.txt
pip install --timeout=300 -r tutorials/requirements.txt
pip install --timeout=300 -e .[test]
pip install nbval global_land_mask dotenv imageio nrel-pysam
pip install nbconvert[webpdf]
Expand Down Expand Up @@ -239,5 +236,5 @@ jobs:
# Execute pytest with the batch of notebooks
echo "Testing batch ${{ matrix.batch }} notebooks: ${FULL_PATHS[*]}"
pytest --nbval \
--nbval-sanitize-with "$SANITIZE_CFG" \
--nbval-sanitize-with ".github/nbval_sanitization_rules.cfg" \
"${FULL_PATHS[@]}"
34 changes: 32 additions & 2 deletions .github/workflows/publish-to-pypi.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI

on: push
on:
push:
tags:
- '*'

jobs:
build:
Expand All @@ -9,6 +12,8 @@ jobs:

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for setuptools_scm
- name: Set up Python
uses: actions/setup-python@v5
with:
Expand All @@ -27,10 +32,35 @@ jobs:
name: python-package-distributions
path: dist/

publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
if: startsWith(github.ref, 'refs/tags/')
needs:
- build
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/pvdeg
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
skip-existing: true

publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
# Only publish to PyPI on final release tags (not rc, alpha, beta, etc.)
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'rc') && !contains(github.ref, 'alpha') && !contains(github.ref, 'beta') && !contains(github.ref, 'a') && !contains(github.ref, 'b')
needs:
- build
runs-on: ubuntu-latest
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ jobs:

runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13"]
env: [
'.[test]',
'--upgrade --upgrade-strategy=eager .[test]'
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/testbook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: notebook-testbook-check

on: [pull_request]

jobs:
notebook-testbook-check:
runs-on: ubuntu-latest
env:
NOTEBOOK_DIR: "tutorials"
TESTBOOK_NOTEBOOK_LIST: |
"06_advanced/03_pysam_api.ipynb"
"06_advanced/04_nsrdb_distributed_api.ipynb"
"04_scenario/01_scenario_temperature.ipynb"
"04_scenario/02_scenario_single_location.ipynb"
"04_scenario/03_scenario_mountain_downselect.ipynb"
"05_geospatial/01_geospatial_templates.ipynb"
"05_geospatial/04_scenario_geographical_features.ipynb"
"05_geospatial/05_scenario_geospatial.ipynb"

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install notebook environment
run: |
python -m pip install --upgrade pip wheel
pip install --timeout=300 -r tutorials/requirements.txt
pip install --timeout=300 -e .[test]
pip install testbook
pip install global_land_mask dotenv imageio nrel-pysam
- name: Run all testbook notebooks in one environment
env:
api_key: "DEMO_KEY"
email: "user@mail.com"
run: |
mapfile -t NOTEBOOKS < <(echo "$TESTBOOK_NOTEBOOK_LIST")
for notebook in "${NOTEBOOKS[@]}"; do
NOTEBOOK_NAME="${notebook//\"/}"
if [ -z "$NOTEBOOK_NAME" ]; then
continue
fi
FULL_PATH="$NOTEBOOK_DIR/$NOTEBOOK_NAME"
echo "Testing $FULL_PATH with testbook..."
python scripts/run_all_testbook.py "$FULL_PATH"
done
49 changes: 49 additions & 0 deletions .github/workflows/update-citation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Update CITATION.cff

on:
push:
tags:
- 'v*'

jobs:
update-citation:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
fetch-depth: 0
token: ${{ secrets.PAT_TOKEN }}

- name: Extract version from tag
id: get_version
run: |
TAG=${GITHUB_REF#refs/tags/v}
echo "version=$TAG" >> $GITHUB_OUTPUT
echo "date=$(date +%Y-%m-%d)" >> $GITHUB_OUTPUT

- name: Update CITATION.cff
run: |
VERSION="${{ steps.get_version.outputs.version }}"
DATE="${{ steps.get_version.outputs.date }}"

# Update version and date-released fields
sed -i "s/^version: .*/version: $VERSION/" CITATION.cff
sed -i "s/^date-released: .*/date-released: $DATE/" CITATION.cff

- name: Commit and push changes
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

if git diff --quiet CITATION.cff; then
echo "No changes to CITATION.cff"
else
git add CITATION.cff
git commit -m "chore: update CITATION.cff to version ${{ steps.get_version.outputs.version }}"
git push origin HEAD:development
fi
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ coverage.xml
.hypothesis/
.pytest_cache/

# pvdeg scenario output files generated
pvd_*
# pvdeg scenario output files generated during testing
tests/pvd_*

# Translations
Expand All @@ -70,7 +69,10 @@ instance/
docs/sphinx/_build/

# tutorial jupyter-book
_build/
pvdeg_tutorials/_build/
tutorials/_build/
tutorials_and_tools/_build/

# PyBuilder
target/
Expand Down Expand Up @@ -109,3 +111,8 @@ TEMP/

# Slurm log files
slurm-*.out

# Run information
tests\data\h5_pytest.h5
tests/TEMP_test_addModule_materials.py
/tutorials_and_tools/tutorials_and_tools/pvd_job_temperature and degradation/pipeline_results
14 changes: 11 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
exclude: '^(docs/source/|tutorials_and_tools/_build/)'
exclude: '^(docs/source/|tutorials/_build/)'
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
Expand All @@ -14,9 +14,17 @@ repos:
rev: 25.9.0
hooks:
- id: black
exclude: '^tutorials_and_tools/'
exclude: '^tutorials/'
- repo: https://github.com/PyCQA/flake8
rev: 7.3.0 # Use the desired flake8 version
hooks:
- id: flake8
exclude: '^tutorials_and_tools/'
exclude: '^tutorials/'
- repo: https://github.com/mwouts/jupytext
rev: v1.18.1
hooks:
- id: jupytext
args: [--sync, --pipe, black]
files: '^tutorials/.*\.ipynb$'
additional_dependencies:
- black==25.9.0
13 changes: 5 additions & 8 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,20 @@ build:
os: ubuntu-22.04
tools:
python: "3.11"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"

# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/source/conf.py

# If using Sphinx, optionally build your docs in additional formats such as PDF
# formats:
# - pdf

# Optionally declare the Python requirements required to build your docs
python:
install:
- method: pip
path: .
extra_requirements:
- docs

# Note: Branch-to-version mapping is configured in ReadTheDocs dashboard:
# - 'main' branch -> 'stable' version (default)
# - 'development' branch -> 'latest' version
# To configure: Project Settings > Versions > Activate/set as default
Loading