[Git][debian-gis-team/pyresample][upstream] New upstream version 1.28.2

Antonio Valentino (@antonio.valentino) gitlab at salsa.debian.org
Sat Mar 2 19:11:43 GMT 2024



Antonio Valentino pushed to branch upstream at Debian GIS Project / pyresample


Commits:
0e365730 by Antonio Valentino at 2024-03-02T11:41:55+00:00
New upstream version 1.28.2
- - - - -


6 changed files:

- CHANGELOG.md
- pyresample/future/geometry/swath.py
- pyresample/test/conftest.py
- pyresample/test/test_geometry/test_swath.py
- pyresample/version.py
- setup.py


Changes:

=====================================
CHANGELOG.md
=====================================
@@ -1,3 +1,24 @@
+## Version 1.28.2 (2024/02/29)
+
+### Issues Closed
+
+* [Issue 539](https://github.com/pytroll/pyresample/issues/539) - Compatibility with libproj v9.3
+
+In this release 1 issue was closed.
+
+### Pull Requests Merged
+
+#### Bugs fixed
+
+* [PR 586](https://github.com/pytroll/pyresample/pull/586) - Include package data
+
+#### Features added
+
+* [PR 578](https://github.com/pytroll/pyresample/pull/578) - Add attrs to future swath definition
+
+In this release 2 pull requests were closed.
+
+
 ## Version 1.28.1 (2024/02/15)
 
 ### Pull Requests Merged


=====================================
pyresample/future/geometry/swath.py
=====================================
@@ -19,4 +19,64 @@
 
 from __future__ import annotations
 
-from pyresample.geometry import CoordinateDefinition, SwathDefinition  # noqa
+import numpy as np
+
+from pyresample.geometry import _get_highest_level_class  # noqa
+from pyresample.geometry import CoordinateDefinition, DimensionError  # noqa
+from pyresample.geometry import SwathDefinition as LegacySwathDefinition
+
+
+class SwathDefinition(LegacySwathDefinition):
+    """Swath defined by lons and lats.
+
+    Parameters
+    ----------
+    lons : numpy array
+    lats : numpy array
+    crs: pyproj.CRS,
+       The CRS to use. longlat on WGS84 by default.
+    attrs: dict,
+       A dictionary made to store metadata.
+
+    Attributes
+    ----------
+    shape : tuple
+        Swath shape
+    size : int
+        Number of elements in swath
+    ndims : int
+        Swath dimensions
+    lons : object
+        Swath lons
+    lats : object
+        Swath lats
+    cartesian_coords : object
+        Swath cartesian coordinates
+    """
+
+    def __init__(self, lons, lats, crs=None, attrs=None):
+        super().__init__(lons, lats, crs=crs)
+        self.attrs = attrs or {}
+
+    def __getitem__(self, key):
+        """Slice a 2D geographic definition."""
+        y_slice, x_slice = key
+        return self.__class__(
+            lons=self.lons[y_slice, x_slice],
+            lats=self.lats[y_slice, x_slice],
+            attrs=self.attrs
+        )
+
+    def concatenate(self, other):
+        """Concatenate coordinate definitions."""
+        if self.ndim != other.ndim:
+            raise DimensionError(('Unable to concatenate %sD and %sD '
+                                  'geometries') % (self.ndim, other.ndim))
+        if self.crs != other.crs:
+            raise ValueError("Incompatible CRSs.")
+        klass = _get_highest_level_class(self, other)
+        lons = np.concatenate((self.lons, other.lons))
+        lats = np.concatenate((self.lats, other.lats))
+        attrs = self.attrs.copy()
+        attrs.update(other.attrs)
+        return klass(lons, lats, attrs=attrs)


=====================================
pyresample/test/conftest.py
=====================================
@@ -76,6 +76,8 @@ def create_test_swath(swath_class):
 
     """
     def _create_test_swath(lons, lats, **kwargs):
+        if swath_class is SwathDefinition:
+            kwargs.pop("nproc", None)
         return swath_class(lons, lats, **kwargs)
     return _create_test_swath
 


=====================================
pyresample/test/test_geometry/test_swath.py
=====================================
@@ -462,3 +462,43 @@ def assert_np_dict_allclose(dict1, dict2):
             np.testing.assert_allclose(val, dict2[key])
         except TypeError:
             assert val == dict2[key]
+
+
+def test_future_swath_has_attrs():
+    """Test that future SwathDefinition has attrs."""
+    from pyresample.future.geometry import SwathDefinition
+    lons, lats = _gen_swath_lons_lats()
+    attrs = dict(meta="data")
+    swath = SwathDefinition(lons, lats, attrs=attrs)
+    assert swath.attrs == attrs
+
+
+def test_future_swath_slice_has_attrs():
+    """Test that future sliced SwathDefinition has attrs."""
+    from pyresample.future.geometry import SwathDefinition
+    lons, lats = _gen_swath_lons_lats()
+    attrs = dict(meta="data")
+    swath = SwathDefinition(lons, lats, attrs=attrs)[0:1, 0:1]
+    assert swath.attrs == attrs
+
+
+def test_future_swath_concat_has_attrs():
+    """Test that future concatenated SwathDefinition has attrs."""
+    from pyresample.future.geometry import SwathDefinition
+    lons, lats = _gen_swath_lons_lats()
+    attrs1 = dict(meta1="data")
+    swath1 = SwathDefinition(lons, lats, attrs=attrs1)
+    attrs2 = dict(meta2="data")
+    swath2 = SwathDefinition(lons, lats, attrs=attrs2)
+    swath = swath1.concatenate(swath2)
+    assert swath.attrs == dict(meta1="data", meta2="data")
+
+
+def test_future_swath_concat_fails_on_different_crs():
+    """Test that future concatenated SwathDefinition must have the same crs."""
+    from pyresample.future.geometry import SwathDefinition
+    lons, lats = _gen_swath_lons_lats()
+    swath1 = SwathDefinition(lons, lats, crs="mycrs")
+    swath2 = SwathDefinition(lons, lats, crs="myothercrs")
+    with pytest.raises(ValueError, match="Incompatible CRSs."):
+        _ = swath1.concatenate(swath2)


=====================================
pyresample/version.py
=====================================
@@ -26,9 +26,9 @@ def get_keywords() -> Dict[str, str]:
     # setup.py/versioneer.py will grep for the variable names, so they must
     # each be defined on a line of their own. _version.py will just call
     # get_keywords().
-    git_refnames = " (tag: v1.28.1)"
-    git_full = "81810234f2e8a64677edc1c15dd85b5d6b795e8f"
-    git_date = "2024-02-15 20:25:09 -0600"
+    git_refnames = " (tag: v1.28.2)"
+    git_full = "a45a4f7a998c621c13284202d0fdd5c3658f78a7"
+    git_date = "2024-02-29 09:22:00 +0100"
     keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
     return keywords
 


=====================================
setup.py
=====================================
@@ -101,6 +101,7 @@ if __name__ == "__main__":
           package_dir={'pyresample': 'pyresample'},
           packages=find_packages(),
           package_data={'pyresample.test': ['test_files/*']},
+          include_package_data=True,
           python_requires='>=3.9',
           install_requires=requirements,
           extras_require=extras_require,



View it on GitLab: https://salsa.debian.org/debian-gis-team/pyresample/-/commit/0e3657307b800bb54d2f6529f53ea9b065c950ba

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/pyresample/-/commit/0e3657307b800bb54d2f6529f53ea9b065c950ba
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20240302/14f8b1c2/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list