From 1ce6fe8289ebc90601b80540f08ac0781bb79db7 Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Wed, 21 Jan 2026 20:13:56 +0530 Subject: [PATCH 1/5] Add simple_efficiency tests for numpy array inputs --- tests/test_transformer.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/test_transformer.py b/tests/test_transformer.py index 0739a9e95a..04c659c4b4 100644 --- a/tests/test_transformer.py +++ b/tests/test_transformer.py @@ -4,6 +4,7 @@ from pvlib import transformer +import numpy as np def test_simple_efficiency(): @@ -57,4 +58,41 @@ def test_simple_efficiency_known_values(): transformer.simple_efficiency(rating*(1 + no_load_loss + load_loss), *args), rating, + ) + + +def test_simple_efficiency_numpy_array_inputs(): + input_power = np.array([100.0, 500.0, 1000.0]) + no_load_loss = np.array([0.005, 0.005, 0.005]) + load_loss = np.array([0.01, 0.01, 0.01]) + rating = 1000.0 + + output_power = transformer.simple_efficiency( + input_power=input_power, + no_load_loss=no_load_loss, + load_loss=load_loss, + transformer_rating=rating + ) + + assert isinstance(output_power, np.ndarray) + assert output_power.shape == input_power.shape + +def test_simple_efficiency_vector_equals_scalar(): + input_power = np.array([200.0, 600.0, 900.0]) + no_load_loss = 0.005 + load_loss = 0.01 + rating = 1000.0 + + vector_result = transformer.simple_efficiency( + input_power=input_power, + no_load_loss=no_load_loss, + load_loss=load_loss, + transformer_rating=rating ) + + scalar_result = np.array([ + transformer.simple_efficiency(p, no_load_loss, load_loss, rating) + for p in input_power + ]) + + assert_allclose(vector_result, scalar_result) \ No newline at end of file From 7abb5e79181d06bf9a2ecb342d6473a2b63158e5 Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Wed, 21 Jan 2026 20:17:39 +0530 Subject: [PATCH 2/5] fix flake --- tests/test_transformer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_transformer.py b/tests/test_transformer.py index 04c659c4b4..5fca27f3df 100644 --- a/tests/test_transformer.py +++ b/tests/test_transformer.py @@ -6,6 +6,7 @@ import numpy as np + def test_simple_efficiency(): # define test inputs @@ -58,7 +59,7 @@ def test_simple_efficiency_known_values(): transformer.simple_efficiency(rating*(1 + no_load_loss + load_loss), *args), rating, - ) + ) def test_simple_efficiency_numpy_array_inputs(): @@ -77,6 +78,7 @@ def test_simple_efficiency_numpy_array_inputs(): assert isinstance(output_power, np.ndarray) assert output_power.shape == input_power.shape + def test_simple_efficiency_vector_equals_scalar(): input_power = np.array([200.0, 600.0, 900.0]) no_load_loss = 0.005 @@ -95,4 +97,4 @@ def test_simple_efficiency_vector_equals_scalar(): for p in input_power ]) - assert_allclose(vector_result, scalar_result) \ No newline at end of file + assert_allclose(vector_result, scalar_result) From d648e80b352531f53dbb35ecc0addd13efa05dc2 Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Fri, 6 Feb 2026 23:08:53 +0530 Subject: [PATCH 3/5] flake8 fix after resolving conflicts --- tests/test_transformer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_transformer.py b/tests/test_transformer.py index 12d68c025b..9772dec717 100644 --- a/tests/test_transformer.py +++ b/tests/test_transformer.py @@ -99,6 +99,8 @@ def test_simple_efficiency_vector_equals_scalar(): ]) assert_allclose(vector_result, scalar_result) + + @pytest.mark.parametrize( "input_power, no_load_loss, load_loss, transformer_rating, expected", [ From 5105dfb9ac7aec8556bfcc393cac9149d0e8590e Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Sat, 7 Feb 2026 02:01:01 +0530 Subject: [PATCH 4/5] removing test_simple_efficiency_numpy_array_inputs --- tests/test_transformer.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/tests/test_transformer.py b/tests/test_transformer.py index 9772dec717..1c65487284 100644 --- a/tests/test_transformer.py +++ b/tests/test_transformer.py @@ -63,23 +63,6 @@ def test_simple_efficiency_known_values(): ) -def test_simple_efficiency_numpy_array_inputs(): - input_power = np.array([100.0, 500.0, 1000.0]) - no_load_loss = np.array([0.005, 0.005, 0.005]) - load_loss = np.array([0.01, 0.01, 0.01]) - rating = 1000.0 - - output_power = transformer.simple_efficiency( - input_power=input_power, - no_load_loss=no_load_loss, - load_loss=load_loss, - transformer_rating=rating - ) - - assert isinstance(output_power, np.ndarray) - assert output_power.shape == input_power.shape - - def test_simple_efficiency_vector_equals_scalar(): input_power = np.array([200.0, 600.0, 900.0]) no_load_loss = 0.005 From 56b68acea2f8960391437ca665c3fe5106ba402a Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Sat, 7 Feb 2026 03:06:52 +0530 Subject: [PATCH 5/5] add whatsnew entry for simple_efficiency vectorization test --- docs/sphinx/source/whatsnew/v0.15.1.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/sphinx/source/whatsnew/v0.15.1.rst b/docs/sphinx/source/whatsnew/v0.15.1.rst index 5cd4131c85..ea278d3e9c 100644 --- a/docs/sphinx/source/whatsnew/v0.15.1.rst +++ b/docs/sphinx/source/whatsnew/v0.15.1.rst @@ -28,7 +28,9 @@ Documentation Testing ~~~~~~~ - +* Add test to verify that :py:func:`~pvlib.transformer.simple_efficiency` + produces consistent results for vectorized and scalar inputs. + (:pull:`2661`) Benchmarking ~~~~~~~~~~~~