Migrate NREL references to NLR (National Laboratory of the Rockies)#2705
Migrate NREL references to NLR (National Laboratory of the Rockies)#2705jason-curtis wants to merge 10 commits intopvlib:mainfrom
Conversation
Update all nrel.gov URLs to nlr.gov equivalents following the NREL→NLR rename (Dec 2025). The nrel.gov domain stops resolving May 29, 2026. - Update API base URLs in psm4.py and midc.py (critical runtime paths) - Add NLR_API_KEY env var support with NREL_API_KEY deprecation fallback - Update all documentation URLs, prose references, and test comments - Preserve report IDs (NREL/TP-xxx), GitHub URLs, and citation publishers Closes pvlib#2701 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hey @jason-curtis! 🎉Thanks for opening your first pull request! We appreciate your If AI is used for any portion of this PR, you must vet the content |
|
Looks like https://github.com/NREL has moved to https://github.com/NatLabRockies. For reference descriptions, like “the NREL SPA”, would it be helpful to add some sort of “formerly known as NREL…”? I could see this causing some confusion, especially to people newer to solar modeling. |
|
@jason-curtis does Claude strip out pvlib's PR template? |
cwhanse
left a comment
There was a problem hiding this comment.
When referring to the publisher, I think it should stay NREL.
I'm on the fence about NLR SPA vs. NREL SPA. NLR continues to distribute and support code, so that's NLR SPA. The report is NREL SPA. Even NLR's webpage has both: "...the following NLR technical report:"..."Reda, I., ..., NREL Report No...."
So either NLR SPA or NREL SPA is OK with me.
Thanks so much @jason-curtis for taking the initiative here.
Oops, sorry. Claude likes to create things directly with |
I think it's best to edit the original comment and put the checklist there. |
good to know, that helps as we maintainers learn to work with AI in this process.
My intent is to preserve NREL when identifying the publisher of a document. Use NLR when identifying where one can find the document now. Use NLR when describing "ownership" of data or a model, e.g., NLR PVWatts, NLR PSM4, etc. |
docs/examples/irradiance-decomposition/plot_diffuse_fraction.py
Outdated
Show resolved
Hide resolved
|
The SPA should still be called NREL as that's who published it. We do not use the source code distributed by NLR. |
|
it's now distributed by NLR though, right?
<https://optionzero.co>
…On Tue, Mar 3, 2026 at 8:47 AM Adam R. Jensen ***@***.***> wrote:
*AdamRJensen* left a comment (pvlib/pvlib-python#2705)
<#2705 (comment)>
The SPA should still be called NREL as that's who published it. We do not
use the source code distributed by NLR.
—
Reply to this email directly, view it on GitHub
<#2705 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAZPVU7P35IO6E4KIJ5XGF34O4EA3AVCNFSM6AAAAACWE32HH2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTSOJSGI3DGMRTGA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
|
NREL if the reference is to an NREL publication. It's NLR's SPA model now when we are referring to where one can find more information about the algorithm or NLR's implementation. |
* update links for redirects * roll back some NLR -> NREL for publisher reference * fix various typos and EOF removal Co-authored-by: Rajiv Daxini <143435106+RDaxini@users.noreply.github.com> Co-authored-by: Cliff Hansen <cwhanse@sandia.gov>
- Replace broken rredc.nlr.gov TMY3 link with nsrdb.nlr.gov archive - Use canonical https://docs.nlr.gov URL for PVUSA reference PDF - Add trailing newline Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove non-standard double URL in AM1.5 spectra reference - Remove "Pre-print:" prefix from Marion 2008 reference URL Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
NREL GitHub org has moved to NatLabRockies. Update all references in code and docs (excluding historical whatsnew entries). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
thanks for the feedback, folks. I believe I got it all. Also added a docs page about the migration. |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tests/conftest.py
Outdated
|
|
||
|
|
||
| @pytest.fixture(scope="module") | ||
| def nlr_api_key(nrel_api_key): |
There was a problem hiding this comment.
what's the point of the alias? I say just rename the existing function.
| demo_key = os.environ["NLR_API_KEY"] | ||
| except KeyError: | ||
| warnings.warn( | ||
| "WARNING: NREL API KEY environment variable not set! " |
There was a problem hiding this comment.
I'd keep the existing pattern but change the text to "WARNING: NLR_API_KEY (formerly NREL_API_KEY) environment variable....". Don't bother with the deprecation that we have to go back and clean up in a few months.
| * Update all NREL references to NLR (National Laboratory of the Rockies) | ||
| following the laboratory rename and domain migration from ``nrel.gov`` | ||
| to ``nlr.gov``. Add ``NLR_API_KEY`` environment variable support with | ||
| ``NREL_API_KEY`` fallback. (:issue:`2701`, :pull:`2705`) |
There was a problem hiding this comment.
update this pending resolution of need for fallback (see comment on the test fixture).
| :caption: Extras | ||
|
|
||
| extras/nomenclature | ||
| extras/nrel_nlr |
There was a problem hiding this comment.
if we're adding a whole new doc page to explain our stance then we should probably link to it in the whats new
There was a problem hiding this comment.
I see no reason for adding a page on this. That just seems like it'll be outdated soon and is a maintainance burden.
There was a problem hiding this comment.
As evidenced by the 4 rounds of feedback on this PR, I think it's worth having something that explains why we're using NREL in some places and NLR in others but happy to defer to y'all.
tests/conftest.py
Outdated
|
|
||
|
|
||
| @pytest.fixture(scope="module") | ||
| def nlr_api_key(nrel_api_key): |
There was a problem hiding this comment.
test_psm4.py should point to this fixture
| env: | ||
| # copy GitHub Secrets into environment variables for the tests to access | ||
| NLR_API_KEY: ${{ secrets.NRELAPIKEY }} | ||
| NREL_API_KEY: ${{ secrets.NRELAPIKEY }} |
There was a problem hiding this comment.
suggest we go ahead and remove this line. no need to update the secret name though
AdamRJensen
left a comment
There was a problem hiding this comment.
Reports that were published by NREL, should not be changed to NRL.
Osti.gov has been getting a lot better at giving DOIs, so most links can be updated. This avoids us having to change them again in the future.
docs/examples/irradiance-decomposition/plot_diffuse_fraction.py
Outdated
Show resolved
Hide resolved
| :caption: Extras | ||
|
|
||
| extras/nomenclature | ||
| extras/nrel_nlr |
There was a problem hiding this comment.
I see no reason for adding a page on this. That just seems like it'll be outdated soon and is a maintainance burden.
| def test_solaranywhere_tmy3(solaranywhere_index): | ||
| # The SolarAnywhere TMY3 format specifies midnight as 00:00 whereas the | ||
| # NREL TMY3 format utilizes 24:00. The SolarAnywhere file is therefore | ||
| # NLR TMY3 format utilizes 24:00. The SolarAnywhere file is therefore |
There was a problem hiding this comment.
Change depending on decision of naming of TMY3 format.
Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com>
The downloadable C code should be referenced as NRL's. However, our implementations do not match the C-code and should reference the paper; and therefore should still be called NREL SPA. |
- Rename nrel_api_key fixture to nlr_api_key directly (no alias) - Simplify fixture: check NLR_API_KEY, warn with DEMO_KEY fallback (no NREL_API_KEY deprecation logic) - Update test_psm4.py to use nlr_api_key fixture - Remove NREL_API_KEY from CI workflow - Update whatsnew: remove fallback mention, link nrel_nlr doc page
pvlib's implementation doesn't match the NREL SPA code either, so I'm not understanding the concern, can you elaborate? |
|
I think we (maintainers) need to agree on some rules to avoid giving @jason-curtis conflicting guidance. @pvlib/pvlib-maintainer do you agree with the following rules?
Open questions: |
|
Would it help if I enquired internally at NREL to find out if there is any official guidance on this from NREL's perspective...? Or, is this wholly a pvlib decision? disclaimer: there might not even be any official guidance, most of us are also still trying to figure these things out |
Yes, please do. |
I'm in favor of keeping the memory and legacy of NREL alive where possible and reasonable. I would also err on the side of caution by not changing something now, because we can always do it later. It doesn't have to be done with a single stroke of a felt-tipped pen. There was an earlier name change from SERI to NREL, and I think folks in Golden have happily continued to improve the QC software named after it without changing the name. So for the open question, I vote for keeping NREL, at least for now. |
|
Not sure what's up with the 👎, I was asking whether I should reach out to the NREL comms team or whether it's a pvlib decision for us to make alone—that's two options, so... 👎= ? Anyway, I enquired already following @cwhanse's earlier response and was advised that anything published under the NREL brand should be cited and referenced to using the NREL brand. Only more recent work is branded as NLR and should be referenced as such. Recent works includes old software being updated by the now-NLR, if we are using the new version. I see no harm in having sought the lab comms team's input here. |
Certainly no harm. The thumbs down was just my way of saying "not worth it, don't waste your time". I admit that the thumbs down can be seen as a bit aggressive. But thanks for doing it 👍 |
My thumbs down was to the first question. If they told us something we didn't want to do, it could make it more awkward to do something different. |
Summary
nrel.govURLs tonlr.govequivalents following the NREL → NLR rename (December 2025). Thenrel.govdomain stops resolving May 29, 2026.psm4.pyandmidc.py(runtime paths)NLR_API_KEYenvironment variable support withNREL_API_KEYdeprecation fallbackCloses #2701
Verified Domain Mapping
developer.nrel.govdeveloper.nlr.govwww.nrel.govwww.nlr.govsam.nrel.govsam.nlr.govmidcdmz.nrel.govmidcdmz.nlr.govWhat was NOT changed (intentionally)
github.com/NREL/*URLs (org not renamed)raw.githubusercontent.com/NREL/*URLsweb.archive.orgURLs (archived snapshots)NREL/TP-5K00-76626etc.)NREL-PySAMpackage references (PyPI package not renamed)nrel_api_keyfixture name (kept for backwards compat;nlr_api_keyadded as alias)CI Note for Maintainers
The CI workflow now sets both
NLR_API_KEYandNREL_API_KEYfrom the existingNRELAPIKEYsecret. No action needed unless you want to rename the secret.PR template checklist
docs/sphinx/source/referencefor API changes. (see note later about adding a docs page about NREL vs NLR)docs/sphinx/source/whatsnewfor all changes. Includes link to the GitHub Issue with:issue:`num`or this Pull Request with:pull:`num`. Includes contributor name and/or GitHub username (link with:ghuser:`user`).remote-data) and Milestone are assigned to the Pull Request and linked Issue.Followups checklist
# data from NREL 'Slope-Aware Backtracking for Single-Axis Trackers'" we use either NLR or "NLR (NREL at time of publishing)".Test plan
grep -rn 'nrel\.gov' pvlib/ docs/ tests/confirms only excluded items remainpytest tests/— 1345 passed (8 pre-existing failures unrelated to this PR)curl -sI— confirmed 200/301 responsesAI Attestation
This PR was generated with assistance from Claude (Anthropic). All changes were reviewed for correctness.
🤖 Generated with Claude Code