From f18c29bef36b4402dbec4876ba71243b869d6f84 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Sat, 3 Oct 2026 15:37:20 -0600 Subject: [PATCH 1/2] return scalar when input is scalar --- pvlib/tracking.py | 5 +++++ tests/test_tracking.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/pvlib/tracking.py b/pvlib/tracking.py index e234887cd0..a591c9da36 100644 --- a/pvlib/tracking.py +++ b/pvlib/tracking.py @@ -299,6 +299,11 @@ def calc_surface_orientation(tracker_theta, axis_tilt=0, axis_azimuth=0): surface_azimuth = np.degrees( np.arctan2(unit_normal[..., 0], unit_normal[..., 1])) + # above always returns a np.array + # return scalar if `tracker_theta` is a scalar + if np.isscalar(tracker_theta): + surface_azimuth = surface_azimuth.item() + surface_azimuth = np.where(surface_tilt == 0., axis_azimuth - 90., surface_azimuth) # constrain angles to [0, 360) diff --git a/tests/test_tracking.py b/tests/test_tracking.py index 903cf11d1d..5e9b09f25f 100644 --- a/tests/test_tracking.py +++ b/tests/test_tracking.py @@ -511,6 +511,9 @@ def test_calc_surface_orientation_types(): out = tracking.calc_surface_orientation(rotation) assert out['surface_tilt'] == pytest.approx(expected_tilt) assert out['surface_azimuth'] == pytest.approx(expected_azimuth) + # confirm scalar output when input is scalar + assert np.isscalar(out['surface_tilt']) + assert np.isscalar(out['surface_azimuth']) def test_calc_surface_orientation_kwargs(): From 180f62581196307ef5b920432e79c1c952b174e5 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Sat, 3 Oct 2026 15:43:39 -0600 Subject: [PATCH 2/2] whatsnew --- docs/sphinx/source/whatsnew/v0.16.2.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.2.rst b/docs/sphinx/source/whatsnew/v0.16.2.rst index f704525a12..1466710b5f 100644 --- a/docs/sphinx/source/whatsnew/v0.16.2.rst +++ b/docs/sphinx/source/whatsnew/v0.16.2.rst @@ -14,7 +14,8 @@ Deprecations Bug fixes ~~~~~~~~~ - +* :py:func:`pvlib.tracking.calc_surface_orientation` returns scalar when input + is scalar (:issue:`2881`, :pull:`2882`) Enhancements ~~~~~~~~~~~~ @@ -42,4 +43,4 @@ Maintenance Contributors ~~~~~~~~~~~~ - +* Cliff Hansen (:ghuser:`cwhanse`)