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
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>)])
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