diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9722543..4edc2df 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,7 +1,7 @@ - 3.1.0 (TBD) ----------------- - Remove the deprecated `Context` extension (#138, @vincentsarago) +- Rename `stac_pydantic.api.conformance.ConformanceClasses` to `stac_pydantic.api.conformance.Conformance` - Update pre-commit configuration and switch to astral-sh/ruff for linter and formater - Add official support for python 3.12 diff --git a/stac_pydantic/api/__init__.py b/stac_pydantic/api/__init__.py index 143acf7..79294fe 100644 --- a/stac_pydantic/api/__init__.py +++ b/stac_pydantic/api/__init__.py @@ -1,8 +1,34 @@ -# flake8: noqa: F401 +"""STAC API models.""" + +import warnings + 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 + +__all__ = [ + "Collection", + "Collections", + "Conformance", + "Item", + "ItemCollection", + "LandingPage", + "Search", +] + + +# TODO: remove in 4.0 +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/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..22b71f1 100644 --- a/tests/api/test_conformance.py +++ b/tests/api/test_conformance.py @@ -1,15 +1,20 @@ import pytest from pydantic import ValidationError -from stac_pydantic.api.conformance import ConformanceClasses +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(): - 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"])