aio_taginfo.api.v4.relation.projects

/api/4/relation/projects endpoint.

  1"""`/api/4/relation/projects` endpoint."""
  2
  3from enum import Enum
  4
  5from aio_taginfo.api.v4 import Response, SortOrder
  6from aio_taginfo.api.v4._internal import (
  7    NonEmptyString,
  8    OptionalHttpUrl,
  9    OptionalNonEmptyString,
 10    api_get_json,
 11    api_params,
 12)
 13
 14from aiohttp import ClientSession
 15from pydantic import Field
 16from pydantic.dataclasses import dataclass
 17
 18
 19__all__ = (
 20    "call",
 21    "RelationProject",
 22    "RelationProjectSorting",
 23)
 24
 25
 26@dataclass(kw_only=True, frozen=True)
 27class RelationProject:
 28    """
 29    TODO: https://wiki.openstreetmap.org/wiki/Taginfo/Projects.
 30
 31    Attributes:
 32        project_id: Project ID
 33        project_name: Project name
 34        project_icon_url: Project icon URL
 35        rtype: Relation type
 36        description: Description
 37        doc_url: Documentation URL
 38        icon_url: Icon URL
 39    """
 40
 41    project_id: str = Field(min_length=1, repr=True)
 42    project_name: str = Field(min_length=1, repr=True)
 43    project_icon_url: OptionalHttpUrl = Field(repr=False)
 44    rtype: str = Field(min_length=1, repr=True)
 45    description: OptionalNonEmptyString = Field(repr=False)
 46    doc_url: OptionalHttpUrl = Field(repr=False)
 47    icon_url: OptionalHttpUrl = Field(repr=False)
 48
 49
 50class RelationProjectSorting(str, Enum):
 51    """Sort options for relation projects."""
 52
 53    PROJECT_NAME = "project_name"
 54
 55
 56@dataclass(kw_only=True, frozen=True)
 57class _Params:
 58    rtype: NonEmptyString = Field(repr=True)
 59    query: NonEmptyString | None = Field(repr=True)
 60    sortname: RelationProjectSorting = Field(repr=True)
 61    sortorder: SortOrder = Field(repr=True)
 62    page: int = Field(gt=0, repr=True)
 63    rp: int = Field(ge=0, repr=True)
 64
 65
 66async def call(
 67    rtype: str,
 68    query: str | None = None,
 69    sortname: RelationProjectSorting = RelationProjectSorting.PROJECT_NAME,
 70    sortorder: SortOrder = SortOrder.ASC,
 71    page: int = 1,
 72    rp: int = 0,
 73    session: ClientSession | None = None,
 74) -> Response[list[RelationProject]]:
 75    """
 76    Get projects using a given relation type.
 77
 78    https://taginfo.openstreetmap.org/taginfo/apidoc#api_4_relation_projects
 79
 80    Args:
 81        rtype: Relation type
 82        query: Only show results where the value matches this query (substring match)
 83        sortname: what field to sort by
 84        sortorder: sort order
 85        page: page number (starting at 1)
 86        rp: results per page
 87        session: request client session
 88
 89    Raises:
 90        TaginfoError
 91    """
 92    params = api_params(
 93        _Params,
 94        rtype=rtype,
 95        query=query,
 96        sortname=sortname,
 97        sortorder=sortorder,
 98        page=page,
 99        rp=rp,
100    )
101    return await api_get_json(
102        path="relation/projects",
103        cls=Response[list[RelationProject]],
104        session=session,
105        params=params,
106    )
107
108
109__docformat__ = "google"
async def call( rtype: str, query: str | None = None, sortname: RelationProjectSorting = <RelationProjectSorting.PROJECT_NAME: 'project_name'>, sortorder: aio_taginfo.api.v4.SortOrder = <SortOrder.ASC: 'asc'>, page: int = 1, rp: int = 0, session: aiohttp.client.ClientSession | None = None) -> aio_taginfo.api.v4.Response[list[RelationProject]]:
 67async def call(
 68    rtype: str,
 69    query: str | None = None,
 70    sortname: RelationProjectSorting = RelationProjectSorting.PROJECT_NAME,
 71    sortorder: SortOrder = SortOrder.ASC,
 72    page: int = 1,
 73    rp: int = 0,
 74    session: ClientSession | None = None,
 75) -> Response[list[RelationProject]]:
 76    """
 77    Get projects using a given relation type.
 78
 79    https://taginfo.openstreetmap.org/taginfo/apidoc#api_4_relation_projects
 80
 81    Args:
 82        rtype: Relation type
 83        query: Only show results where the value matches this query (substring match)
 84        sortname: what field to sort by
 85        sortorder: sort order
 86        page: page number (starting at 1)
 87        rp: results per page
 88        session: request client session
 89
 90    Raises:
 91        TaginfoError
 92    """
 93    params = api_params(
 94        _Params,
 95        rtype=rtype,
 96        query=query,
 97        sortname=sortname,
 98        sortorder=sortorder,
 99        page=page,
100        rp=rp,
101    )
102    return await api_get_json(
103        path="relation/projects",
104        cls=Response[list[RelationProject]],
105        session=session,
106        params=params,
107    )

