From d74877bf00f2c9625f29794b7d659af42bb8859b Mon Sep 17 00:00:00 2001 From: vincentsarago Date: Thu, 4 Apr 2024 10:54:16 +0200 Subject: [PATCH 1/3] rename ConformanceClasses to Conformance --- CHANGELOG.txt | 4 ++++ stac_pydantic/api/__init__.py | 5 ++++- stac_pydantic/api/conformance.py | 2 +- tests/api/test_conformance.py | 6 +++--- tests/api/test_search.py | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 902e96e..befbe7d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,7 @@ +Unreleased +---------- +- rename `stac_pydantic.api.conformance.ConformanceClasses` to `stac_pydantic.api.conformance.Conformance` + 3.0.0 (2024-01-25) ------------------ - Support pydantic>2.0 (@huard) diff --git a/stac_pydantic/api/__init__.py b/stac_pydantic/api/__init__.py index 143acf7..82f3f2a 100644 --- a/stac_pydantic/api/__init__.py +++ b/stac_pydantic/api/__init__.py @@ -1,8 +1,11 @@ # flake8: noqa: F401 from .collection import Collection from .collections import Collections -from .conformance import ConformanceClasses +from .conformance import Conformance from .item import Item from .item_collection import ItemCollection from .landing import LandingPage from .search import Search + +# For compatibility +ConformanceClasses = Conformance diff --git a/stac_pydantic/api/conformance.py b/stac_pydantic/api/conformance.py index 957c8b5..94eb915 100644 --- a/stac_pydantic/api/conformance.py +++ b/stac_pydantic/api/conformance.py @@ -3,7 +3,7 @@ from pydantic import AnyHttpUrl, BaseModel -class ConformanceClasses(BaseModel): +class Conformance(BaseModel): """ https://github.com/radiantearth/stac-api-spec/blob/master/api-spec.md#ogc-api---features-endpoints """ diff --git a/tests/api/test_conformance.py b/tests/api/test_conformance.py index 234ef6a..5379102 100644 --- a/tests/api/test_conformance.py +++ b/tests/api/test_conformance.py @@ -1,15 +1,15 @@ import pytest from pydantic import ValidationError -from stac_pydantic.api.conformance import ConformanceClasses +from stac_pydantic.api.conformance import Conformance def test_api_conformance(): - ConformanceClasses( + Conformance( conformsTo=["https://conformance-class-1", "http://conformance-class-2"] ) def test_api_conformance_invalid_url(): with pytest.raises(ValidationError): - ConformanceClasses(conformsTo=["s3://conformance-class"]) + Conformance(conformsTo=["s3://conformance-class"]) diff --git a/tests/api/test_search.py b/tests/api/test_search.py index ab44566..4f176e6 100644 --- a/tests/api/test_search.py +++ b/tests/api/test_search.py @@ -1,5 +1,5 @@ import time -from datetime import datetime, timezone, timedelta +from datetime import datetime, timedelta, timezone import pytest from pydantic import ValidationError From e27f89a0fb74d1fa13b279cae6a6b42763ef13ed Mon Sep 17 00:00:00 2001 From: Vincent Sarago Date: Thu, 4 Apr 2024 23:48:58 +0200 Subject: [PATCH 2/3] Update stac_pydantic/api/__init__.py --- stac_pydantic/api/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/stac_pydantic/api/__init__.py b/stac_pydantic/api/__init__.py index 82f3f2a..36f4123 100644 --- a/stac_pydantic/api/__init__.py +++ b/stac_pydantic/api/__init__.py @@ -7,5 +7,6 @@ from .landing import LandingPage from .search import Search +# TODO: remove in 4.0 # For compatibility ConformanceClasses = Conformance From a9a192a453c89ff670cdfa0c61a9209c435985ac Mon Sep 17 00:00:00 2001 From: vincentsarago Date: Fri, 5 Apr 2024 18:34:06 +0200 Subject: [PATCH 3/3] add warning --- stac_pydantic/api/__init__.py | 28 +++++++++++++++++++++++++--- tests/api/test_conformance.py | 5 +++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/stac_pydantic/api/__init__.py b/stac_pydantic/api/__init__.py index 36f4123..79294fe 100644 --- a/stac_pydantic/api/__init__.py +++ b/stac_pydantic/api/__init__.py @@ -1,4 +1,7 @@ -# flake8: noqa: F401 +"""STAC API models.""" + +import warnings + from .collection import Collection from .collections import Collections from .conformance import Conformance @@ -7,6 +10,25 @@ from .landing import LandingPage from .search import Search +__all__ = [ + "Collection", + "Collections", + "Conformance", + "Item", + "ItemCollection", + "LandingPage", + "Search", +] + + # TODO: remove in 4.0 -# For compatibility -ConformanceClasses = Conformance +def __getattr__(name): + if name == "ConformanceClasses": + warnings.warn( + "Class `ConformanceClasses` has been renamed to `Conformance`. Please use the new name. The old alias will be removed in a future version.", + DeprecationWarning, + stacklevel=2, + ) + return Conformance + + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") diff --git a/tests/api/test_conformance.py b/tests/api/test_conformance.py index 5379102..22b71f1 100644 --- a/tests/api/test_conformance.py +++ b/tests/api/test_conformance.py @@ -4,6 +4,11 @@ from stac_pydantic.api.conformance import Conformance +def test_deprecation(): + with pytest.warns(DeprecationWarning): + from stac_pydantic.api import ConformanceClasses # noqa + + def test_api_conformance(): Conformance( conformsTo=["https://conformance-class-1", "http://conformance-class-2"]