From e079209529762b9aa500e81d2b500bfb2afbf310 Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:15:05 +0200 Subject: [PATCH 1/8] Remove data_version parameter from get_meteonorm_tmy --- pvlib/iotools/meteonorm.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pvlib/iotools/meteonorm.py b/pvlib/iotools/meteonorm.py index 88af396e42..6c541efee8 100644 --- a/pvlib/iotools/meteonorm.py +++ b/pvlib/iotools/meteonorm.py @@ -402,8 +402,8 @@ def get_meteonorm_tmy( surface_tilt=0, surface_azimuth=180, time_step="1h", horizon="auto", terrain_situation="open", albedo=None, turbidity="auto", random_seed=None, - clear_sky_radiation_model="esra", data_version="latest", - future_scenario=None, future_year=None, interval_index=False, + clear_sky_radiation_model="esra", future_scenario=None, + future_year=None, interval_index=False, map_variables=True, url=URL): """ Retrieve TMY irradiance and weather data from Meteonorm. @@ -448,8 +448,6 @@ def get_meteonorm_tmy( with the same random seed will yield identical results. clear_sky_radiation_model : str, default : 'esra' Which clearsky model to use. Must be either `'esra'` or `'solis'`. - data_version : str, default : 'latest' - Version of Meteonorm climatological data to be used. future_scenario : str, optional Future climate scenario. future_year : int, optional @@ -498,7 +496,6 @@ def get_meteonorm_tmy( "situation": terrain_situation, "turbidity": turbidity, "clear_sky_radiation_model": clear_sky_radiation_model, - "data_version": data_version, "random_seed": random_seed, "future_scenario": future_scenario, "future_year": future_year, From f8dafe652f09ac7da0ecbf6ca6f322dd048245fe Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:18:01 +0200 Subject: [PATCH 2/8] Add whatsnew entry --- docs/sphinx/source/whatsnew/v0.15.2.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.15.2.rst b/docs/sphinx/source/whatsnew/v0.15.2.rst index ef85250377..5ba476bc49 100644 --- a/docs/sphinx/source/whatsnew/v0.15.2.rst +++ b/docs/sphinx/source/whatsnew/v0.15.2.rst @@ -37,6 +37,9 @@ Bug fixes :py:mod:`csv` module instead of a naive ``str.split(',')``, so quoted column names containing commas (e.g. the material names in spectral-on-demand files) are no longer split into spurious columns. (:issue:`2736`, :pull:`2771`) +* Remove ``data_version`` parameter from + :py:func:`~pvlib.iotools.get_meteonorm_tmy` as this parameter is no longer + supported and results in an error. (:pull:`2781`) Enhancements ~~~~~~~~~~~~ From 6f1810301f95625d3d95cfd9915dd62a88802213 Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:38:48 +0200 Subject: [PATCH 3/8] Remove data_version from tests --- tests/iotools/test_meteonorm.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/iotools/test_meteonorm.py b/tests/iotools/test_meteonorm.py index ab4b53293d..e9154f1722 100644 --- a/tests/iotools/test_meteonorm.py +++ b/tests/iotools/test_meteonorm.py @@ -302,7 +302,6 @@ def test_get_meteonorm_tmy( turbidity=[5.2, 4, 3, 3.1, 3.0, 2.8, 3.14, 3.0, 3, 3, 4, 5], random_seed=100, clear_sky_radiation_model='solis', - data_version='v9.0', # fix version future_scenario='ssp1_26', future_year=2030, interval_index=True, From 9b8d32d860eaeb981af3bcb6a56a072a0f7b5194 Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Mon, 15 Jun 2026 22:51:18 +0200 Subject: [PATCH 4/8] Apply suggestions from code review Co-authored-by: Kevin Anderson --- pvlib/iotools/meteonorm.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pvlib/iotools/meteonorm.py b/pvlib/iotools/meteonorm.py index 6c541efee8..6f88f0de26 100644 --- a/pvlib/iotools/meteonorm.py +++ b/pvlib/iotools/meteonorm.py @@ -402,8 +402,8 @@ def get_meteonorm_tmy( surface_tilt=0, surface_azimuth=180, time_step="1h", horizon="auto", terrain_situation="open", albedo=None, turbidity="auto", random_seed=None, - clear_sky_radiation_model="esra", future_scenario=None, - future_year=None, interval_index=False, + clear_sky_radiation_model="esra", data_version=None, + future_scenario=None, future_year=None, interval_index=False, map_variables=True, url=URL): """ Retrieve TMY irradiance and weather data from Meteonorm. @@ -448,6 +448,8 @@ def get_meteonorm_tmy( with the same random seed will yield identical results. clear_sky_radiation_model : str, default : 'esra' Which clearsky model to use. Must be either `'esra'` or `'solis'`. + data_version : str, optional + Deprecated parameter. Has no effect. future_scenario : str, optional Future climate scenario. future_year : int, optional @@ -491,7 +493,13 @@ def get_meteonorm_tmy( `_ .. [3] `Meteonorm API reference `_ - """ + if data_version is not None: + msg = ( + "This parameter was removed from the Meteonorm API " + "and now has no effect." + ) + warn_deprecated(since="0.15.2", removal="0.16.0", name="data_version", + addendum=msg) additional_params = { "situation": terrain_situation, "turbidity": turbidity, From c66c72bf366b1e076de7a133be62adb11ce8f44f Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:32:16 +0200 Subject: [PATCH 5/8] Add triple quote - fix linter --- pvlib/iotools/meteonorm.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pvlib/iotools/meteonorm.py b/pvlib/iotools/meteonorm.py index 6f88f0de26..55fdb991a7 100644 --- a/pvlib/iotools/meteonorm.py +++ b/pvlib/iotools/meteonorm.py @@ -493,6 +493,7 @@ def get_meteonorm_tmy( `_ .. [3] `Meteonorm API reference `_ + """ if data_version is not None: msg = ( "This parameter was removed from the Meteonorm API " From b309dcaab03a465e882129f00022ede5727e57e3 Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:40:20 +0200 Subject: [PATCH 6/8] Add test --- pvlib/iotools/meteonorm.py | 2 ++ tests/iotools/test_meteonorm.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/pvlib/iotools/meteonorm.py b/pvlib/iotools/meteonorm.py index 55fdb991a7..61bf72be5d 100644 --- a/pvlib/iotools/meteonorm.py +++ b/pvlib/iotools/meteonorm.py @@ -5,6 +5,8 @@ from urllib.parse import urljoin from pandas._libs.tslibs.parsing import DateParseError +from pvlib._deprecation import warn_deprecated + URL = "https://api.meteonorm.com/v1/" VARIABLE_MAP = { diff --git a/tests/iotools/test_meteonorm.py b/tests/iotools/test_meteonorm.py index e9154f1722..12e71bae21 100644 --- a/tests/iotools/test_meteonorm.py +++ b/tests/iotools/test_meteonorm.py @@ -5,6 +5,8 @@ from tests.conftest import RERUNS, RERUNS_DELAY from requests.exceptions import HTTPError +from pvlib._deprecation import pvlibDeprecationWarning + @pytest.fixture def demo_api_key(): @@ -314,3 +316,14 @@ def test_get_meteonorm_tmy( # calls. so we allow a small amount of variation with atol. pd.testing.assert_frame_equal(data.iloc[:12], expected_meteonorm_tmy_data, check_exact=False, atol=1) + + +@fail_on_pvlib_version('0.17.0') +def test_get_meteonorm_tmy_data_version_deprecation(demo_api_key): + with pytest.warns(pvlibDeprecationWarning): + _ = pvlib.iotools.get_meteonorm_tmy( + latitude, + longitude, + api_key=demo_api_key, + data_version="latest", + ) From 844473b17dcf137da0abcbbe2fdb8ea1fba2547e Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:42:41 +0200 Subject: [PATCH 7/8] Fix test --- tests/iotools/test_meteonorm.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/iotools/test_meteonorm.py b/tests/iotools/test_meteonorm.py index 12e71bae21..875d5b5e24 100644 --- a/tests/iotools/test_meteonorm.py +++ b/tests/iotools/test_meteonorm.py @@ -2,7 +2,7 @@ import numpy as np import pytest import pvlib -from tests.conftest import RERUNS, RERUNS_DELAY +from tests.conftest import RERUNS, RERUNS_DELAY, fail_on_pvlib_version from requests.exceptions import HTTPError from pvlib._deprecation import pvlibDeprecationWarning @@ -319,11 +319,13 @@ def test_get_meteonorm_tmy( @fail_on_pvlib_version('0.17.0') +@pytest.mark.remote_data +@pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_get_meteonorm_tmy_data_version_deprecation(demo_api_key): with pytest.warns(pvlibDeprecationWarning): _ = pvlib.iotools.get_meteonorm_tmy( - latitude, - longitude, + latitude=50, + longitude=10, api_key=demo_api_key, data_version="latest", ) From be23a6d18008e3705303a9ee9c524e2730bf9c74 Mon Sep 17 00:00:00 2001 From: "Adam R. Jensen" <39184289+AdamRJensen@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:52:34 +0200 Subject: [PATCH 8/8] Use demo_url in test --- tests/iotools/test_meteonorm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/iotools/test_meteonorm.py b/tests/iotools/test_meteonorm.py index 875d5b5e24..5cce2e9cd6 100644 --- a/tests/iotools/test_meteonorm.py +++ b/tests/iotools/test_meteonorm.py @@ -321,11 +321,12 @@ def test_get_meteonorm_tmy( @fail_on_pvlib_version('0.17.0') @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) -def test_get_meteonorm_tmy_data_version_deprecation(demo_api_key): +def test_get_meteonorm_tmy_data_version_deprecation(demo_url, demo_api_key): with pytest.warns(pvlibDeprecationWarning): _ = pvlib.iotools.get_meteonorm_tmy( latitude=50, longitude=10, api_key=demo_api_key, data_version="latest", + url=demo_url )