detect_clearsky and prilliman fail on DST days, kimber fails on tz-naive data (since #2924)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
Piste de recherche
Commence par _get_sample_intervals dans pvlib/tools.py, que detect_clearsky et prilliman partagent, et par la fonction kimber dans pvlib/soiling.py où elle convertit l'index avec tz_convert(None). Exécute les deux reproductions du ticket pour confirmer les erreurs. C'est terminé lorsque les deux s'exécutent sans erreur sur un index avec fuseau horaire couvrant un changement d'heure et sur un index sans fuseau horaire, et que les tests existants dans test_clearsky.py, test_soiling.py, test_temperature.py et test_tools.py passent toujours.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Python
- Étoiles
- 1.7k
- Forks
- 1.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 11
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de pvlib/pvlib-python
-
documentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
pvlib/pvlib-python#2921 · 2 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Possibility of beam irradiance from behind plane of arrayPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
pvlib/pvlib-python#2903 · 5 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
use offset parameter instead of calculating bday in cdromPeut-être pris @chenyi6758-source l’a pris il y a 17 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
pvlib/pvlib-python#2902 ·
Les mainteneurs répondent en général sous 1 jour
-
Add an example or documentation on using 'bhi' from ERA5Peut-être à nouveau libre @anshurajbisoyi98-ctrl l’a pris il y a 32 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
pvlib/pvlib-python#2880 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Use "long-wave" rather than "infra-red" to refer to thermal radiation.Peut-être à nouveau libre @Rahi-padwal l’a pris il y a 269 jours, et aucune pull request n’est ouverte. Ouverteapi easy
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
pvlib/pvlib-python#2653 · 6 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de pvlib/pvlib-python
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
area:docs documentation effort:M ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
mczielinski/ob-analytics#423 ·
Les mainteneurs répondent en général sous 1 jour
-
infra
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 3 jours
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
vllm-project/vllm-ascend#21033 ·
Les mainteneurs répondent en général sous 1 jour