[Git][debian-gis-team/pystac][master] 6 commits: New upstream version 1.12.1

Antonio Valentino (@antonio.valentino) gitlab at salsa.debian.org
Wed Jan 29 07:31:48 GMT 2025



Antonio Valentino pushed to branch master at Debian GIS Project / pystac


Commits:
c3fef8a9 by Antonio Valentino at 2025-01-29T06:42:22+00:00
New upstream version 1.12.1
- - - - -
839cb328 by Antonio Valentino at 2025-01-29T06:42:47+00:00
Update upstream source from tag 'upstream/1.12.1'

Update to upstream version '1.12.1'
with Debian dir fbec053b761be5dac0b0f28b66f80caf38350e1f
- - - - -
1699c838 by Antonio Valentino at 2025-01-29T06:44:30+00:00
New upstream release

- - - - -
c578a955 by Antonio Valentino at 2025-01-29T07:06:54+00:00
Revert "Drop python-pystac-doc.lintian-overrides"

This reverts commit c908a64eb6910ad3ca9b80ac5b6669ed1bd4a145.

- - - - -
45fae316 by Antonio Valentino at 2025-01-29T07:17:59+00:00
Update d/python-pystac-doc.lintian-overrides

- - - - -
67a671e2 by Antonio Valentino at 2025-01-29T07:18:19+00:00
Set distribution to unstable

- - - - -


21 changed files:

- CHANGELOG.md
- debian/changelog
- + debian/python-pystac-doc.lintian-overrides
- pystac/catalog.py
- pystac/collection.py
- pystac/extensions/projection.py
- pystac/item.py
- pystac/stac_io.py
- pystac/stac_object.py
- pystac/version.py
- + tests/data-files/projection/another-1.1.json
- tests/extensions/test_classification.py
- tests/extensions/test_eo.py
- tests/extensions/test_grid.py
- tests/extensions/test_projection.py
- tests/extensions/test_raster.py
- tests/test_catalog.py
- tests/test_collection.py
- tests/test_item.py
- tests/utils/__init__.py
- uv.lock


Changes:

=====================================
CHANGELOG.md
=====================================
@@ -2,6 +2,16 @@
 
 ## [Unreleased]
 
