33import warnings
44import pytest
55import pvlib
6+ from pvlib .solarposition import _datetime_to_unixtime
67
78try :
89 from importlib import reload
1920import unittest
2021from .conftest import requires_numba
2122
23+ kwargs = dict (start = '2003-10-17 12:30:30' , periods = 1 , freq = 'D' )
24+ try :
25+ times = pd .date_range (** kwargs , unit = 'ns' ) # pandas 2.x, 3.x
26+ except TypeError :
27+ times = pd .date_range (** kwargs ) # pandas 1.x
2228
23- times = (pd .date_range ('2003-10-17 12:30:30' , periods = 1 , freq = 'D' )
24- .tz_localize ('MST' ))
29+ times = times .tz_localize ('MST' )
2530unixtimes = np .array (times .tz_convert ('UTC' ).view (np .int64 )* 1.0 / 10 ** 9 )
2631
2732lat = 39.742476
@@ -258,35 +263,29 @@ def test_transit_sunrise_sunset(self):
258263 # tests at greenwich
259264 times = pd .DatetimeIndex ([dt .datetime (1996 , 7 , 5 , 0 ),
260265 dt .datetime (2004 , 12 , 4 , 0 )]
261- ).tz_localize (
262- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
266+ ).tz_localize ('UTC' )
263267 sunrise = pd .DatetimeIndex ([dt .datetime (1996 , 7 , 5 , 7 , 8 , 15 ),
264268 dt .datetime (2004 , 12 , 4 , 4 , 38 , 57 )]
265- ).tz_localize (
266- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
269+ ).tz_localize ('UTC' )
267270 sunset = pd .DatetimeIndex ([dt .datetime (1996 , 7 , 5 , 17 , 1 , 4 ),
268271 dt .datetime (2004 , 12 , 4 , 19 , 2 , 2 )]
269- ).tz_localize (
270- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
271- times = np .array (times )
272- sunrise = np .array (sunrise )
273- sunset = np .array (sunset )
272+ ).tz_localize ('UTC' )
273+ times = _datetime_to_unixtime (times )
274+ sunrise = _datetime_to_unixtime (sunrise )
275+ sunset = _datetime_to_unixtime (sunset )
274276 result = self .spa .transit_sunrise_sunset (times , - 35.0 , 0.0 , 64.0 , 1 )
275277 assert_almost_equal (sunrise / 1e3 , result [1 ]/ 1e3 , 3 )
276278 assert_almost_equal (sunset / 1e3 , result [2 ]/ 1e3 , 3 )
277279
278280 times = pd .DatetimeIndex ([dt .datetime (1994 , 1 , 2 ), ]
279- ).tz_localize (
280- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
281+ ).tz_localize ('UTC' )
281282 sunset = pd .DatetimeIndex ([dt .datetime (1994 , 1 , 2 , 16 , 59 , 55 ), ]
282- ).tz_localize (
283- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
283+ ).tz_localize ('UTC' )
284284 sunrise = pd .DatetimeIndex ([dt .datetime (1994 , 1 , 2 , 7 , 8 , 12 ), ]
285- ).tz_localize (
286- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
287- times = np .array (times )
288- sunrise = np .array (sunrise )
289- sunset = np .array (sunset )
285+ ).tz_localize ('UTC' )
286+ times = _datetime_to_unixtime (times )
287+ sunrise = _datetime_to_unixtime (sunrise )
288+ sunset = _datetime_to_unixtime (sunset )
290289 result = self .spa .transit_sunrise_sunset (times , 35.0 , 0.0 , 64.0 , 1 )
291290 assert_almost_equal (sunrise / 1e3 , result [1 ]/ 1e3 , 3 )
292291 assert_almost_equal (sunset / 1e3 , result [2 ]/ 1e3 , 3 )
@@ -297,23 +296,20 @@ def test_transit_sunrise_sunset(self):
297296 dt .datetime (2015 , 4 , 2 ),
298297 dt .datetime (2015 , 8 , 2 ),
299298 dt .datetime (2015 , 12 , 2 )],
300- ).tz_localize (
301- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
299+ ).tz_localize ('UTC' )
302300 sunrise = pd .DatetimeIndex ([dt .datetime (2015 , 1 , 2 , 7 , 19 ),
303301 dt .datetime (2015 , 4 , 2 , 5 , 43 ),
304302 dt .datetime (2015 , 8 , 2 , 5 , 1 ),
305303 dt .datetime (2015 , 12 , 2 , 7 , 1 )],
306- ).tz_localize (
307- 'MST' ).view (np .int64 )* 1.0 / 10 ** 9
304+ ).tz_localize ('MST' )
308305 sunset = pd .DatetimeIndex ([dt .datetime (2015 , 1 , 2 , 16 , 49 ),
309306 dt .datetime (2015 , 4 , 2 , 18 , 24 ),
310307 dt .datetime (2015 , 8 , 2 , 19 , 10 ),
311308 dt .datetime (2015 , 12 , 2 , 16 , 38 )],
312- ).tz_localize (
313- 'MST' ).view (np .int64 )* 1.0 / 10 ** 9
314- times = np .array (times )
315- sunrise = np .array (sunrise )
316- sunset = np .array (sunset )
309+ ).tz_localize ('MST' )
310+ times = _datetime_to_unixtime (times )
311+ sunrise = _datetime_to_unixtime (sunrise )
312+ sunset = _datetime_to_unixtime (sunset )
317313 result = self .spa .transit_sunrise_sunset (times , 39.0 , - 105.0 , 64.0 , 1 )
318314 assert_almost_equal (sunrise / 1e3 , result [1 ]/ 1e3 , 1 )
319315 assert_almost_equal (sunset / 1e3 , result [2 ]/ 1e3 , 1 )
@@ -323,33 +319,26 @@ def test_transit_sunrise_sunset(self):
323319 dt .datetime (2015 , 4 , 2 ),
324320 dt .datetime (2015 , 8 , 2 ),
325321 dt .datetime (2015 , 12 , 2 )],
326- ).tz_localize (
327- 'UTC' ).view (np .int64 )* 1.0 / 10 ** 9
322+ ).tz_localize ('UTC' )
328323 sunrise = pd .DatetimeIndex ([dt .datetime (2015 , 1 , 2 , 7 , 36 ),
329324 dt .datetime (2015 , 4 , 2 , 5 , 58 ),
330325 dt .datetime (2015 , 8 , 2 , 5 , 13 ),
331326 dt .datetime (2015 , 12 , 2 , 7 , 17 )],
332- ).tz_localize ('Asia/Shanghai' ).view (
333- np .int64 )* 1.0 / 10 ** 9
327+ ).tz_localize ('Asia/Shanghai' )
334328 sunset = pd .DatetimeIndex ([dt .datetime (2015 , 1 , 2 , 17 , 0 ),
335329 dt .datetime (2015 , 4 , 2 , 18 , 39 ),
336330 dt .datetime (2015 , 8 , 2 , 19 , 28 ),
337331 dt .datetime (2015 , 12 , 2 , 16 , 50 )],
338- ).tz_localize ('Asia/Shanghai' ).view (
339- np .int64 )* 1.0 / 10 ** 9
340- times = np .array (times )
341- sunrise = np .array (sunrise )
342- sunset = np .array (sunset )
332+ ).tz_localize ('Asia/Shanghai' )
333+ times = _datetime_to_unixtime (times )
334+ sunrise = _datetime_to_unixtime (sunrise )
335+ sunset = _datetime_to_unixtime (sunset )
343336 result = self .spa .transit_sunrise_sunset (
344337 times , 39.917 , 116.383 , 64.0 , 1 )
345338 assert_almost_equal (sunrise / 1e3 , result [1 ]/ 1e3 , 1 )
346339 assert_almost_equal (sunset / 1e3 , result [2 ]/ 1e3 , 1 )
347340
348341 def test_earthsun_distance (self ):
349- times = (pd .date_range ('2003-10-17 12:30:30' , periods = 1 , freq = 'D' )
350- .tz_localize ('MST' ))
351- unixtimes = times .tz_convert ('UTC' ).view (np .int64 )* 1.0 / 10 ** 9
352- unixtimes = np .array (unixtimes )
353342 result = self .spa .earthsun_distance (unixtimes , 64.0 , 1 )
354343 assert_almost_equal (R , result , 6 )
355344
0 commit comments