detect_clearsky and prilliman fail on DST days, kimber fails on tz-naive data (since #2924)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 72/100
Rechercherichtung
Beginne mit _get_sample_intervals in pvlib/tools.py, das detect_clearsky und prilliman gemeinsam nutzen, und mit der Funktion kimber in pvlib/soiling.py, wo der Index mit tz_convert(None) umgewandelt wird. Führe die beiden Reproduktionen aus dem Issue aus, um die Fehler zu bestätigen. Fertig ist, wenn beide auf einem DST-übergreifenden zeitzonenbehafteten Index und einem zeitzonenlosen Index ohne Fehler laufen und die bestehenden Tests in test_clearsky.py, test_soiling.py, test_temperature.py und test_tools.py weiterhin bestehen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
On main (0f6631a, pandas 3.1.0), both of these worked before #2924 and now raise:
import pandas as pd
import pvlib
loc = pvlib.location.Location(49.28, -123.12, tz='America/Vancouver')
times = pd.date_range('2026-03-07', '2026-03-10', freq='1min',
tz=loc.tz, inclusive='left')
ghi = loc.get_clearsky(times)['ghi']
pvlib.clearsky.detect_clearsky(ghi, ghi)
# NotImplementedError: algorithm does not yet support unequal time intervals...
rain = pd.Series(0.0, index=pd.date_range('2026-01-01', periods=720, freq='h'))
pvlib.soiling.kimber(rain)
# TypeError: Cannot convert tz-naive timestamps, use tz_localize to localize
In _get_sample_intervals, tz_localize(None) turns the index into local clock time, so the 1-minute data gets a 61-minute step where the clocks change. temperature.prilliman uses the same helper, so it fails the same way.
kimber uses tz_convert(None), which raises on a tz-naive index:
What I'd suggest: subtract the timestamps directly. That gives elapsed time for both naive and tz-aware indexes.
# tools._get_sample_intervals
deltas = (times[1:] - times[:-1]) / pd.Timedelta('60s')
# soiling.kimber
timestep_interval = rainfall.index[1] - rainfall.index[0]
day_fraction = timestep_interval / pd.Timedelta(hours=24)
Plus two tests: detect_clearsky on a DST day should match the same data in UTC, and kimber with a tz-naive index should match the existing expected output.
I tried this locally:
- both new tests fail on main and pass with the change;
test_clearsky.py,test_soiling.py,test_temperature.pyandtest_tools.pypass on pandas 3.1.0 and 2.3.3;- on the commit before #2924 (d6075f6), both examples run fine.
I didn't find an existing issue for this. Happy to open a PR if this sounds right.
AI disclosure: I used Claude Code (an AI coding agent) to find and trace this, run the examples and tests on my machine, and draft this note.
@echedey-ls @kandersolar
- Vorherrschende Sprache
- Python
- Sterne
- 1.7k
- Forks
- 1.2k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus pvlib/pvlib-python
-
documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
pvlib/pvlib-python#2921 · 2 Kommentare · 2 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
Possibility of beam irradiance from behind plane of arrayEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
pvlib/pvlib-python#2903 · 5 Kommentare · 2 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
use offset parameter instead of calculating bday in cdromEvtl. vergeben @chenyi6758-source hat das vor 16 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
pvlib/pvlib-python#2902 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Add an example or documentation on using 'bhi' from ERA5Evtl. wieder frei @anshurajbisoyi98-ctrl hat das vor 31 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
pvlib/pvlib-python#2880 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Use "long-wave" rather than "infra-red" to refer to thermal radiation.Evtl. wieder frei @Rahi-padwal hat das vor 269 Tagen übernommen, und es ist kein Pull Request offen. Offenapi easy
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
pvlib/pvlib-python#2653 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in pvlib/pvlib-python
Ähnliche Issues
-
bug module:nodes tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
rocketride-org/rocketride-server#3020 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
bretterer/home-assistant-rivian#335 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
mampfes/hacs_waste_collection_schedule#8114 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
TIGER-AI-Lab/ClawBench#475 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
UKGovernmentBEIS/inspect_ai#6322 ·
Maintainer antworten meist innerhalb von 1 Tag