Исходный код cdek.apps.location.location

from __future__ import annotations

from ..app import App
from .filters import (
    CityFilter,
    CityListFilter,
    CoordinatesFilter,
    RegionFilter,
    ZipFilter,
)
from .responses import (
    CitiesResponse,
    CityResponse,
    CoordinatesResponse,
    RegionResponse,
    ZipResponse,
)


[документация] class LocationApp(App): """Получение списка локаций"""
[документация] def city(self, filter_params: CityFilter) -> CityResponse | None: """ Подбор локации по названию города Метод позволяет получать подсказки по подбору населенного пункта по его наименованию. Args: filter_params (CityFilter): Фильтр для подбора города Raises: ValueError: Если filter_params не является объектом CityFilter Returns: Optional[CityResponse]: Объект CityResponse с информацией о найденном городе или None, если город не найден """ # Обрабатываем filter_params как словарь if filter_params is not None and not isinstance(filter_params, CityFilter): raise ValueError("filter_params must be a CityFilter instance") response = self._get("location/suggest/cities", params=filter_params) return CityResponse.model_validate(response) if response else None
[документация] def regions( self, filter_params: RegionFilter | None = None ) -> list[RegionResponse]: """ Получение списка регионов Метод предназначен для получения детальной информации о регионах. Args: filter_params (RegionFilter): Фильтр для получения списка регионов Raises: ValueError: Если filter_params не является объектом RegionFilter Returns: list[RegionResponse]: Список объектов RegionResponse с информацией о регионах """ if filter_params is not None and not isinstance(filter_params, RegionFilter): raise ValueError("filter_params must be a RegionFilter instance") response = self._get("location/regions", params=filter_params) # Здесь должен быть импорт и создание RegionsResponse объектов return [RegionResponse.model_validate(region) for region in response]
[документация] def zip(self, filter_params: ZipFilter | None = None) -> list[ZipResponse]: """ Получение почтовых индексов города Метод предназначен для получения списка почтовых индексов. Args: filter_params (ZipFilter): Фильтр для получения списка почтовых индексов Raises: ValueError: Если filter_params не является объектом ZipFilter Returns: list[ZipResponse]: Список объектов ZipResponse с информацией о почтовых индексах """ if filter_params is not None and not isinstance(filter_params, ZipFilter): raise ValueError("filter_params must be a ZipFilter instance") response = self._get("location/postalcodes", params=filter_params) return [ZipResponse.model_validate(zip_code) for zip_code in response]
[документация] def coordinates( self, filter_params: CoordinatesFilter | None = None ) -> list[CoordinatesResponse]: """ Получение локации по координатам Метод позволяет определить локацию по переданным в запросе координатам Args: filter_params (CoordinatesFilter): Фильтр для получения локации по координатам Raises: ValueError: Если filter_params не является объектом CoordinatesFilter Returns: list[CoordinatesResponse]: Список объектов CoordinatesResponse с информацией о локации """ if filter_params is not None and not isinstance( filter_params, CoordinatesFilter ): raise ValueError("filter_params must be a CoordinatesFilter instance") response = self._get("location/coordinates", params=filter_params) return [ CoordinatesResponse.model_validate(coordinates) for coordinates in response ]
[документация] def cities( self, filter_params: CityListFilter | None = None ) -> list[CitiesResponse]: """ Получение списка населенных пунктов Метод предназначен для получения детальной информации о населенных пунктах Args: filter_params (CityListFilter): Фильтр для получения списка городов Raises: ValueError: Если filter_params не является объектом CityListFilter Returns: list[CitiesResponse]: Список объектов CitiesResponse с информацией о городах """ if filter_params is not None and not isinstance(filter_params, CityListFilter): raise ValueError("filter_params must be a CityListFilter instance") response = self._get("location/cities", params=filter_params) return [CitiesResponse.model_validate(city) for city in response]