-
Notifications
You must be signed in to change notification settings - Fork 115
Closed
Description
FilterExtensionGetRequest uses pydantic.Field instead of attr.ib to define aliases. This does not work and fields filter_crs and filter_lang are not recognized.
from stac_fastapi.extensions.core.filter.request import FilterExtensionGetRequest
filter = FilterExtensionGetRequest(filter="test", filter_crs="EPSG:4326")
# >>> TypeError: FilterExtensionGetRequest.__init__() got an unexpected keyword argument 'filter_crs'filter = FilterExtensionGetRequest(filter="test", **{"filter-crs":"EPSG:4326"})
# >>> TypeError: FilterExtensionGetRequest.__init__() got an unexpected keyword argument 'filter-crs'When trying to define the fields using attr.ib hypen aliases are not excepted
from typing import Optional
import attr
from stac_fastapi.types.search import APIRequest
from stac_fastapi.extensions.core.filter.request import FilterLang
@attr.s
class FilterExtensionGetRequest(APIRequest):
"""Filter extension GET request model."""
filter: Optional[str] = attr.ib(default=None)
filter_crs: Optional[str] = attr.ib(alias="filter-crs", default=None)
filter_lang: Optional[FilterLang] = attr.ib(alias="filter-lang", default="cql2-text")
# >>> File <attrs generated init __main__.FilterExtensionGetRequest>:1
# def __init__(self, filter=attr_dict['filter'].default, filter-crs=attr_dict['filter_crs'].default, filter-lang=attr_dict['filter_lang'].default):
# ^
# SyntaxError: invalid syntaxI tried various other approaches including adding an __init__ method to sanitize fields name with hyphens but that didn't play nice with create_async_endpoint.
What was the reason to use attr classes over Pydantic classes for GET Request Models?
Metadata
Metadata
Assignees
Labels
No labels