-
Notifications
You must be signed in to change notification settings - Fork 115
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
The filter_crs and filter_lang fields are invalid because FilterExtensionGetRequest is an attrs class, but it uses Field from pydantic.
If I try to init the class and define filter_lang, for example.
from typing import Any, Dict, Literal, Optional
import attr
from pydantic import BaseModel, Field
from stac_fastapi.types.search import APIRequest
FilterLang = Literal["cql-json", "cql2-json", "cql2-text"]
@attr.s
class FilterExtensionGetRequest(APIRequest):
"""Filter extension GET request model."""
filter: Optional[str] = attr.ib(default=None)
filter_crs: Optional[str] = Field(alias="filter-crs", default=None)
filter_lang: Optional[FilterLang] = Field(alias="filter-lang", default="cql2-text")
FilterExtensionGetRequest(
filter="{}",
filter_crs="",
filter_lang="cql2-json"
)
# TypeError: init() got an unexpected keyword argument 'filter_crs'the class also does not impose the default values for filter_crs and filter_lang
FilterExtensionGetRequest()
# FilterExtensionGetRequest(filter=None)I think there are two options:
- Make
filter_crsandfilter_langintoattrsfields. AFAIKattrsdoes not support applying an alias to fields. - Make
FilterExtensionGetRequestinto a pydantic class.
Why do we have GET request models as attrs classes and POST request models as pydantic classes?
jonhealy1
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working