Skip to content

Commit 82816fa

Browse files
use pydantic settings (#657)
* use pydantic settings * rename stac_fastapi_id to stac_fastapi_landing_id
1 parent e579311 commit 82816fa

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

stac_fastapi/api/stac_fastapi/api/app.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""Fastapi app creation."""
2-
import os
2+
33
from typing import Any, Dict, List, Optional, Tuple, Type, Union
44

55
import attr
@@ -84,11 +84,21 @@ class StacApi:
8484
converter=update_openapi,
8585
)
8686
router: APIRouter = attr.ib(default=attr.Factory(APIRouter))
87-
title: str = attr.ib(default=os.getenv("STAC_FASTAPI_TITLE", "stac-fastapi"))
88-
api_version: str = attr.ib(default=os.getenv("STAC_FASTAPI_VERSION", "0.1"))
87+
title: str = attr.ib(
88+
default=attr.Factory(
89+
lambda self: self.settings.stac_fastapi_title, takes_self=True
90+
)
91+
)
92+
api_version: str = attr.ib(
93+
default=attr.Factory(
94+
lambda self: self.settings.stac_fastapi_version, takes_self=True
95+
)
96+
)
8997
stac_version: str = attr.ib(default=STAC_VERSION)
9098
description: str = attr.ib(
91-
default=os.getenv("STAC_FASTAPI_DESCRIPTION", "stac-fastapi")
99+
default=attr.Factory(
100+
lambda self: self.settings.stac_fastapi_description, takes_self=True
101+
)
92102
)
93103
search_get_request_model: Type[BaseSearchGetRequest] = attr.ib(
94104
default=BaseSearchGetRequest

stac_fastapi/types/stac_fastapi/types/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ class ApiSettings(BaseSettings):
2222
# `pydantic.BaseSettings` instead
2323
default_includes: Optional[Set[str]] = None
2424

25+
stac_fastapi_title: str = "stac-fastapi"
26+
stac_fastapi_description: str = "stac-fastapi"
27+
stac_fastapi_version: str = "0.1"
28+
stac_fastapi_landing_id: str = "stac-fastapi"
29+
2530
app_host: str = "0.0.0.0"
2631
app_port: int = 8000
2732
reload: bool = True

stac_fastapi/types/stac_fastapi/types/core.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""Base clients."""
22

33
import abc
4-
import os
54
from typing import Any, Dict, List, Optional, Union
65
from urllib.parse import urljoin
76

@@ -13,6 +12,7 @@
1312
from starlette.responses import Response
1413

1514
from stac_fastapi.types import stac as stac_types
15+
from stac_fastapi.types.config import ApiSettings
1616
from stac_fastapi.types.conformance import BASE_CONFORMANCE_CLASSES
1717
from stac_fastapi.types.extension import ApiExtension
1818
from stac_fastapi.types.requests import get_base_url
@@ -23,6 +23,8 @@
2323
NumType = Union[float, int]
2424
StacType = Dict[str, Any]
2525

26+
api_settings = ApiSettings()
27+
2628

2729
@attr.s # type:ignore
2830
class BaseTransactionsClient(abc.ABC):
@@ -256,11 +258,9 @@ class LandingPageMixin(abc.ABC):
256258
"""Create a STAC landing page (GET /)."""
257259

258260
stac_version: str = attr.ib(default=STAC_VERSION)
259-
landing_page_id: str = attr.ib(default=os.getenv("STAC_FASTAPI_ID", "0.1"))
260-
title: str = attr.ib(default=os.getenv("STAC_FASTAPI_TITLE", "stac-fastapi"))
261-
description: str = attr.ib(
262-
default=os.getenv("STAC_FASTAPI_DESCRIPTION", "stac-fastapi")
263-
)
261+
landing_page_id: str = attr.ib(default=api_settings.stac_fastapi_landing_id)
262+
title: str = attr.ib(default=api_settings.stac_fastapi_title)
263+
description: str = attr.ib(default=api_settings.stac_fastapi_description)
264264

265265
def _landing_page(
266266
self,

0 commit comments

Comments
 (0)