Skip to content

Commit a77c2c9

Browse files
authored
Merge pull request #133 from pysat/maint/123
MAINT: backward compatibility for pysat
2 parents 07f7640 + 6dac063 commit a77c2c9

File tree

5 files changed

+17
-157
lines changed

5 files changed

+17
-157
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).
1313
* Added manual test for pysatModels RC pip install
1414
* Updated tests to new pysat and pytest standards
1515
* Added a cap for pysatNASA
16+
* Removed backwards-support for pysat pre-3.0.4 functions
1617
* Documentation
1718
* Added badges and instructions for PyPi and Zenodo
1819

pysatModels/models/sami2py_sami2.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import datetime as dt
2525
import functools
26-
from packaging import version as pack_version
2726
import warnings
2827
import xarray as xr
2928

@@ -146,26 +145,14 @@ def load(fnames, tag='', inst_id='', **kwargs):
146145
file_info['day']):
147146
epochs.append(dt.datetime(year, month, day))
148147

149-
vstr = '3.0.2' # TODO(#112) Remove support for backwards compatibility
150148
loaded_data = []
151149
loaded_meta = []
152150
for epoch, fname in zip(epochs, fnames):
153151
# Load data
154-
# TODO(#112) Remove backwards compatibility
155-
if pack_version.Version(pysat.__version__) < pack_version.Version(vstr):
156-
data, meta = pysat.utils.load_netcdf4([fname], pandas_format=False,
157-
epoch_name='ut')
158-
data = data.rename({"ut": "time"})
159-
160-
# Create datetimes from 'ut' variable
161-
data['time'] = [epoch
162-
+ dt.timedelta(seconds=int(val * 3600.0))
163-
for val in data['time'].values]
164-
else:
165-
data, meta = pysat.utils.load_netcdf4([fname], pandas_format=False,
166-
epoch_name='ut',
167-
epoch_origin=epoch,
168-
epoch_unit='h')
152+
data, meta = pysat.utils.io.load_netcdf([fname], pandas_format=False,
153+
epoch_name='ut',
154+
epoch_origin=epoch,
155+
epoch_unit='h')
169156

170157
# Store data/meta for each loop
171158
loaded_data.append(data)

pysatModels/models/ucar_tiegcm.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,9 @@ def load(fnames, tag='', inst_id='', **kwargs):
185185
186186
"""
187187

188-
# TODO(#114): eventually remove support for multiple pysat versions
189-
if hasattr(pysat.utils, 'io'):
190-
data, meta = pysat.utils.io.load_netcdf(fnames, pandas_format=False,
191-
epoch_name='time',
192-
decode_times=True)
193-
else:
194-
data, meta = pysat.utils.load_netcdf4(fnames, pandas_format=False)
188+
data, meta = pysat.utils.io.load_netcdf(fnames, pandas_format=False,
189+
epoch_name='time',
190+
decode_times=True)
195191

196192
# Move misc parameters from xarray to the Instrument object via Meta.
197193
# Doing this after `meta` created ensures all metadata is still kept

pysatModels/tests/test_models.py

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
import datetime as dt
1010
import os
11-
from packaging import version as pack_version
12-
import pytest
1311
import shutil
1412
import sys
1513
import tempfile
@@ -36,81 +34,6 @@ class TestModels(clslib.InstLibTests):
3634
"""
3735

3836