+## [v1.12.1]
+
+### Changed
+
+- `migrate=True` is now the default in `from_dict` ([#1509](https://github.com/stac-utils/pystac/pull/1509))
+
+### Fixed
+
+- Fall back to `epsg` when `code` is not present in the Projection extension ([#1505](https://github.com/stac-utils/pystac/pull/1505), [#1510](https://github.com/stac-utils/pystac/pull/1510))
+
 ## [v1.12.0]
 
 ### Added
@@ -894,7 +904,8 @@ use `Band.create`
 
 Initial release.
 
-[Unreleased]: <https://github.com/stac-utils/pystac/compare/v1.12.0..main>
+[Unreleased]: <https://github.com/stac-utils/pystac/compare/v1.12.1..main>
+[v1.12.1]: <https://github.com/stac-utils/pystac/compare/v1.12.0..v1.12.1>
 [v1.12.0]: <https://github.com/stac-utils/pystac/compare/v1.11.0..v1.12.0>
 [v1.11.0]: <https://github.com/stac-utils/pystac/compare/v1.10.1..v1.11.0>
 [v1.10.1]: <https://github.com/stac-utils/pystac/compare/v1.10.0..v1.10.1>


=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+pystac (1.12.1-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Add d/python-pystac-doc.lintian-overrides.
+
+ -- Antonio Valentino <antonio.valentino at tiscali.it>  Wed, 29 Jan 2025 07:18:04 +0000
+
 pystac (1.12.0-1) unstable; urgency=medium
 
   * New upstream release.


=====================================
debian/python-pystac-doc.lintian-overrides
=====================================
@@ -0,0 +1,3 @@
+# Vendored fonts coming from the sphinx theme
+font-in-non-font-package [usr/share/doc/python-pystac-doc/html/_static/vendor/fontawesome/webfonts/*]
+font-outside-font-dir [usr/share/doc/python-pystac-doc/html/_static/vendor/fontawesome/webfonts/*]


=====================================
pystac/catalog.py
=====================================
@@ -1224,7 +1224,7 @@ class Catalog(STACObject):
         d: dict[str, Any],
         href: str | None = None,
         root: Catalog | None = None,
-        migrate: bool = False,
+        migrate: bool = True,
         preserve_dict: bool = True,
     ) -> C:
         if migrate:


=====================================
pystac/collection.py
=====================================
@@ -632,7 +632,7 @@ class Collection(Catalog, Assets):
         d: dict[str, Any],
         href: str | None = None,
         root: Catalog | None = None,
-        migrate: bool = False,
+        migrate: bool = True,
         preserve_dict: bool = True,
     ) -> C:
         from pystac.extensions.version import CollectionVersionExtension


=====================================
pystac/extensions/projection.py
=====================================
@@ -136,6 +136,10 @@ class ProjectionExtension(
         """
         if self.code is not None and self.code.startswith("EPSG:"):
             return int(self.code.replace("EPSG:", ""))
+        elif epsg := self._get_property(
+            EPSG_PROP, int
+        ):  # In case the dictionary was not migrated
+            return epsg
         return None
 
     @epsg.setter
@@ -214,6 +218,8 @@ class ProjectionExtension(
         """
         if self.code:
             return self.code
+        elif self.epsg:
+            return f"EPSG:{self.epsg}"
         elif self.wkt2:
             return self.wkt2
         elif self.projjson:


=====================================
pystac/item.py
=====================================
@@ -416,7 +416,7 @@ class Item(STACObject, Assets):
         d: dict[str, Any],
         href: str | None = None,
         root: Catalog | None = None,
-        migrate: bool = False,
+        migrate: bool = True,
         preserve_dict: bool = True,
     ) -> T:
         from pystac.extensions.version import ItemVersionExtension


=====================================
pystac/stac_io.py
=====================================
@@ -169,19 +169,19 @@ class StacIO(ABC):
 
         if info.object_type == pystac.STACObjectType.CATALOG:
             result = pystac.Catalog.from_dict(
-                d, href=href_str, root=root, migrate=False, preserve_dict=preserve_dict
+                d, href=href_str, root=root, migrate=True, preserve_dict=preserve_dict
             )
             result._stac_io = self
             return result
 
         if info.object_type == pystac.STACObjectType.COLLECTION:
             return pystac.Collection.from_dict(
-                d, href=href_str, root=root, migrate=False, preserve_dict=preserve_dict
+                d, href=href_str, root=root, migrate=True, preserve_dict=preserve_dict
             )
 
         if info.object_type == pystac.STACObjectType.ITEM:
             return pystac.Item.from_dict(
-                d, href=href_str, root=root, migrate=False, preserve_dict=preserve_dict
+                d, href=href_str, root=root, migrate=True, preserve_dict=preserve_dict
             )
 
         raise ValueError(f"Unknown STAC object type {info.object_type}")


=====================================
pystac/stac_object.py
=====================================
@@ -647,7 +647,7 @@ class STACObject(ABC):
         d: dict[str, Any],
         href: str | None = None,
         root: Catalog | None = None,
-        migrate: bool = False,
+        migrate: bool = True,
         preserve_dict: bool = True,
     ) -> S:
         """Parses this STACObject from the passed in dictionary.
@@ -659,8 +659,9 @@ class STACObject(ABC):
             root : Optional root catalog for this object.
                 If provided, the root of the returned STACObject will be set
                 to this parameter.
-            migrate: Use True if this dict represents JSON from an older STAC object,
-                so that migrations are run against it.
+            migrate: By default, STAC objects and extensions are migrated to
+                their latest supported version. Set this to False to disable
+                this behavior.
             preserve_dict: If False, the dict parameter ``d`` may be modified
                 during this method call. Otherwise the dict is not mutated.
                 Defaults to True, which results results in a deepcopy of the


=====================================
pystac/version.py
=====================================
@@ -1,6 +1,6 @@
 import os
 
-__version__ = "1.12.0"
+__version__ = "1.12.1"
 """Library version"""
 
 


=====================================
tests/data-files/projection/another-1.1.json
=====================================
@@ -0,0 +1,94 @@
+{
+  "stac_version": "0.9.0",
+  "stac_extensions": [
+    "https://stac-extensions.github.io/file/v2.1.0/schema.json",
+    "https://stac-extensions.github.io/projection/v1.1.0/schema.json"
+  ],
+  "type": "Feature",
+  "id": "JQT-123456789",
+  "bbox": [-81.3085227080129, 32.10817938759764, -78.81735409341113, 34.22870275071835],
+  "geometry": {
+    "type": "Polygon",
+    "coordinates": [
+        [
+            [
+                -81.3085227080129,
+                32.10817938759764
+            ],
+            [
+                -78.81735409341113,
+                32.10817938759764
+            ],
+            [
+                -78.81735409341113,
+                34.22870275071835
+            ],
+            [
+                -81.3085227080129,
+                34.22870275071835
+            ],
+            [
+                -81.3085227080129,
+                32.10817938759764
+            ]
+        ]
+    ]
+  },
+  "properties": {
+    "proj:epsg": 32617,
+    "proj:shape": [
+      259,
+      255
+    ],
+    "proj:transform": [
+      900.0,
+      0.0,
+      471585.0,
+      0.0,
+      -900.0,
+      3787515.0,
+      0.0,
+      0.0,
+      1.0
+    ],
+    "datetime": "2016-05-03T13:21:30.040Z",
+    "collection": "JQT"
+  },
+  "links": [
+    {
+      "rel": "self",
+      "href": "http://cool-sat.com/catalog/JQT/a-fake-item.json"
+    },
+    {
+      "rel": "collection",
+      "href": "http://cool-sat.com/catalog.json"
+    }
+  ],
+  "assets": {
+    "red": {
+      "href": "http://somewhere-over-the-rainbow.io/red.tif",
+      "title": "red",
+      "file:header_size": 16384
+    },
+    "green": {
+        "href": "http://somewhere-over-the-rainbow.io/green.tif",
+        "title": "green",
+        "file:header_size": 30000
+    },
+    "blue": {
+        "href": "http://somewhere-over-the-rainbow.io/blue.tif",
+        "title": "blue",
+        "file:header_size": 20000
+    },
+    "lowres": {
+        "href": "http://somewhere-over-the-rainbow.io/lowres.tif",
+        "title": "lowres"
+    },
+    "thumbnail": {
+      "href": "http://cool-sat.com/catalog/a-fake-item/thumbnail.png",
+      "title": "Thumbnail",
+      "type": "image/png",
+      "roles": [ "thumbnail" ]
+    }
+  }
+}


=====================================
tests/extensions/test_classification.py
=====================================
@@ -260,7 +260,7 @@ def test_to_from_dict(item_dict: dict[str, Any]) -> None:
                         a_dict[k] = a_dict[k].replace(microsecond=0)
 
     d1 = deepcopy(item_dict)
-    d2 = Item.from_dict(item_dict).to_dict()
+    d2 = Item.from_dict(item_dict, migrate=False).to_dict()
     _parse_times(d1)
     _parse_times(d2)
     assert d1 == d2, f"Mismatch between dictionaries: \n{d1}\n{d2}"
@@ -343,7 +343,7 @@ def test_older_extension_version(landsat_item: Item) -> None:
     stac_extensions.add(old)
     item_as_dict = landsat_item.to_dict(include_self_link=False, transform_hrefs=False)
     item_as_dict["stac_extensions"] = list(stac_extensions)
-    item = Item.from_dict(item_as_dict)
+    item = Item.from_dict(item_as_dict, migrate=False)
     assert ClassificationExtension.has_extension(item)
     assert old in item.stac_extensions
 


=====================================
tests/extensions/test_eo.py
=====================================
@@ -439,7 +439,7 @@ def test_older_extension_version(ext_item: Item) -> None:
     stac_extensions.add(old)
     item_as_dict = ext_item.to_dict(include_self_link=False, transform_hrefs=False)
     item_as_dict["stac_extensions"] = list(stac_extensions)
-    item = Item.from_dict(item_as_dict)
+    item = Item.from_dict(item_as_dict, migrate=False)
     assert EOExtension.has_extension(item)
     assert old in item.stac_extensions
 


=====================================
tests/extensions/test_grid.py
=====================================
@@ -160,7 +160,7 @@ def test_older_extension_version(ext_item: pystac.Item) -> None:
     stac_extensions.add(old)
     item_as_dict = ext_item.to_dict(include_self_link=False, transform_hrefs=False)
     item_as_dict["stac_extensions"] = list(stac_extensions)
-    item = pystac.Item.from_dict(item_as_dict)
+    item = pystac.Item.from_dict(item_as_dict, migrate=False)
     assert GridExtension.has_extension(item)
     assert old in item.stac_extensions
 


=====================================
tests/extensions/test_projection.py
=====================================
@@ -602,7 +602,7 @@ def test_older_extension_version(projection_landsat8_item: Item) -> None:
         include_self_link=False, transform_hrefs=False
     )
     item_as_dict["stac_extensions"] = list(stac_extensions)
-    item = Item.from_dict(item_as_dict)
+    item = Item.from_dict(item_as_dict, migrate=False)
     assert ProjectionExtension.has_extension(item)
     assert old in item.stac_extensions
 
@@ -647,3 +647,21 @@ def test_ext_syntax_remove(projection_landsat8_item: pystac.Item) -> None:
 def test_ext_syntax_add(item: pystac.Item) -> None:
     item.ext.add("proj")
     assert isinstance(item.ext.proj, ProjectionExtension)
+
+
+def test_v1_from_dict() -> None:
+    with open(
+        TestCases.get_path("data-files/projection/example-with-version-1.1.json")
+    ) as f:
+        data = json.load(f)
+    item = pystac.Item.from_dict(data, migrate=False)
+    assert item.ext.proj.epsg is not None
+    assert item.ext.proj.crs_string is not None
+
+
+def test_v1_crs_string() -> None:
+    with open(TestCases.get_path("data-files/projection/another-1.1.json")) as f:
+        data = json.load(f)
+    item = pystac.Item.from_dict(data, migrate=False)
+    assert item.ext.proj.epsg is not None
+    assert item.ext.proj.crs_string == "EPSG:32617"


=====================================
tests/extensions/test_raster.py
=====================================
@@ -305,7 +305,7 @@ def test_older_extension_version(ext_item: pystac.Item) -> None:
     stac_extensions.add(old)
     item_as_dict = ext_item.to_dict(include_self_link=False, transform_hrefs=False)
     item_as_dict["stac_extensions"] = list(stac_extensions)
-    item = pystac.Item.from_dict(item_as_dict)
+    item = pystac.Item.from_dict(item_as_dict, migrate=False)
     assert RasterExtension.has_extension(item)
     assert old in item.stac_extensions
 


=====================================
tests/test_catalog.py
=====================================
@@ -115,7 +115,7 @@ class TestCatalog:
 
         # assert that the parameter is not preserved with
         # non-default parameter
-        _ = Catalog.from_dict(param_dict, preserve_dict=False)
+        _ = Catalog.from_dict(param_dict, preserve_dict=False, migrate=False)
         assert param_dict != catalog_dict
 
     def test_from_file_bad_catalog(self) -> None:
@@ -1595,7 +1595,7 @@ def test_custom_catalog_from_dict(catalog: Catalog) -> None:
             d: dict[str, Any],
             href: str | None = None,
             root: Catalog | None = None,
-            migrate: bool = False,
+            migrate: bool = True,
             preserve_dict: bool = True,
         ) -> CustomCatalog:
             return super().from_dict(d)


=====================================
tests/test_collection.py
=====================================
@@ -306,7 +306,7 @@ class CollectionTest(unittest.TestCase):
 
         # assert that the parameter is not preserved with
         # non-default parameter
-        _ = Collection.from_dict(param_dict, preserve_dict=False)
+        _ = Collection.from_dict(param_dict, preserve_dict=False, migrate=False)
         self.assertNotEqual(param_dict, collection_dict)
 
     def test_from_dict_set_root(self) -> None:
@@ -594,7 +594,7 @@ def test_custom_collection_from_dict(collection: Collection) -> None:
             d: dict[str, Any],
             href: str | None = None,
             root: Catalog | None = None,
-            migrate: bool = False,
+            migrate: bool = True,
             preserve_dict: bool = True,
         ) -> CustomCollection:
             return super().from_dict(d)


=====================================
tests/test_item.py
=====================================
@@ -464,7 +464,7 @@ def test_custom_item_from_dict(item: Item) -> None:
             d: dict[str, Any],
             href: str | None = None,
             root: Catalog | None = None,
-            migrate: bool = False,
+            migrate: bool = True,
             preserve_dict: bool = True,
         ) -> CustomItem:
             return super().from_dict(d)
@@ -481,13 +481,13 @@ def test_item_from_dict_raises_useful_error() -> None:
 def test_item_from_dict_with_missing_stac_version_raises_useful_error() -> None:
     item_dict = {"type": "Feature", "id": "lalalalala"}
     with pytest.raises(pystac.STACTypeError, match="'stac_version' is missing"):
-        Item.from_dict(item_dict)
+        Item.from_dict(item_dict, migrate=False)
 
 
 def test_item_from_dict_with_missing_type_raises_useful_error() -> None:
     item_dict = {"stac_version": "0.8.0", "id": "lalalalala"}
     with pytest.raises(pystac.STACTypeError, match="'type' is missing"):
-        Item.from_dict(item_dict)
+        Item.from_dict(item_dict, migrate=False)
 
 
 @pytest.mark.parametrize("add_canonical", (True, False))
@@ -721,3 +721,12 @@ def test_copy_with_unresolveable_root(item: Item) -> None:
 def test_no_collection(item: Item) -> None:
     # https://github.com/stac-utils/stac-api-validator/issues/527
     assert item.collection is None
+
+
+def test_migrate_by_default() -> None:
+    with open(
+        TestCases.get_path("data-files/projection/example-with-version-1.1.json")
+    ) as f:
+        data = json.load(f)
+    item = pystac.Item.from_dict(data)  # default used to be migrate=False
+    assert item.ext.proj.code == "EPSG:32614"


=====================================
tests/utils/__init__.py
=====================================
@@ -42,7 +42,7 @@ def assert_to_from_dict(
                         a_dict[k] = a_dict[k].replace(microsecond=0)
 
     d1 = deepcopy(d)
-    d2 = stac_object_class.from_dict(d).to_dict()
+    d2 = stac_object_class.from_dict(d, migrate=False).to_dict()
     _parse_times(d1)
     _parse_times(d2)
     assert d1 == d2


=====================================
uv.lock
=====================================
@@ -46,10 +46,10 @@ name = "anyio"
 version = "4.6.0"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "exceptiongroup", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
     { name = "idna" },
     { name = "sniffio" },
-    { name = "typing-extensions", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/78/49/f3f17ec11c4a91fe79275c426658e509b07547f874b14c1a526d86a83fc8/anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb", size = 170983 }
 wheels = [
@@ -130,12 +130,12 @@ source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "asv-runner" },
     { name = "build" },
-    { name = "colorama", marker = "platform_system == 'Windows'" },
+    { name = "colorama", marker = "sys_platform == 'win32'" },
     { name = "json5" },
     { name = "pympler", marker = "platform_python_implementation != 'PyPy'" },
     { name = "pyyaml", marker = "platform_python_implementation != 'PyPy'" },
     { name = "tabulate" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
     { name = "virtualenv" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/75/0c/31fe4135b378ee17131a804b11380a1ec1406c3925cb24ecdff5b86e673c/asv-0.6.4.tar.gz", hash = "sha256:1d124184171cfe106e3e57ac04e3221b8d4571c9bd6ca2c6498a8c7407339df1", size = 389611 }
@@ -184,7 +184,7 @@ name = "async-lru"
 version = "2.0.4"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "typing-extensions", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/80/e2/2b4651eff771f6fd900d233e175ddc5e2be502c7eb62c0c42f975c6d36cd/async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627", size = 10019 }
 wheels = [
@@ -255,7 +255,7 @@ source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "jmespath" },
     { name = "python-dateutil" },
-    { name = "urllib3", marker = "python_full_version >= '3.10'" },
+    { name = "urllib3" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/f7/28/d83dbd69d7015892b53ada4fded79a5bc1b7d77259361eb8302f88c2da81/botocore-1.35.39.tar.gz", hash = "sha256:cb7f851933b5ccc2fba4f0a8b846252410aa0efac5bfbe93b82d10801f5f8e90", size = 12826384 }
 wheels = [
@@ -268,10 +268,10 @@ version = "1.2.2.post1"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "colorama", marker = "os_name == 'nt'" },
-    { name = "importlib-metadata", marker = "python_full_version < '3.10.2' and python_full_version >= '3.10'" },
+    { name = "importlib-metadata", marker = "python_full_version < '3.10.2'" },
     { name = "packaging" },
     { name = "pyproject-hooks" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701 }
 wheels = [
@@ -427,7 +427,7 @@ name = "click"
 version = "8.1.7"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "colorama", marker = "platform_system == 'Windows'" },
+    { name = "colorama", marker = "sys_platform == 'win32'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
 wheels = [
@@ -549,7 +549,7 @@ wheels = [
 
 [package.optional-dependencies]
 toml = [
-    { name = "tomli", marker = "python_full_version <= '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version <= '3.11'" },
 ]
 
 [[package]]
@@ -613,7 +613,7 @@ dependencies = [
     { name = "pygments" },
     { name = "restructuredtext-lint" },
     { name = "stevedore" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/11/28/b0a576233730b756ca1ebb422bc6199a761b826b86e93e5196dfa85331ea/doc8-1.1.2.tar.gz", hash = "sha256:1225f30144e1cc97e388dbaf7fe3e996d2897473a53a6dae268ddde21c354b98", size = 27030 }
 wheels = [
@@ -778,7 +778,7 @@ name = "ipykernel"
 version = "6.29.5"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "appnope", marker = "platform_system == 'Darwin'" },
+    { name = "appnope", marker = "sys_platform == 'darwin'" },
     { name = "comm" },
     { name = "debugpy" },
     { name = "ipython" },
@@ -804,7 +804,7 @@ source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "colorama", marker = "sys_platform == 'win32'" },
     { name = "decorator" },
-    { name = "exceptiongroup", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
     { name = "jedi" },
     { name = "matplotlib-inline" },
     { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
@@ -812,7 +812,7 @@ dependencies = [
     { name = "pygments" },
     { name = "stack-data" },
     { name = "traitlets" },
-    { name = "typing-extensions", marker = "python_full_version < '3.12' and python_full_version >= '3.10'" },
+    { name = "typing-extensions", marker = "python_full_version < '3.12'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/f7/21/48db7d9dd622b9692575004c7c98f85f5629428f58596c59606d36c51b58/ipython-8.28.0.tar.gz", hash = "sha256:0d0d15ca1e01faeb868ef56bc7ee5a0de5bd66885735682e8a322ae289a13d1a", size = 5495762 }
 wheels = [
@@ -1092,7 +1092,7 @@ dependencies = [
     { name = "notebook-shim" },
     { name = "packaging" },
     { name = "setuptools" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
     { name = "tornado" },
     { name = "traitlets" },
 ]
@@ -1221,7 +1221,7 @@ name = "multidict"
 version = "6.1.0"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "typing-extensions", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 }
 wheels = [
@@ -1294,7 +1294,7 @@ version = "1.11.2"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "mypy-extensions" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
     { name = "typing-extensions" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/5c/86/5d7cbc4974fd564550b80fbb8103c05501ea11aa7835edf3351d90095896/mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79", size = 3078806 }
@@ -1809,7 +1809,7 @@ name = "pympler"
 version = "1.1"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and platform_system == 'Windows'" },
+    { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/dd/37/c384631908029676d8e7213dd956bb686af303a80db7afbc9be36bc49495/pympler-1.1.tar.gz", hash = "sha256:1eaa867cb8992c218430f1708fdaccda53df064144d1c5656b1e6f1ee6000424", size = 179954 }
 wheels = [
@@ -1960,11 +1960,11 @@ version = "8.3.3"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "colorama", marker = "sys_platform == 'win32'" },
-    { name = "exceptiongroup", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
     { name = "iniconfig" },
     { name = "packaging" },
     { name = "pluggy" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 }
 wheels = [
@@ -2501,7 +2501,7 @@ dependencies = [
     { name = "sphinxcontrib-jsmath" },
     { name = "sphinxcontrib-qthelp" },
     { name = "sphinxcontrib-serializinghtml" },
-    { name = "tomli", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/ca/ff/60f166ff66cce657ef6275f013c9555a9a814a80e0a8e86707ac5fdbf247/sphinx-8.1.1.tar.gz", hash = "sha256:65e0ee8f76c9cbfd53ec8466ac8c87a73f9ed911767a8ef36c3bf3c522242bcd", size = 8184277 }
 wheels = [
@@ -2788,7 +2788,7 @@ source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "click" },
     { name = "h11" },
-    { name = "typing-extensions", marker = "python_full_version < '3.11' and python_full_version >= '3.10'" },
+    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/76/87/a886eda9ed495a3a4506d5a125cd07c54524280718c4969bde88f075fe98/uvicorn-0.31.1.tar.gz", hash = "sha256:f5167919867b161b7bcaf32646c6a94cdbd4c3aa2eb5c17d36bb9aa5cfd8c493", size = 77368 }
 wheels = [
@@ -2821,7 +2821,7 @@ resolution-markers = [
 ]
 dependencies = [
     { name = "pyyaml", marker = "platform_python_implementation != 'PyPy'" },
-    { name = "urllib3", marker = "platform_python_implementation != 'PyPy' and python_full_version >= '3.10'" },
+    { name = "urllib3", marker = "platform_python_implementation != 'PyPy'" },
     { name = "wrapt", marker = "platform_python_implementation != 'PyPy'" },
     { name = "yarl", marker = "platform_python_implementation != 'PyPy'" },
 ]



View it on GitLab: https://salsa.debian.org/debian-gis-team/pystac/-/compare/1027f3e1fb697bd4c4d05e871307c0da8ef1fcde...67a671e2ec53285d5535ca46c58371edda0f27ef

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/pystac/-/compare/1027f3e1fb697bd4c4d05e871307c0da8ef1fcde...67a671e2ec53285d5535ca46c58371edda0f27ef
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/20250129/72079832/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list