From 98515c7a413d9b197193bc24fa2122b7ca43ace7 Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Wed, 2 Apr 2025 12:37:19 +0100 Subject: [PATCH 1/3] feat: add stapi type and version --- stapi-fastapi/src/stapi_fastapi/conformance.py | 8 +++++--- stapi-pydantic/src/stapi_pydantic/constants.py | 2 ++ stapi-pydantic/src/stapi_pydantic/order.py | 3 +++ stapi-pydantic/src/stapi_pydantic/product.py | 3 +++ 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 stapi-pydantic/src/stapi_pydantic/constants.py diff --git a/stapi-fastapi/src/stapi_fastapi/conformance.py b/stapi-fastapi/src/stapi_fastapi/conformance.py index 836c34e..a593717 100644 --- a/stapi-fastapi/src/stapi_fastapi/conformance.py +++ b/stapi-fastapi/src/stapi_fastapi/conformance.py @@ -1,3 +1,5 @@ -CORE = "https://stapi.example.com/v0.1.0/core" -OPPORTUNITIES = "https://stapi.example.com/v0.1.0/opportunities" -ASYNC_OPPORTUNITIES = "https://stapi.example.com/v0.1.0/async-opportunities" +from stapi_pydantic.constants import STAPI_VERSION + +CORE = f"https://stapi.example.com/v{STAPI_VERSION}/core" +OPPORTUNITIES = f"https://stapi.example.com/v{STAPI_VERSION}/opportunities" +ASYNC_OPPORTUNITIES = f"https://stapi.example.com/v{STAPI_VERSION}/async-opportunities" diff --git a/stapi-pydantic/src/stapi_pydantic/constants.py b/stapi-pydantic/src/stapi_pydantic/constants.py new file mode 100644 index 0000000..80915d1 --- /dev/null +++ b/stapi-pydantic/src/stapi_pydantic/constants.py @@ -0,0 +1,2 @@ +STAPI_VERSION = "0.1.0" +"""The default STAPI version for this library.""" diff --git a/stapi-pydantic/src/stapi_pydantic/order.py b/stapi-pydantic/src/stapi_pydantic/order.py index 9ed02c8..8d23594 100644 --- a/stapi-pydantic/src/stapi_pydantic/order.py +++ b/stapi-pydantic/src/stapi_pydantic/order.py @@ -13,6 +13,7 @@ field_validator, ) +from .constants import STAPI_VERSION from .datetime_interval import DatetimeInterval from .filter import CQL2Filter from .opportunity import OpportunityProperties @@ -84,6 +85,8 @@ class Order[T: OrderStatus](_GeoJsonBase): # retrieve them via the API id: StrictStr type: Literal["Feature"] = "Feature" + stapi_type: Literal["Order"] = "Order" + stapi_version: str = STAPI_VERSION geometry: Geometry = Field(...) properties: OrderProperties[T] = Field(...) diff --git a/stapi-pydantic/src/stapi_pydantic/product.py b/stapi-pydantic/src/stapi_pydantic/product.py index 4a01415..55403b6 100644 --- a/stapi-pydantic/src/stapi_pydantic/product.py +++ b/stapi-pydantic/src/stapi_pydantic/product.py @@ -3,6 +3,7 @@ from pydantic import AnyHttpUrl, BaseModel, Field +from .constants import STAPI_VERSION from .opportunity import OpportunityProperties from .order import OrderParameters from .shared import Link @@ -31,6 +32,8 @@ def __init__(self, url: AnyHttpUrl | str, **kwargs: Any) -> None: class Product(BaseModel): type_: Literal["Product"] = Field(default="Product", alias="type") + stapi_type: Literal["Order"] = "Order" + stapi_version: str = STAPI_VERSION conformsTo: list[str] = Field(default_factory=list) id: str title: str = "" From 9ff1a9d3bd8448c3696be9be96761b4c3394491c Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Wed, 2 Apr 2025 12:37:56 +0100 Subject: [PATCH 2/3] feat: fix names --- stapi-pydantic/src/stapi_pydantic/product.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stapi-pydantic/src/stapi_pydantic/product.py b/stapi-pydantic/src/stapi_pydantic/product.py index 55403b6..e1fdca3 100644 --- a/stapi-pydantic/src/stapi_pydantic/product.py +++ b/stapi-pydantic/src/stapi_pydantic/product.py @@ -31,8 +31,8 @@ def __init__(self, url: AnyHttpUrl | str, **kwargs: Any) -> None: class Product(BaseModel): - type_: Literal["Product"] = Field(default="Product", alias="type") - stapi_type: Literal["Order"] = "Order" + type_: Literal["Collection"] = Field(default="Collection", alias="type") + stapi_type: Literal["Product"] = "Product" stapi_version: str = STAPI_VERSION conformsTo: list[str] = Field(default_factory=list) id: str From 7334971b7ae721096ab6135776c70ae6d776541b Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Wed, 2 Apr 2025 12:41:04 +0100 Subject: [PATCH 3/3] chore: update changelog --- stapi-pydantic/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stapi-pydantic/CHANGELOG.md b/stapi-pydantic/CHANGELOG.md index 7cf266a..28681be 100644 --- a/stapi-pydantic/CHANGELOG.md +++ b/stapi-pydantic/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +### Added + +- `stapi_type` and `stapi_version` ([#54](https://github.com/stapi-spec/pystapi/pull/54)) + ### Changed - Added more top-level imports, removed conformance urls ([#51](https://github.com/stapi-spec/pystapi/pull/51))