39-
class TestSAMIPysatVersion(object):
40-
"""Test SAMI load code for pysat version differences across v3.0.2."""
41-
42-
def setup_class(self):
43-
"""Initialize the testing setup once before all tests are run."""
44-
# Make sure to use a temporary directory so that the user setup is not
45-
# altered
46-
47-
# TODO(#100): remove if-statement when it is always triggered
48-
tkwargs = {}
49-
if sys.version_info.major >= 3 and sys.version_info.minor >= 10:
50-
tkwargs = {"ignore_cleanup_errors": True}
51-
self.tempdir = tempfile.TemporaryDirectory(**tkwargs)
52-
self.saved_path = pysat.params['data_dirs']
53-
self.saved_ver = pysat.__version__
54-
pysat.params.data['data_dirs'] = [self.tempdir.name]
55-
56-
# Assign the location of the model Instrument sub-modules
57-
self.inst_loc = pysatModels.models
58-
return
59-
60-
def teardown_class(self):
61-
"""Clean up downloaded files and parameters from tests."""
62-
63-
pysat.params.data['data_dirs'] = self.saved_path
64-
pysat.__version__ = self.saved_ver
65-
66-
# Remove the temporary directory
67-
# TODO(#100): Remove try/except when Python 3.10 is the lowest version
68-
try:
69-
self.tempdir.cleanup()
70-
except Exception:
71-
pass
72-
73-
del self.inst_loc, self.saved_path, self.tempdir, self.saved_ver
74-
return
75-
76-
def test_load_failure(self):
77-
"""Test for SAMI load failure when faking a different pysat version."""
78-
79-
if (pack_version.Version(pysat.__version__)
80-
>= pack_version.Version('3.0.2')):
81-
# Define target error variable label
82-
label = 'ut'
83-
84-
# Replace reported version with one before 3.0.2
85-
vlabel = '3.0.1'
86-
87-
# Expected error
88-
error = ValueError
89-
else:
90-
# Define target error variable label
91-
label = 'epoch_origin'
92-
93-
# Expected error
94-
error = TypeError
95-
96-
# Replace reported version with one including 3.0.2
97-
vlabel = '3.0.2'
98-
99-
# Update reported pysat version
100-
pysat.__version__ = vlabel
101-
102-
with pytest.raises(error) as verr:
103-
inst = pysat.Instrument(inst_module=self.inst_loc.sami2py_sami2,
104-
tag='test')
105-
inst.download(self.inst_loc.sami2py_sami2._test_dates['']['test'],
106-
self.inst_loc.sami2py_sami2._test_dates['']['test'])
107-
inst.load(date=self.inst_loc.sami2py_sami2._test_dates['']['test'])
108-
109-
assert str(verr).find(label) >= 0
110-
111-
return
112-
113-
11437
class TestSAMILoadMultipleDays(object):
11538
"""Test SAMI load code for multiple days."""
11639

pysatModels/tests/test_utils_extract.py

Lines changed: 9 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import logging
99
import numpy as np
10-
from packaging import version as pack_version
1110
import platform
1211
import pytest
1312

@@ -28,9 +27,7 @@ def setup_method(self):
2827

2928
# Load the data in the instruments
3029
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
31-
if(pack_version.Version(pysat.__version__)
32-
> pack_version.Version('3.0.1')):
33-
load_kwargs['use_header'] = True
30+
load_kwargs['use_header'] = True
3431

3532
self.inst.load(**load_kwargs)
3633
self.model.load(**load_kwargs)
@@ -198,10 +195,6 @@ def test_success_for_some_already_ran_data(self, caplog):
198195
return
199196

200197

201-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
202-
<= pack_version.Version('3.0.1'),
203-
reason=''.join(('Requires test model in pysat ',
204-
' v3.0.2 or later.')))
205198
class TestUtilsExtractModObs(TestUtilsExtractInstThroughMod):
206199
"""Unit tests for `utils.extract.extract_modelled_observations`."""
207200

@@ -213,9 +206,7 @@ def setup_method(self):
213206

214207
# Load the data in the instruments
215208
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
216-
if(pack_version.Version(pysat.__version__)
217-
> pack_version.Version('3.0.1')):
218-
load_kwargs['use_header'] = True
209+
load_kwargs['use_header'] = True
219210

220211
self.inst.load(**load_kwargs)
221212
self.model.load(**load_kwargs)
@@ -344,10 +335,6 @@ def test_success_for_some_already_ran_data(self, caplog):
344335
return
345336

346337

347-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
348-
<= pack_version.Version('3.0.1'),
349-
reason=''.join(('Requires test model in pysat ',
350-
' v3.0.2 or later.')))
351338
class TestUtilsExtractModObsXarray(TestUtilsExtractModObs):
352339
"""Xarray unit tests for `utils.extract.extract_modelled_observations`."""
353340

@@ -359,9 +346,7 @@ def setup_method(self):
359346

360347
# Load the data in the instruments
361348
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
362-
if(pack_version.Version(pysat.__version__)
363-
> pack_version.Version('3.0.1')):
364-
load_kwargs['use_header'] = True
349+
load_kwargs['use_header'] = True
365350

366351
self.inst.load(**load_kwargs)
367352
self.model.load(**load_kwargs)
@@ -386,10 +371,6 @@ def teardown_method(self):
386371
return
387372

388373

389-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
390-
<= pack_version.Version('3.0.1'),
391-
reason=''.join(('Requires test model in pysat ',
392-
' v3.0.2 or later.')))
393374
class TestUtilsExtractModObsXarray2D(TestUtilsExtractModObs):
394375
"""Xarray unit tests for `utils.extract.extract_modelled_observations`."""
395376

@@ -401,9 +382,7 @@ def setup_method(self):
401382

402383
# Load the data in the instruments
403384
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
404-
if(pack_version.Version(pysat.__version__)
405-
> pack_version.Version('3.0.1')):
406-
load_kwargs['use_header'] = True
385+
load_kwargs['use_header'] = True
407386

