9
9
10
10
from xarray import Variable , coding
11
11
from . import TestCase , requires_netCDF4
12
+ import pytest
12
13
13
14
14
15
@np .vectorize
@@ -99,7 +100,7 @@ def test_decode_cf_datetime_overflow(self):
99
100
100
101
for i , day in enumerate (days ):
101
102
result = coding .times .decode_cf_datetime (day , units )
102
- self . assertEqual ( result , expected [i ])
103
+ assert result == expected [i ]
103
104
104
105
def test_decode_cf_datetime_non_standard_units (self ):
105
106
expected = pd .date_range (periods = 100 , start = '1970-01-01' , freq = 'h' )
@@ -137,12 +138,12 @@ def test_decode_non_standard_calendar(self):
137
138
warnings .filterwarnings ('ignore' , 'Unable to decode time axis' )
138
139
actual = coding .times .decode_cf_datetime (noleap_time , units ,
139
140
calendar = calendar )
140
- self . assertEqual ( actual .dtype , np .dtype ('M8[ns]' ) )
141
+ assert actual .dtype == np .dtype ('M8[ns]' )
141
142
abs_diff = abs (actual - expected )
142
143
# once we no longer support versions of netCDF4 older than 1.1.5,
143
144
# we could do this check with near microsecond accuracy:
144
145
# https://github.com/Unidata/netcdf4-python/issues/355
145
- self . assertTrue (( abs_diff <= np .timedelta64 (1 , 's' )).all () )
146
+ assert ( abs_diff <= np .timedelta64 (1 , 's' )).all ()
146
147
147
148
@requires_netCDF4
148
149
def test_decode_non_standard_calendar_single_element (self ):
@@ -155,7 +156,7 @@ def test_decode_non_standard_calendar_single_element(self):
155
156
'Unable to decode time axis' )
156
157
actual = coding .times .decode_cf_datetime (num_time , units ,
157
158
calendar = calendar )
158
- self . assertEqual ( actual .dtype , np .dtype ('M8[ns]' ) )
159
+ assert actual .dtype == np .dtype ('M8[ns]' )
159
160
160
161
@requires_netCDF4
161
162
def test_decode_non_standard_calendar_single_element_fallback (self ):
@@ -165,13 +166,13 @@ def test_decode_non_standard_calendar_single_element_fallback(self):
165
166
dt = nc4 .netcdftime .datetime (2001 , 2 , 29 )
166
167
for calendar in ['360_day' , 'all_leap' , '366_day' ]:
167
168
num_time = nc4 .date2num (dt , units , calendar )
168
- with self . assertWarns ('Unable to decode time axis' ):
169
+ with pytest . warns ('Unable to decode time axis' ):
169
170
actual = coding .times .decode_cf_datetime (num_time , units ,
170
171
calendar = calendar )
171
172
expected = np .asarray (nc4 .num2date (num_time , units , calendar ))
172
173
print (num_time , calendar , actual , expected )
173
- self . assertEqual ( actual .dtype , np .dtype ('O' ) )
174
- self . assertEqual ( expected , actual )
174
+ assert actual .dtype == np .dtype ('O' )
175
+ assert expected == actual
175
176
176
177
@requires_netCDF4
177
178
def test_decode_non_standard_calendar_multidim_time (self ):
@@ -195,7 +196,7 @@ def test_decode_non_standard_calendar_multidim_time(self):
195
196
warnings .filterwarnings ('ignore' , 'Unable to decode time axis' )
196
197
actual = coding .times .decode_cf_datetime (mdim_time , units ,
197
198
calendar = calendar )
198
- self . assertEqual ( actual .dtype , np .dtype ('M8[ns]' ) )
199
+ assert actual .dtype == np .dtype ('M8[ns]' )
199
200
self .assertArrayEqual (actual [:, 0 ], expected1 )
200
201
self .assertArrayEqual (actual [:, 1 ], expected2 )
201
202
@@ -214,11 +215,11 @@ def test_decode_non_standard_calendar_fallback(self):
214
215
warnings .simplefilter ('always' )
215
216
actual = coding .times .decode_cf_datetime (num_times , units ,
216
217
calendar = calendar )
217
- self . assertEqual ( len (w ), 1 )
218
- self . assertIn ( 'Unable to decode time axis' ,
219
- str (w [0 ].message ))
218
+ assert len (w ) == 1
219
+ assert 'Unable to decode time axis' in \
220
+ str (w [0 ].message )
220
221
221
- self . assertEqual ( actual .dtype , np .dtype ('O' ) )
222
+ assert actual .dtype == np .dtype ('O' )
222
223
self .assertArrayEqual (actual , expected )
223
224
224
225
@requires_netCDF4
@@ -266,8 +267,7 @@ def test_infer_datetime_units(self):
266
267
(pd .to_datetime (['NaT' ]),
267
268
'days since 1970-01-01 00:00:00' ),
268
269
]:
269
- self .assertEqual (
270
- expected , coding .times .infer_datetime_units (dates ))
270
+ assert expected == coding .times .infer_datetime_units (dates )
271
271
272
272
def test_cf_timedelta (self ):
273
273
examples = [
@@ -289,13 +289,13 @@ def test_cf_timedelta(self):
289
289
expected = numbers
290
290
actual , _ = coding .times .encode_cf_timedelta (timedeltas , units )
291
291
self .assertArrayEqual (expected , actual )
292
- self . assertEqual ( expected .dtype , actual .dtype )
292
+ assert expected .dtype == actual .dtype
293
293
294
294
if units is not None :
295
295
expected = timedeltas
296
296
actual = coding .times .decode_cf_timedelta (numbers , units )
297
297
self .assertArrayEqual (expected , actual )
298
- self . assertEqual ( expected .dtype , actual .dtype )
298
+ assert expected .dtype == actual .dtype
299
299
300
300
expected = np .timedelta64 ('NaT' , 'ns' )
301
301
actual = coding .times .decode_cf_timedelta (np .array (np .nan ), 'days' )
@@ -311,13 +311,12 @@ def test_cf_timedelta_2d(self):
311
311
312
312
actual = coding .times .decode_cf_timedelta (numbers , units )
313
313
self .assertArrayEqual (expected , actual )
314
- self . assertEqual ( expected .dtype , actual .dtype )
314
+ assert expected .dtype == actual .dtype
315
315
316
316
def test_infer_timedelta_units (self ):
317
317
for deltas , expected in [
318
318
(pd .to_timedelta (['1 day' , '2 days' ]), 'days' ),
319
319
(pd .to_timedelta (['1h' , '1 day 1 hour' ]), 'hours' ),
320
320
(pd .to_timedelta (['1m' , '2m' , np .nan ]), 'minutes' ),
321
321
(pd .to_timedelta (['1m3s' , '1m4s' ]), 'seconds' )]:
322
- self .assertEqual (
323
- expected , coding .times .infer_timedelta_units (deltas ))
322
+ assert expected == coding .times .infer_timedelta_units (deltas )
0 commit comments