Get projects using a given relation type.

https://taginfo.openstreetmap.org/taginfo/apidoc#api_4_relation_projects

Arguments:
  • rtype: Relation type
  • query: Only show results where the value matches this query (substring match)
  • sortname: what field to sort by
  • sortorder: sort order
  • page: page number (starting at 1)
  • rp: results per page
  • session: request client session
Raises:
  • TaginfoError
@dataclass(kw_only=True, frozen=True)
class RelationProject:
27@dataclass(kw_only=True, frozen=True)
28class RelationProject:
29    """
30    TODO: https://wiki.openstreetmap.org/wiki/Taginfo/Projects.
31
32    Attributes:
33        project_id: Project ID
34        project_name: Project name
35        project_icon_url: Project icon URL
36        rtype: Relation type
37        description: Description
38        doc_url: Documentation URL
39        icon_url: Icon URL
40    """
41
42    project_id: str = Field(min_length=1, repr=True)
43    project_name: str = Field(min_length=1, repr=True)
44    project_icon_url: OptionalHttpUrl = Field(repr=False)
45    rtype: str = Field(min_length=1, repr=True)
46    description: OptionalNonEmptyString = Field(repr=False)
47    doc_url: OptionalHttpUrl = Field(repr=False)
48    icon_url: OptionalHttpUrl = Field(repr=False)

TODO: https://wiki.openstreetmap.org/wiki/Taginfo/Projects.

Attributes:
  • project_id: Project ID
  • project_name: Project name
  • project_icon_url: Project icon URL
  • rtype: Relation type
  • description: Description
  • doc_url: Documentation URL
  • icon_url: Icon URL
RelationProject(*args: Any, **kwargs: Any)
139    def __init__(__dataclass_self__: PydanticDataclass, *args: Any, **kwargs: Any) -> None:
140        __tracebackhide__ = True
141        s = __dataclass_self__
142        s.__pydantic_validator__.validate_python(ArgsKwargs(args, kwargs), self_instance=s)
project_id: str = FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=1)])
project_name: str = FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=1)])
project_icon_url: Annotated[Optional[Annotated[pydantic_core._pydantic_core.Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)]], BeforeValidator(func=<function _empty_str_to_none at 0x7f88f4d21c60>)] = FieldInfo(annotation=Union[Annotated[Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)], NoneType], required=True, repr=False, metadata=[BeforeValidator(func=<function _empty_str_to_none>), BeforeValidator(func=<function _empty_str_to_none>)])
rtype: str = FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=1)])
description: typing.Annotated[str | None, BeforeValidator(func=<function _empty_str_to_none at 0x7f88f4d21c60>)] = FieldInfo(annotation=Union[str, NoneType], required=True, repr=False, metadata=[BeforeValidator(func=<function _empty_str_to_none>), BeforeValidator(func=<function _empty_str_to_none>)])
doc_url: Annotated[Optional[Annotated[pydantic_core._pydantic_core.Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)]], BeforeValidator(func=<function _empty_str_to_none at 0x7f88f4d21c60>)] = FieldInfo(annotation=Union[Annotated[Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)], NoneType], required=True, repr=False, metadata=[BeforeValidator(func=<function _empty_str_to_none>), BeforeValidator(func=<function _empty_str_to_none>)])
icon_url: Annotated[Optional[Annotated[pydantic_core._pydantic_core.Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)]], BeforeValidator(func=<function _empty_str_to_none at 0x7f88f4d21c60>)] = FieldInfo(annotation=Union[Annotated[Url, UrlConstraints(max_length=2083, allowed_schemes=['http', 'https'], host_required=None, default_host=None, default_port=None, default_path=None)], NoneType], required=True, repr=False, metadata=[BeforeValidator(func=<function _empty_str_to_none>), BeforeValidator(func=<function _empty_str_to_none>)])
class RelationProjectSorting(builtins.str, enum.Enum):
51class RelationProjectSorting(str, Enum):
52    """Sort options for relation projects."""
53
54    PROJECT_NAME = "project_name"

Sort options for relation projects.

PROJECT_NAME = <RelationProjectSorting.PROJECT_NAME: 'project_name'>
Inherited Members
enum.Enum
name
value
builtins.str
encode
replace
split
rsplit
join
capitalize
casefold
title
center
count
expandtabs
find
partition
index
ljust
lower
lstrip
rfind
rindex
rjust
rstrip
rpartition
splitlines
strip
swapcase
translate
upper
startswith
endswith
removeprefix
removesuffix
isascii
islower
isupper
istitle
isspace
isdecimal
isdigit
isnumeric
isalpha
isalnum
isidentifier
isprintable
zfill
format
format_map
maketrans