408387
self.inst.load(**load_kwargs)
409388
self.model.load(**load_kwargs)
@@ -439,9 +418,7 @@ def setup_method(self):
439418

440419
# Load the data in the instruments
441420
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
442-
if(pack_version.Version(pysat.__version__)
443-
> pack_version.Version('3.0.1')):
444-
load_kwargs['use_header'] = True
421+
load_kwargs['use_header'] = True
445422

446423
self.inst.load(**load_kwargs)
447424
self.model.load(**load_kwargs)
@@ -475,10 +452,6 @@ def teardown_method(self):
475452
# TODO(#118): fix `instrument_altitude_to_model_pressure` for Windows env
476453
@pytest.mark.skipif(platform.system() == "Windows",
477454
reason="Broken on windows, see #118")
478-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
479-
<= pack_version.Version('3.0.1'),
480-
reason=''.join(('Requires test model in pysat ',
481-
' v3.0.2 or later.')))
482455
class TestUtilsAltitudePressure(object):
483456
"""Unit tests for `utils.extract.instrument_altitude_to_model_pressure`."""
484457

@@ -491,9 +464,7 @@ def setup_method(self):
491464

492465
# Load the data in the instruments
493466
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
494-
if(pack_version.Version(pysat.__version__)
495-
> pack_version.Version('3.0.1')):
496-
load_kwargs['use_header'] = True
467+
load_kwargs['use_header'] = True
497468

498469
self.inst.load(**load_kwargs)
499470
self.model.load(**load_kwargs)
@@ -611,10 +582,6 @@ def test_alternate_output_names(self):
611582
# TODO(#118): fix `instrument_altitude_to_model_pressure` for Windows env
612583
@pytest.mark.skipif(platform.system() == "Windows",
613584
reason="Broken on windows, see #118")
614-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
615-
<= pack_version.Version('3.0.1'),
616-
reason=''.join(('Requires test model in pysat ',
617-
' v3.0.2 or later.')))
618585
class TestUtilsAltitudePressureXarray(TestUtilsAltitudePressure):
619586
"""Xarray unit tests for `instrument_altitude_to_model_pressure`."""
620587

@@ -627,9 +594,7 @@ def setup_method(self):
627594

628595
# Load the data in the instruments
629596
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
630-
if(pack_version.Version(pysat.__version__)
631-
> pack_version.Version('3.0.1')):
632-
load_kwargs['use_header'] = True
597+
load_kwargs['use_header'] = True
633598

634599
self.inst.load(**load_kwargs)
635600
self.model.load(**load_kwargs)
@@ -653,10 +618,6 @@ def teardown_method(self):
653618
return
654619

655620

656-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
657-
<= pack_version.Version('3.0.1'),
658-
reason=''.join(('Requires `max_latitude` test Instrument ',
659-
'support in pysat v3.0.2 or later.')))
660621
class TestUtilsExtractInstModIrregView(object):
661622
"""Unit tests for `utils.extract.instrument_view_irregular_model`."""
662623

@@ -671,9 +632,7 @@ def setup_method(self):
671632

672633
# Load the data in the instruments
673634
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
674-
if(pack_version.Version(pysat.__version__)
675-
> pack_version.Version('3.0.1')):
676-
load_kwargs['use_header'] = True
635+
load_kwargs['use_header'] = True
677636

678637
self.inst.load(**load_kwargs)
679638
self.model.load(**load_kwargs)
@@ -766,10 +725,6 @@ def test_bad_kwarg_input(self, bad_key, bad_val, err_msg):
766725
return
767726

768727

769-
@pytest.mark.skipif(pack_version.Version(pysat.__version__)
770-
<= pack_version.Version('3.0.1'),
771-
reason=''.join(('Requires `max_latitude` test Instrument ',
772-
'support in pysat v3.0.2 or later.')))
773728
class TestUtilsExtractInstModIrregViewXarray(TestUtilsExtractInstModIrregView):
774729
"""Xarray unit tests for `instrument_view_irregular_model`."""
775730

@@ -784,9 +739,7 @@ def setup_method(self):
784739

785740
# Load the data in the instruments
786741
load_kwargs = {'date': pysat_testmodel._test_dates['']['']}
787-
if(pack_version.Version(pysat.__version__)
788-
> pack_version.Version('3.0.1')):
789-
load_kwargs['use_header'] = True
742+
load_kwargs['use_header'] = True
790743

791744
self.inst.load(**load_kwargs)
792745
self.model.load(**load_kwargs)

0 commit comments

Comments
 (0)