detect_clearsky and prilliman fail on DST days, kimber fails on tz-naive data (since #2924)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
Direção de pesquisa
Comece por _get_sample_intervals em pvlib/tools.py, que detect_clearsky e prilliman compartilham, e pela função kimber em pvlib/soiling.py, onde o índice é convertido com tz_convert(None). Execute as duas reproduções da issue para confirmar os erros. Está concluído quando ambas executarem sem erros em um índice com fuso horário que atravessa o horário de verão e em um índice sem fuso horário, e os testes existentes em test_clearsky.py, test_soiling.py, test_temperature.py e test_tools.py continuarem passando.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Python
- Estrelas
- 1.7k
- Forks
- 1.2k
- Merge médio
- 2d 13h
- PRs com merge (30d)
- 11
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de pvlib/pvlib-python
-
documentation
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
pvlib/pvlib-python#2921 · 2 comentários · 2 reações ·
Mantenedores costumam responder em até 1 dia
-
Possibility of beam irradiance from behind plane of arrayTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
pvlib/pvlib-python#2903 · 5 comentários · 2 reações ·
Mantenedores costumam responder em até 1 dia
-
use offset parameter instead of calculating bday in cdromTalvez já em andamento @chenyi6758-source assumiu há 16 dias. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
pvlib/pvlib-python#2902 ·
Mantenedores costumam responder em até 1 dia
-
Add an example or documentation on using 'bhi' from ERA5Talvez livre de novo @anshurajbisoyi98-ctrl assumiu há 31 dias e não há nenhum pull request aberto. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
pvlib/pvlib-python#2880 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Use "long-wave" rather than "infra-red" to refer to thermal radiation.Talvez livre de novo @Rahi-padwal assumiu há 269 dias e não há nenhum pull request aberto. Abertaapi easy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
pvlib/pvlib-python#2653 · 6 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de pvlib/pvlib-python
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
autowarefoundation/autoware_carla_scenario#1485 ·
Mantenedores costumam responder em até 1 dia
-
needs-area-label
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 2 dias
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Official-Space-AI/OpenPhysGraspGen#114 ·
Mantenedores costumam responder em até 2 dias
-
changelog investigate
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
ramnes/notion-sdk-py#441 ·
-
copy_tree splits same-file errors into charactersTalvez já em andamento @Gambit-Checkmate assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 14 dias