Skip to content

Commit

Permalink
Merge pull request #1352 from ninahakansson/cfwriter_support_pyproj_1p9
Browse files Browse the repository at this point in the history
Reintroduce support for pyproj 1.9.6 in cf_writer
  • Loading branch information
mraspaud committed Sep 9, 2020
2 parents 7f11a0e + c415a94 commit 5085b84
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 28 deletions.
46 changes: 22 additions & 24 deletions satpy/tests/writer_tests/test_cf.py
Expand Up @@ -923,12 +923,10 @@ def test_area2lonlat(self):
self.assertEqual(set(res.coords), {'longitude', 'latitude'})
lat = res['latitude']
lon = res['longitude']
self.assertTrue(np.all(lat.data == lats_ref))
self.assertTrue(np.all(lon.data == lons_ref))
self.assertDictContainsSubset({'name': 'latitude', 'standard_name': 'latitude', 'units': 'degrees_north'},
lat.attrs)
self.assertDictContainsSubset({'name': 'longitude', 'standard_name': 'longitude', 'units': 'degrees_east'},
lon.attrs)
np.testing.assert_array_equal(lat.data, lats_ref)
np.testing.assert_array_equal(lon.data, lons_ref)
assert {'name': 'latitude', 'standard_name': 'latitude', 'units': 'degrees_north'}.items() <= lat.attrs.items()
assert {'name': 'longitude', 'standard_name': 'longitude', 'units': 'degrees_east'}.items() <= lon.attrs.items()

area = pyresample.geometry.AreaDefinition(
'seviri',
Expand All @@ -948,21 +946,21 @@ def test_area2lonlat(self):
self.assertEqual(set(res.coords), {'longitude', 'latitude'})
lat = res['latitude']
lon = res['longitude']
self.assertTrue(np.all(lat.data == lats_ref))
self.assertTrue(np.all(lon.data == lons_ref))
self.assertDictContainsSubset({'name': 'latitude', 'standard_name': 'latitude', 'units': 'degrees_north'},
lat.attrs)
self.assertDictContainsSubset({'name': 'longitude', 'standard_name': 'longitude', 'units': 'degrees_east'},
lon.attrs)


def suite():
"""Test suite for this writer's tests."""
loader = unittest.TestLoader()
mysuite = unittest.TestSuite()
mysuite.addTest(loader.loadTestsFromTestCase(TestCFWriter))
return mysuite


if __name__ == "__main__":
unittest.main()
np.testing.assert_array_equal(lat.data, lats_ref)
np.testing.assert_array_equal(lon.data, lons_ref)
assert {'name': 'latitude', 'standard_name': 'latitude', 'units': 'degrees_north'}.items() <= lat.attrs.items()
assert {'name': 'longitude', 'standard_name': 'longitude', 'units': 'degrees_east'}.items() <= lon.attrs.items()

def test_load_module_with_old_pyproj(self):
"""Test that cf_writer can still be loaded with pyproj 1.9.6."""
import pyproj # noqa 401
import sys
import importlib
old_version = sys.modules['pyproj'].__version__
sys.modules['pyproj'].__version__ = "1.9.6"
try:
importlib.reload(sys.modules['satpy.writers.cf_writer'])
finally:
# Tear down
sys.modules['pyproj'].__version__ = old_version
importlib.reload(sys.modules['satpy.writers.cf_writer'])
8 changes: 4 additions & 4 deletions satpy/writers/cf_writer.py
Expand Up @@ -114,10 +114,6 @@
from satpy.writers.utils import flatten_dict

from distutils.version import LooseVersion
import pyproj
if LooseVersion(pyproj.__version__) < LooseVersion('2.4.1'):
# technically 2.2, but important bug fixes in 2.4.1
raise ImportError("'cf' writer requires pyproj 2.4.1 or greater")


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -147,6 +143,10 @@

def create_grid_mapping(area):
"""Create the grid mapping instance for `area`."""
import pyproj
if LooseVersion(pyproj.__version__) < LooseVersion('2.4.1'):
# technically 2.2, but important bug fixes in 2.4.1
raise ImportError("'cf' writer requires pyproj 2.4.1 or greater")
# let pyproj do the heavily lifting
# pyproj 2.0+ required
grid_mapping = area.crs.to_cf()
Expand Down

0 comments on commit 5085b84

Please sign in to comment.