diff --git a/.gitignore b/.gitignore index 02b3615..e7b24d9 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +.DS_Store # Virtual environments env/ diff --git a/docs/overturetoosm.html b/docs/overturetoosm.html index ef7c418..1b7358b 100644 --- a/docs/overturetoosm.html +++ b/docs/overturetoosm.html @@ -26,11 +26,30 @@

Submodules

+

API Documentation

+ + @@ -47,24 +66,455 @@

overturetoosm

overturetoosm is a Python package to convert objects tagged in the -Overture schema for use in OSM. Only Overture's places layer is currently supported.

+Overture schema for use in OSM. Only Overture's places, buildings, +and addresses layers are currently supported.

+ +

Links:

+ +
-
1"""`overturetoosm` is a Python package to convert objects tagged in the 
-2Overture schema for use in OSM. Only Overture's `places` layer is currently supported.
-3"""
-4
-5# SPDX-FileCopyrightText: 2024-present Will <wahubsch@gmail.com>
-6#
-7# SPDX-License-Identifier: MIT
+                        
 1"""`overturetoosm` is a Python package to convert objects tagged in the 
+ 2Overture schema for use in OSM. Only Overture's `places`, `buildings`, 
+ 3and `addresses` layers are currently supported.
+ 4
+ 5Links:
+ 6* [Project GitHub](https://github.com/whubsch/overturetoosm)
+ 7* [Documentation](https://whubsch.github.io/overturetoosm/)
+ 8* [PyPI](https://pypi.org/project/overturetoosm/)
+ 9"""
+10
+11from .places import process_place
+12from .buildings import process_building
+13from .addresses import process_address
+14from .utils import process_geojson
+15from . import places
+16from . import buildings
+17from . import addresses
+18from . import objects
+19from . import utils
+20from . import resources
+21
+22__all__ = [
+23    "process_place",
+24    "process_building",
+25    "process_address",
+26    "process_geojson",
+27    "places",
+28    "buildings",
+29    "addresses",
+30    "objects",
+31    "utils",
+32    "resources",
+33]
 
+
+ +
+ + def + process_place( props: dict, confidence: float = 0.0, region_tag: str = 'addr:state', unmatched: Literal['error', 'force', 'ignore'] = 'ignore') -> Dict[str, str]: + + + +
+ +
 10def process_place(
+ 11    props: dict,
+ 12    confidence: float = 0.0,
+ 13    region_tag: str = "addr:state",
+ 14    unmatched: Literal["error", "force", "ignore"] = "ignore",
+ 15) -> Dict[str, str]:
+ 16    """Convert Overture's places properties to OSM tags.
+ 17
+ 18    Example usage:
+ 19    ```python
+ 20    import json
+ 21    from overturetoosm import process_place
+ 22
+ 23    with open("overture.geojson", "r", encoding="utf-8") as f:
+ 24        contents: dict = json.load(f)
+ 25
+ 26        for feature in contents["features"]:
+ 27            feature["properties"] = process_place(feature["properties"], confidence=0.5)
+ 28
+ 29    with open("overture_out.geojson", "w+", encoding="utf-8") as x:
+ 30        json.dump(contents, x, indent=4)
+ 31    ```
+ 32    Args:
+ 33        props (dict): The feature properties from the Overture GeoJSON.
+ 34        region_tag (str, optional): What tag to convert Overture's `region` tag to.
+ 35            Defaults to `addr:state`.
+ 36        confidence (float, optional): The minimum confidence level. Defaults to 0.0.
+ 37        unmatched (Literal["error", "force", "ignore"], optional): How to handle
+ 38            unmatched Overture categories. The "error" option raises an UnmatchedError
+ 39            exception, "force" puts the category into the `type` key, and "ignore"
+ 40            only returns other properties. Defaults to "ignore".
+ 41
+ 42    Returns:
+ 43        dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.
+ 44
+ 45    Raises:
+ 46        `overturetoosm.objects.UnmatchedError`: Raised if `unmatched` is set to `error` and
+ 47            the Overture category has no OSM definition.
+ 48        `overturetoosm.objects.ConfidenceError`: Raised if the confidence level is set
+ 49            above a feature's confidence.
+ 50    """
+ 51    new_props = {}
+ 52    prop_obj = PlaceProps(**props)
+ 53    if prop_obj.confidence < confidence:
+ 54        raise ConfidenceError(confidence, prop_obj.confidence)
+ 55
+ 56    if prop_obj.categories:
+ 57        prim = places_tags.get(prop_obj.categories.main)
+ 58        if prim:
+ 59            new_props = {**new_props, **prim}
+ 60        elif unmatched == "force":
+ 61            new_props["type"] = prop_obj.categories.main
+ 62        elif unmatched == "error":
+ 63            raise UnmatchedError(prop_obj.categories.main)
+ 64
+ 65    if prop_obj.names.primary:
+ 66        new_props["name"] = prop_obj.names.primary
+ 67
+ 68    if prop_obj.phones is not None:
+ 69        new_props["phone"] = prop_obj.phones[0]
+ 70
+ 71    if prop_obj.websites is not None:
+ 72        new_props["website"] = str(prop_obj.websites[0])
+ 73
+ 74    if add := prop_obj.addresses[0]:
+ 75        if add.freeform:
+ 76            new_props["addr:street_address"] = add.freeform
+ 77        if add.country:
+ 78            new_props["addr:country"] = add.country
+ 79        if add.postcode:
+ 80            new_props["addr:postcode"] = add.postcode
+ 81        if add.locality:
+ 82            new_props["addr:city"] = add.locality
+ 83        if add.region:
+ 84            new_props[region_tag] = add.region
+ 85
+ 86    if prop_obj.sources:
+ 87        new_props["source"] = (
+ 88            ", ".join({i.dataset for i in prop_obj.sources}) + " via overturetoosm"
+ 89        )
+ 90
+ 91    if prop_obj.socials is not None:
+ 92        for social in prop_obj.socials:
+ 93            social_str = str(social)
+ 94            if "facebook" in social_str:
+ 95                new_props["contact:facebook"] = social_str
+ 96            elif "twitter" in str(social):
+ 97                new_props["contact:twitter"] = social_str
+ 98
+ 99    if prop_obj.brand:
+100        new_props["brand"] = prop_obj.brand.names.primary
+101        new_props["brand:wikidata"] = prop_obj.brand.wikidata
+102
+103    return new_props
+
+ + +

Convert Overture's places properties to OSM tags.

+ +

Example usage:

+ +
+
import json
+from overturetoosm import process_place
+
+with open("overture.geojson", "r", encoding="utf-8") as f:
+    contents: dict = json.load(f)
+
+    for feature in contents["features"]:
+        feature["properties"] = process_place(feature["properties"], confidence=0.5)
+
+with open("overture_out.geojson", "w+", encoding="utf-8") as x:
+    json.dump(contents, x, indent=4)
+
+
+ +
Arguments:
+ +
    +
  • props (dict): The feature properties from the Overture GeoJSON.
  • +
  • region_tag (str, optional): What tag to convert Overture's region tag to. +Defaults to addr:state.
  • +
  • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
  • +
  • unmatched (Literal["error", "force", "ignore"], optional): How to handle +unmatched Overture categories. The "error" option raises an UnmatchedError +exception, "force" puts the category into the type key, and "ignore" +only returns other properties. Defaults to "ignore".
  • +
+ +
Returns:
+ +
+

dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

+
+ +
Raises:
+ + +
+ + +
+
+ +
+ + def + process_building(props: dict, confidence: float = 0.0) -> Dict[str, str]: + + + +
+ +
 9def process_building(
+10    props: dict,
+11    confidence: float = 0.0,
+12) -> Dict[str, str]:
+13    """Convert Overture's building properties to OSM tags.
+14
+15    Args:
+16        props (dict): The feature properties from the Overture GeoJSON.
+17        confidence (float, optional): The minimum confidence level. Defaults to 0.0.
+18
+19    Returns:
+20        Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.
+21
+22    Raises:
+23        `overturetoosm.objects.ConfidenceError`: Raised if the confidence level is set
+24            above a feature's confidence.
+25    """
+26    new_props = {}
+27    prop_obj = BuildingProps(**props)
+28    confidences = [source.confidence for source in prop_obj.sources]
+29    if any(conf < confidence for conf in confidences):
+30        raise ConfidenceError(confidence, max(confidences))
+31
+32    new_props["building"] = prop_obj.class_
+33
+34    new_props["source"] = source_statement(prop_obj.sources)
+35
+36    obj_dict = prop_obj.model_dump(exclude_none=True).items()
+37    new_props.update(
+38        {
+39            k.replace("facade", "building")
+40            .replace("_", ":")
+41            .replace("color", "colour"): v
+42            for k, v in obj_dict
+43            if k.startswith(("roof", "facade"))
+44        }
+45    )
+46    new_props.update({k: v for k, v in obj_dict if k.endswith("height")})
+47
+48    if prop_obj.is_underground:
+49        new_props["location"] = "underground"
+50    if prop_obj.num_floors:
+51        new_props["building:levels"] = prop_obj.num_floors
+52    if prop_obj.num_floors_underground:
+53        new_props["building:levels:underground"] = prop_obj.num_floors_underground
+54    if prop_obj.min_floor:
+55        new_props["building:min_level"] = prop_obj.min_floor
+56    return new_props
+
+ + +

Convert Overture's building properties to OSM tags.

+ +
Arguments:
+ +
    +
  • props (dict): The feature properties from the Overture GeoJSON.
  • +
  • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
  • +
+ +
Returns:
+ +
+

Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

+
+ +
Raises:
+ + +
+ + +
+
+ +
+ + def + process_address(props: dict, style: str = 'US') -> Dict[str, str]: + + + +
+ +
 8def process_address(
+ 9    props: dict,
+10    style: str = "US",
+11) -> Dict[str, str]:
+12    """Convert Overture's address properties to OSM tags.
+13
+14    Args:
+15        props (dict): The feature properties from the Overture GeoJSON.
+16        style (str, optional): How to handle the `address_levels` field. Open
+17            a pull request or issue to add support for other regions. Defaults to "US".
+18
+19    Returns:
+20        Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.
+21    """
+22    bad_tags = ["version", "theme", "type", "address_levels"]
+23    prop = AddressProps(**props)
+24
+25    obj_dict = prop.model_dump(exclude_none=True, by_alias=True)
+26
+27    if obj_dict["address_levels"] and len(obj_dict["address_levels"]) > 0:
+28        if style == "US":
+29            obj_dict["addr:state"] = str(obj_dict["address_levels"][0]["value"])
+30
+31    for tag in bad_tags:
+32        obj_dict.pop(tag, None)
+33
+34    return obj_dict
+
+ + +

Convert Overture's address properties to OSM tags.

+ +
Arguments:
+ +
    +
  • props (dict): The feature properties from the Overture GeoJSON.
  • +
  • style (str, optional): How to handle the address_levels field. Open +a pull request or issue to add support for other regions. Defaults to "US".
  • +
+ +
Returns:
+ +
+

Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

+
+
+ + +
+
+ +
+ + def + process_geojson( geojson: dict, fx: Callable, confidence: float = 0.0, options: Optional[dict] = None) -> dict: + + + +
+ +
13def process_geojson(
+14    geojson: dict,
+15    fx: Callable,
+16    confidence: float = 0.0,
+17    options: Optional[dict] = None,
+18) -> dict:
+19    """Convert an Overture `place` GeoJSON to one that follows OSM's schema.
+20
+21    Example usage:
+22    ```python
+23    import json
+24    from overturetoosm import process_geojson
+25
+26    with open("overture.geojson", "r", encoding="utf-8") as f:
+27        contents: dict = json.load(f)
+28        geojson = process_geojson(contents, fx=process_building)
+29
+30    with open("overture_out.geojson", "w+", encoding="utf-8") as x:
+31        json.dump(geojson, x, indent=4)
+32    ```
+33    Args:
+34        geojson (dict): The dictionary representation of the Overture GeoJSON.
+35        fx (Callable): The function to apply to each feature.
+36        confidence (float, optional): The minimum confidence level. Defaults to 0.0.
+37        options (dict, optional): Function-specific options to pass as arguments to
+38            the `fx` function.
+39
+40    Returns:
+41        dict: The dictionary representation of the GeoJSON that follows OSM's schema.
+42    """
+43    options = options or {}
+44    new_features = []
+45    for feature in geojson["features"]:
+46        try:
+47            feature["properties"] = fx(feature["properties"], confidence, **options)
+48            new_features.append(feature)
+49        except (ConfidenceError, UnmatchedError):
+50            pass
+51
+52    geojson["features"] = new_features
+53    return geojson
+
+ + +

Convert an Overture place GeoJSON to one that follows OSM's schema.

+ +

Example usage:

+ +
+
import json
+from overturetoosm import process_geojson
+
+with open("overture.geojson", "r", encoding="utf-8") as f:
+    contents: dict = json.load(f)
+    geojson = process_geojson(contents, fx=process_building)
+
+with open("overture_out.geojson", "w+", encoding="utf-8") as x:
+    json.dump(geojson, x, indent=4)
+
+
+ +
Arguments:
+ +
    +
  • geojson (dict): The dictionary representation of the Overture GeoJSON.
  • +
  • fx (Callable): The function to apply to each feature.
  • +
  • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
  • +
  • options (dict, optional): Function-specific options to pass as arguments to +the fx function.
  • +
+ +
Returns:
+ +
+

dict: The dictionary representation of the GeoJSON that follows OSM's schema.

+
+
+ + +
+ \ No newline at end of file diff --git a/docs/overturetoosm/buildings.html b/docs/overturetoosm/buildings.html new file mode 100644 index 0000000..20a4465 --- /dev/null +++ b/docs/overturetoosm/buildings.html @@ -0,0 +1,391 @@ + + + + + + + overturetoosm.buildings API documentation + + + + + + + + + + +
+
+

+overturetoosm.buildings

+ +

Convert Overture's buildings features to OSM tags.

+
+ + + + + +
 1"""Convert Overture's `buildings` features to OSM tags."""
+ 2
+ 3from typing import Dict
+ 4from .utils import source_statement
+ 5from .objects import BuildingProps, ConfidenceError
+ 6
+ 7
+ 8def process_building(
+ 9    props: dict,
+10    confidence: float = 0.0,
+11) -> Dict[str, str]:
+12    """Convert Overture's building properties to OSM tags.
+13
+14    Args:
+15        props (dict): The feature properties from the Overture GeoJSON.
+16        confidence (float, optional): The minimum confidence level. Defaults to 0.0.
+17
+18    Returns:
+19        Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.
+20
+21    Raises:
+22        `overturetoosm.objects.ConfidenceError`: Raised if the confidence level is set
+23            above a feature's confidence.
+24    """
+25    new_props = {}
+26    prop_obj = BuildingProps(**props)
+27    confidences = [source.confidence for source in prop_obj.sources]
+28    if any(conf < confidence for conf in confidences):
+29        raise ConfidenceError(confidence, max(confidences))
+30
+31    new_props["building"] = prop_obj.class_
+32
+33    new_props["source"] = source_statement(prop_obj.sources)
+34
+35    obj_dict = prop_obj.model_dump(exclude_none=True).items()
+36    new_props.update(
+37        {
+38            k.replace("facade", "building")
+39            .replace("_", ":")
+40            .replace("color", "colour"): v
+41            for k, v in obj_dict
+42            if k.startswith(("roof", "facade"))
+43        }
+44    )
+45    new_props.update({k: v for k, v in obj_dict if k.endswith("height")})
+46
+47    if prop_obj.is_underground:
+48        new_props["location"] = "underground"
+49    if prop_obj.num_floors:
+50        new_props["building:levels"] = prop_obj.num_floors
+51    if prop_obj.num_floors_underground:
+52        new_props["building:levels:underground"] = prop_obj.num_floors_underground
+53    if prop_obj.min_floor:
+54        new_props["building:min_level"] = prop_obj.min_floor
+55    return new_props
+
+ + +
+
+ +
+ + def + process_building(props: dict, confidence: float = 0.0) -> Dict[str, str]: + + + +
+ +
 9def process_building(
+10    props: dict,
+11    confidence: float = 0.0,
+12) -> Dict[str, str]:
+13    """Convert Overture's building properties to OSM tags.
+14
+15    Args:
+16        props (dict): The feature properties from the Overture GeoJSON.
+17        confidence (float, optional): The minimum confidence level. Defaults to 0.0.
+18
+19    Returns:
+20        Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.
+21
+22    Raises:
+23        `overturetoosm.objects.ConfidenceError`: Raised if the confidence level is set
+24            above a feature's confidence.
+25    """
+26    new_props = {}
+27    prop_obj = BuildingProps(**props)
+28    confidences = [source.confidence for source in prop_obj.sources]
+29    if any(conf < confidence for conf in confidences):
+30        raise ConfidenceError(confidence, max(confidences))
+31
+32    new_props["building"] = prop_obj.class_
+33
+34    new_props["source"] = source_statement(prop_obj.sources)
+35
+36    obj_dict = prop_obj.model_dump(exclude_none=True).items()
+37    new_props.update(
+38        {
+39            k.replace("facade", "building")
+40            .replace("_", ":")
+41            .replace("color", "colour"): v
+42            for k, v in obj_dict
+43            if k.startswith(("roof", "facade"))
+44        }
+45    )
+46    new_props.update({k: v for k, v in obj_dict if k.endswith("height")})
+47
+48    if prop_obj.is_underground:
+49        new_props["location"] = "underground"
+50    if prop_obj.num_floors:
+51        new_props["building:levels"] = prop_obj.num_floors
+52    if prop_obj.num_floors_underground:
+53        new_props["building:levels:underground"] = prop_obj.num_floors_underground
+54    if prop_obj.min_floor:
+55        new_props["building:min_level"] = prop_obj.min_floor
+56    return new_props
+
+ + +

Convert Overture's building properties to OSM tags.

+ +
Arguments:
+ +
    +
  • props (dict): The feature properties from the Overture GeoJSON.
  • +
  • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
  • +
+ +
Returns:
+ +
+

Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

+
+ +
Raises:
+ + +
+ + +
+
+ + \ No newline at end of file diff --git a/docs/overturetoosm/objects.html b/docs/overturetoosm/objects.html index fd0d4dc..254ff6b 100644 --- a/docs/overturetoosm/objects.html +++ b/docs/overturetoosm/objects.html @@ -47,6 +47,9 @@

API Documentation

  • confidence
  • +
  • + update_time +
  • model_config
  • @@ -84,31 +87,31 @@

    API Documentation

  • - Addresses + Address @@ -154,6 +157,30 @@

    API Documentation

  • + +
  • + OvertureBase + +
  • PlaceProps @@ -188,6 +215,9 @@

    API Documentation

  • socials
  • +
  • + emails +
  • phones
  • @@ -233,6 +263,123 @@

    API Documentation

    +
  • + BuildingProps + + +
  • +
  • + AddressLevel + + +
  • +
  • + AddressProps + + +
  • @@ -259,123 +406,185 @@

      1"""Pydantic models needed throughout the project."""
       2
    -  3import pydantic
    -  4
    +  3from typing import Dict, List, Optional
    +  4from pydantic import AnyUrl, BaseModel, Field
       5
    -  6class Sources(pydantic.BaseModel):
    -  7    """Overture sources model."""
    -  8
    -  9    property: str
    - 10    dataset: str
    - 11    record_id: str
    - 12    confidence: float | None
    - 13
    - 14
    - 15class Names(pydantic.BaseModel):
    - 16    """Overture names model."""
    - 17
    - 18    primary: str
    - 19    common: str | None
    - 20    rules: str | None
    - 21
    - 22
    - 23class Addresses(pydantic.BaseModel):
    - 24    """Overture addresses model."""
    - 25
    - 26    freeform: str | None
    - 27    locality: str | None
    - 28    postcode: str | None
    - 29    region: str | None
    - 30    country: str | None
    - 31
    - 32
    - 33class Categories(pydantic.BaseModel):
    - 34    """Overture categories model."""
    - 35
    - 36    main: str
    - 37    alternate: list[str] | None
    - 38
    - 39
    - 40class Brand(pydantic.BaseModel):
    - 41    """Overture brand model."""
    - 42
    - 43    wikidata: str | None
    - 44    names: Names
    - 45
    - 46
    - 47class PlaceProps(pydantic.BaseModel):
    - 48    """Overture properties model."""
    - 49
    - 50    id: str
    - 51    version: int
    - 52    update_time: str
    - 53    sources: list[Sources]
    - 54    names: Names
    - 55    brand: Brand | None = None
    - 56    categories: Categories | None = None
    - 57    confidence: float = pydantic.Field(ge=0.0, le=1.0)
    - 58    websites: list[str] | None = None
    - 59    socials: list[str] | None = None
    - 60    phones: list[str] | None = None
    - 61    addresses: list[Addresses]
    +  6
    +  7class Sources(BaseModel):
    +  8    """Overture sources model."""
    +  9
    + 10    property: str
    + 11    dataset: str
    + 12    record_id: Optional[str] = None
    + 13    confidence: float = Field(default=0.0)
    + 14    update_time: Optional[str] = None
    + 15
    + 16
    + 17class Names(BaseModel):
    + 18    """Overture names model."""
    + 19
    + 20    primary: str
    + 21    common: Optional[Dict[str, str]]
    + 22    rules: Optional[List[Dict[str, str]]]
    + 23
    + 24
    + 25class Address(BaseModel):
    + 26    """Overture addresses model."""
    + 27
    + 28    freeform: Optional[str]
    + 29    locality: Optional[str]
    + 30    postcode: Optional[str]
    + 31    region: Optional[str]
    + 32    country: Optional[str] = Field(pattern=r"^[A-Z]{2}$")
    + 33
    + 34
    + 35class Categories(BaseModel):
    + 36    """Overture categories model."""
    + 37
    + 38    main: str
    + 39    alternate: Optional[List[str]]
    + 40
    + 41
    + 42class Brand(BaseModel):
    + 43    """Overture brand model."""
    + 44
    + 45    wikidata: Optional[str] = Field(pattern=r"Q[0-9]+")
    + 46    names: Names
    + 47
    + 48
    + 49class OvertureBase(BaseModel):
    + 50    """Overture base model."""
    + 51
    + 52    theme: str
    + 53    type: str
    + 54    version: int
    + 55
    + 56
    + 57class PlaceProps(BaseModel):
    + 58    """Overture properties model.
    + 59
    + 60    Use this model directly if you want to manipulate the `place` properties yourself.
    + 61    """
      62
    - 63
    - 64class ConfidenceError(Exception):
    - 65    """
    - 66    Confidence error exception.
    - 67
    - 68    This exception is raised when the confidence level of an item is too low.
    - 69    It contains the original confidence level and the confidence level of the item.
    - 70
    - 71    Attributes:
    - 72        confidence_level (float): The set confidence level.
    - 73        confidence_item (float): The confidence of the item.
    - 74        message (str): The error message.
    - 75    """
    + 63    id: Optional[str] = None
    + 64    version: int
    + 65    update_time: str
    + 66    sources: List[Sources]
    + 67    names: Names
    + 68    brand: Optional[Brand] = None
    + 69    categories: Optional[Categories] = None
    + 70    confidence: float = Field(ge=0.0, le=1.0)
    + 71    websites: Optional[List[AnyUrl]] = None
    + 72    socials: Optional[List[AnyUrl]] = None
    + 73    emails: Optional[List[str]] = None
    + 74    phones: Optional[List[str]] = None
    + 75    addresses: List[Address]
      76
    - 77    def __init__(
    - 78        self,
    - 79        confidence_level: float,
    - 80        confidence_item: float,
    - 81        message: str = "Confidence in this item is too low.",
    - 82    ):
    - 83        """@private"""
    - 84        self.confidence_level = confidence_level
    - 85        self.confidence_item = confidence_item
    - 86        self.message = message
    - 87        super().__init__(message)
    - 88
    - 89    def __str__(self):
    - 90        conf = f"confidence_level={self.confidence_level}, confidence_item={self.confidence_item}"
    - 91        return f"""{self.message} {conf}"""
    - 92
    - 93
    - 94class UnmatchedError(Exception):
    - 95    """
    - 96    Unmatched category error.
    - 97
    - 98    This exception is raised when an item's Overture category does not have a
    - 99    corresponding OSM definition. Edit
    -100    [the OSM Wiki page](https://wiki.openstreetmap.org/wiki/Overture_categories)
    -101    to add a definition to this category.
    -102
    -103    Attributes:
    -104        category (str): The Overture category that is unmatched.
    -105        message (str): The error message.
    -106    """
    -107
    -108    def __init__(
    -109        self,
    -110        category: str,
    -111        message: str = "Overture category is unmatched.",
    -112    ):
    -113        """@private"""
    -114        self.category = category
    -115        self.message = message
    -116        super().__init__(message)
    -117
    -118    def __str__(self):
    -119        return f"{self.message} {{category={self.category}}}"
    + 77
    + 78class ConfidenceError(Exception):
    + 79    """
    + 80    Confidence error exception.
    + 81
    + 82    This exception is raised when the confidence level of an item is below the
    + 83    user-defined level. It contains the original confidence level and the confidence
    + 84    level of the item.
    + 85
    + 86    Attributes:
    + 87        confidence_level (float): The set confidence level.
    + 88        confidence_item (float): The confidence of the item.
    + 89        message (str): The error message.
    + 90    """
    + 91
    + 92    def __init__(
    + 93        self,
    + 94        confidence_level: float,
    + 95        confidence_item: float,
    + 96        message: str = "Confidence in this item is too low.",
    + 97    ) -> None:
    + 98        """@private"""
    + 99        self.confidence_level = confidence_level
    +100        self.confidence_item = confidence_item
    +101        self.message = message
    +102        super().__init__(message)
    +103
    +104    def __str__(self) -> str:
    +105        """@private"""
    +106        conf = f"confidence_level={self.confidence_level}, confidence_item={self.confidence_item}"
    +107        return f"""{self.message} {conf}"""
    +108
    +109
    +110class UnmatchedError(Exception):
    +111    """
    +112    Unmatched category error.
    +113
    +114    This exception is raised when an item's Overture category does not have a
    +115    corresponding OSM definition. Edit
    +116    [the OSM Wiki page](https://wiki.openstreetmap.org/wiki/Overture_categories)
    +117    to add a definition to this category.
    +118
    +119    Attributes:
    +120        category (str): The Overture category that is unmatched.
    +121        message (str): The error message.
    +122    """
    +123
    +124    def __init__(
    +125        self,
    +126        category: str,
    +127        message: str = "Overture category is unmatched.",
    +128    ) -> None:
    +129        """@private"""
    +130        self.category = category
    +131        self.message = message
    +132        super().__init__(message)
    +133
    +134    def __str__(self) -> str:
    +135        """@private"""
    +136        return f"{self.message} {{category={self.category}}}"
    +137
    +138
    +139class BuildingProps(BaseModel):
    +140    """Overture building properties.
    +141
    +142    Use this model directly if you want to manipulate the `building` properties yourself.
    +143    """
    +144
    +145    version: int
    +146    class_: str = Field(alias="class")
    +147    subtype: str
    +148    sources: List[Sources]
    +149    height: Optional[float] = None
    +150    is_underground: Optional[bool] = None
    +151    num_floors: Optional[int] = None
    +152    num_floors_underground: Optional[int] = None
    +153    min_height: Optional[float] = None
    +154    min_floor: Optional[int] = None
    +155    facade_color: Optional[str] = None
    +156    facade_material: Optional[str] = None
    +157    roof_material: Optional[str] = None
    +158    roof_shape: Optional[str] = None
    +159    roof_direction: Optional[str] = None
    +160    roof_orientation: Optional[str] = None
    +161    roof_color: Optional[str] = None
    +162    roof_height: Optional[float] = None
    +163
    +164
    +165class AddressLevel(BaseModel):
    +166    """Overture address level model."""
    +167
    +168    value: str
    +169
    +170
    +171class AddressProps(OvertureBase):
    +172    """Overture address properties.
    +173
    +174    Use this model directly if you want to manipulate the `address` properties yourself.
    +175    """
    +176
    +177    number: Optional[str] = Field(serialization_alias="addr:housenumber")
    +178    street: Optional[str] = Field(serialization_alias="addr:street")
    +179    postcode: Optional[str] = Field(serialization_alias="addr:postcode")
    +180    country: Optional[str] = Field(serialization_alias="addr:country")
    +181    address_levels: Optional[List[AddressLevel]] = Field(default_factory=list)
     
    @@ -391,13 +600,14 @@

    -
     7class Sources(pydantic.BaseModel):
    - 8    """Overture sources model."""
    - 9
    -10    property: str
    -11    dataset: str
    -12    record_id: str
    -13    confidence: float | None
    +            
     8class Sources(BaseModel):
    + 9    """Overture sources model."""
    +10
    +11    property: str
    +12    dataset: str
    +13    record_id: Optional[str] = None
    +14    confidence: float = Field(default=0.0)
    +15    update_time: Optional[str] = None
     
    @@ -429,7 +639,7 @@

    - record_id: str + record_id: Optional[str]
    @@ -440,7 +650,7 @@

    - confidence: float | None + confidence: float
    @@ -448,6 +658,17 @@

    +

    +
    +
    + update_time: Optional[str] + + +
    + + + +
    @@ -465,7 +686,7 @@

    model_fields = - {'property': FieldInfo(annotation=str, required=True), 'dataset': FieldInfo(annotation=str, required=True), 'record_id': FieldInfo(annotation=str, required=True), 'confidence': FieldInfo(annotation=Union[float, NoneType], required=True)} + {'property': FieldInfo(annotation=str, required=True), 'dataset': FieldInfo(annotation=str, required=True), 'record_id': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=False, default=0.0), 'update_time': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}
    @@ -532,12 +753,12 @@

    Inherited Members
    -
    16class Names(pydantic.BaseModel):
    -17    """Overture names model."""
    -18
    -19    primary: str
    -20    common: str | None
    -21    rules: str | None
    +            
    18class Names(BaseModel):
    +19    """Overture names model."""
    +20
    +21    primary: str
    +22    common: Optional[Dict[str, str]]
    +23    rules: Optional[List[Dict[str, str]]]
     
    @@ -558,7 +779,7 @@
    Inherited Members
    - common: str | None + common: Optional[Dict[str, str]]
    @@ -569,7 +790,7 @@
    Inherited Members
    - rules: str | None + rules: Optional[List[Dict[str, str]]]
    @@ -594,7 +815,7 @@
    Inherited Members
    model_fields = - {'primary': FieldInfo(annotation=str, required=True), 'common': FieldInfo(annotation=Union[str, NoneType], required=True), 'rules': FieldInfo(annotation=Union[str, NoneType], required=True)} + {'primary': FieldInfo(annotation=str, required=True), 'common': FieldInfo(annotation=Union[Dict[str, str], NoneType], required=True), 'rules': FieldInfo(annotation=Union[List[Dict[str, str]], NoneType], required=True)}
    @@ -650,25 +871,25 @@
    Inherited Members
    -
    - +
    +
    class - Addresses(pydantic.main.BaseModel): + Address(pydantic.main.BaseModel): - +
    - -
    24class Addresses(pydantic.BaseModel):
    -25    """Overture addresses model."""
    -26
    -27    freeform: str | None
    -28    locality: str | None
    -29    postcode: str | None
    -30    region: str | None
    -31    country: str | None
    +    
    +            
    26class Address(BaseModel):
    +27    """Overture addresses model."""
    +28
    +29    freeform: Optional[str]
    +30    locality: Optional[str]
    +31    postcode: Optional[str]
    +32    region: Optional[str]
    +33    country: Optional[str] = Field(pattern=r"^[A-Z]{2}$")
     
    @@ -676,94 +897,94 @@
    Inherited Members
    -
    +
    - freeform: str | None + freeform: Optional[str]
    - +
    -
    +
    - locality: str | None + locality: Optional[str]
    - +
    -
    +
    - postcode: str | None + postcode: Optional[str]
    - +
    -
    +
    - region: str | None + region: Optional[str]
    - +
    -
    +
    - country: str | None + country: Optional[str]
    - +
    -
    +
    model_config = {}
    - +
    -
    +
    model_fields = - - {'freeform': FieldInfo(annotation=Union[str, NoneType], required=True), 'locality': FieldInfo(annotation=Union[str, NoneType], required=True), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True), 'region': FieldInfo(annotation=Union[str, NoneType], required=True), 'country': FieldInfo(annotation=Union[str, NoneType], required=True)} + + {'freeform': FieldInfo(annotation=Union[str, NoneType], required=True), 'locality': FieldInfo(annotation=Union[str, NoneType], required=True), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True), 'region': FieldInfo(annotation=Union[str, NoneType], required=True), 'country': FieldInfo(annotation=Union[str, NoneType], required=True, metadata=[_PydanticGeneralMetadata(pattern='^[A-Z]{2}$')])}
    - +
    -
    +
    model_computed_fields = {}
    - + @@ -772,32 +993,32 @@
    Inherited Members
    Inherited Members
    pydantic.main.BaseModel
    -
    BaseModel
    -
    model_extra
    -
    model_fields_set
    -
    model_construct
    -
    model_copy
    -
    model_dump
    -
    model_dump_json
    -
    model_json_schema
    -
    model_parametrized_name
    -
    model_post_init
    -
    model_rebuild
    -
    model_validate
    -
    model_validate_json
    -
    model_validate_strings
    -
    dict
    -
    json
    -
    parse_obj
    -
    parse_raw
    -
    parse_file
    -
    from_orm
    -
    construct
    -
    copy
    -
    schema
    -
    schema_json
    -
    validate
    -
    update_forward_refs
    +
    BaseModel
    +
    model_extra
    +
    model_fields_set
    +
    model_construct
    +
    model_copy
    +
    model_dump
    +
    model_dump_json
    +
    model_json_schema
    +
    model_parametrized_name
    +
    model_post_init
    +
    model_rebuild
    +
    model_validate
    +
    model_validate_json
    +
    model_validate_strings
    +
    dict
    +
    json
    +
    parse_obj
    +
    parse_raw
    +
    parse_file
    +
    from_orm
    +
    construct
    +
    copy
    +
    schema
    +
    schema_json
    +
    validate
    +
    update_forward_refs
    @@ -814,11 +1035,11 @@
    Inherited Members
    -
    34class Categories(pydantic.BaseModel):
    -35    """Overture categories model."""
    -36
    -37    main: str
    -38    alternate: list[str] | None
    +            
    36class Categories(BaseModel):
    +37    """Overture categories model."""
    +38
    +39    main: str
    +40    alternate: Optional[List[str]]
     
    @@ -839,7 +1060,7 @@
    Inherited Members
    - alternate: list[str] | None + alternate: Optional[List[str]]
    @@ -864,7 +1085,7 @@
    Inherited Members
    model_fields = - {'main': FieldInfo(annotation=str, required=True), 'alternate': FieldInfo(annotation=Union[list[str], NoneType], required=True)} + {'main': FieldInfo(annotation=str, required=True), 'alternate': FieldInfo(annotation=Union[List[str], NoneType], required=True)}
    @@ -931,11 +1152,11 @@
    Inherited Members
    -
    41class Brand(pydantic.BaseModel):
    -42    """Overture brand model."""
    -43
    -44    wikidata: str | None
    -45    names: Names
    +            
    43class Brand(BaseModel):
    +44    """Overture brand model."""
    +45
    +46    wikidata: Optional[str] = Field(pattern=r"Q[0-9]+")
    +47    names: Names
     
    @@ -945,7 +1166,7 @@
    Inherited Members
    - wikidata: str | None + wikidata: Optional[str]
    @@ -981,7 +1202,7 @@
    Inherited Members
    model_fields = - {'wikidata': FieldInfo(annotation=Union[str, NoneType], required=True), 'names': FieldInfo(annotation=Names, required=True)} + {'wikidata': FieldInfo(annotation=Union[str, NoneType], required=True, metadata=[_PydanticGeneralMetadata(pattern='Q[0-9]+')]), 'names': FieldInfo(annotation=Names, required=True)}
    @@ -1033,6 +1254,135 @@
    Inherited Members
    validate
    update_forward_refs
    +
    + +
    +
    +
    + +
    + + class + OvertureBase(pydantic.main.BaseModel): + + + +
    + +
    50class OvertureBase(BaseModel):
    +51    """Overture base model."""
    +52
    +53    theme: str
    +54    type: str
    +55    version: int
    +
    + + +

    Overture base model.

    +
    + + +
    +
    + theme: str + + +
    + + + + +
    +
    +
    + type: str + + +
    + + + + +
    +
    +
    + version: int + + +
    + + + + +
    +
    +
    + model_config = +{} + + +
    + + + + +
    +
    +
    + model_fields = + + {'theme': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True)} + + +
    + + + + +
    +
    +
    + model_computed_fields = +{} + + +
    + + + + +
    +
    +
    Inherited Members
    +
    +
    pydantic.main.BaseModel
    +
    BaseModel
    +
    model_extra
    +
    model_fields_set
    +
    model_construct
    +
    model_copy
    +
    model_dump
    +
    model_dump_json
    +
    model_json_schema
    +
    model_parametrized_name
    +
    model_post_init
    +
    model_rebuild
    +
    model_validate
    +
    model_validate_json
    +
    model_validate_strings
    +
    dict
    +
    json
    +
    parse_obj
    +
    parse_raw
    +
    parse_file
    +
    from_orm
    +
    construct
    +
    copy
    +
    schema
    +
    schema_json
    +
    validate
    +
    update_forward_refs
    +
    @@ -1048,31 +1398,37 @@
    Inherited Members
    -
    48class PlaceProps(pydantic.BaseModel):
    -49    """Overture properties model."""
    -50
    -51    id: str
    -52    version: int
    -53    update_time: str
    -54    sources: list[Sources]
    -55    names: Names
    -56    brand: Brand | None = None
    -57    categories: Categories | None = None
    -58    confidence: float = pydantic.Field(ge=0.0, le=1.0)
    -59    websites: list[str] | None = None
    -60    socials: list[str] | None = None
    -61    phones: list[str] | None = None
    -62    addresses: list[Addresses]
    +            
    58class PlaceProps(BaseModel):
    +59    """Overture properties model.
    +60
    +61    Use this model directly if you want to manipulate the `place` properties yourself.
    +62    """
    +63
    +64    id: Optional[str] = None
    +65    version: int
    +66    update_time: str
    +67    sources: List[Sources]
    +68    names: Names
    +69    brand: Optional[Brand] = None
    +70    categories: Optional[Categories] = None
    +71    confidence: float = Field(ge=0.0, le=1.0)
    +72    websites: Optional[List[AnyUrl]] = None
    +73    socials: Optional[List[AnyUrl]] = None
    +74    emails: Optional[List[str]] = None
    +75    phones: Optional[List[str]] = None
    +76    addresses: List[Address]
     

    Overture properties model.

    + +

    Use this model directly if you want to manipulate the place properties yourself.

    - id: str + id: Optional[str]
    @@ -1105,7 +1461,7 @@
    Inherited Members
    - sources: list[Sources] + sources: List[Sources]
    @@ -1127,7 +1483,7 @@
    Inherited Members
    - brand: Brand | None + brand: Optional[Brand]
    @@ -1138,7 +1494,7 @@
    Inherited Members
    - categories: Categories | None + categories: Optional[Categories]
    @@ -1160,7 +1516,7 @@
    Inherited Members
    - websites: list[str] | None + websites: Optional[List[pydantic_core._pydantic_core.Url]]
    @@ -1171,7 +1527,7 @@
    Inherited Members
    - socials: list[str] | None + socials: Optional[List[pydantic_core._pydantic_core.Url]]
    @@ -1179,10 +1535,21 @@
    Inherited Members
    +
    +
    +
    + emails: Optional[List[str]] + + +
    + + + +
    - phones: list[str] | None + phones: Optional[List[str]]
    @@ -1193,7 +1560,7 @@
    Inherited Members
    - addresses: list[Addresses] + addresses: List[Address]
    @@ -1218,7 +1585,7 @@
    Inherited Members
    model_fields = - {'id': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True), 'update_time': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=list[Sources], required=True), 'names': FieldInfo(annotation=Names, required=True), 'brand': FieldInfo(annotation=Union[Brand, NoneType], required=False, default=None), 'categories': FieldInfo(annotation=Union[Categories, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=True, metadata=[Ge(ge=0.0), Le(le=1.0)]), 'websites': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'socials': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'phones': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'addresses': FieldInfo(annotation=list[Addresses], required=True)} + {'id': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'version': FieldInfo(annotation=int, required=True), 'update_time': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=List[Sources], required=True), 'names': FieldInfo(annotation=Names, required=True), 'brand': FieldInfo(annotation=Union[Brand, NoneType], required=False, default=None), 'categories': FieldInfo(annotation=Union[Categories, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=True, metadata=[Ge(ge=0.0), Le(le=1.0)]), 'websites': FieldInfo(annotation=Union[List[Url], NoneType], required=False, default=None), 'socials': FieldInfo(annotation=Union[List[Url], NoneType], required=False, default=None), 'emails': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'phones': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'addresses': FieldInfo(annotation=List[Address], required=True)}
    @@ -1285,41 +1652,44 @@
    Inherited Members
    -
    65class ConfidenceError(Exception):
    -66    """
    -67    Confidence error exception.
    -68
    -69    This exception is raised when the confidence level of an item is too low.
    -70    It contains the original confidence level and the confidence level of the item.
    -71
    -72    Attributes:
    -73        confidence_level (float): The set confidence level.
    -74        confidence_item (float): The confidence of the item.
    -75        message (str): The error message.
    -76    """
    -77
    -78    def __init__(
    -79        self,
    -80        confidence_level: float,
    -81        confidence_item: float,
    -82        message: str = "Confidence in this item is too low.",
    -83    ):
    -84        """@private"""
    -85        self.confidence_level = confidence_level
    -86        self.confidence_item = confidence_item
    -87        self.message = message
    -88        super().__init__(message)
    -89
    -90    def __str__(self):
    -91        conf = f"confidence_level={self.confidence_level}, confidence_item={self.confidence_item}"
    -92        return f"""{self.message} {conf}"""
    +            
     79class ConfidenceError(Exception):
    + 80    """
    + 81    Confidence error exception.
    + 82
    + 83    This exception is raised when the confidence level of an item is below the
    + 84    user-defined level. It contains the original confidence level and the confidence
    + 85    level of the item.
    + 86
    + 87    Attributes:
    + 88        confidence_level (float): The set confidence level.
    + 89        confidence_item (float): The confidence of the item.
    + 90        message (str): The error message.
    + 91    """
    + 92
    + 93    def __init__(
    + 94        self,
    + 95        confidence_level: float,
    + 96        confidence_item: float,
    + 97        message: str = "Confidence in this item is too low.",
    + 98    ) -> None:
    + 99        """@private"""
    +100        self.confidence_level = confidence_level
    +101        self.confidence_item = confidence_item
    +102        self.message = message
    +103        super().__init__(message)
    +104
    +105    def __str__(self) -> str:
    +106        """@private"""
    +107        conf = f"confidence_level={self.confidence_level}, confidence_item={self.confidence_item}"
    +108        return f"""{self.message} {conf}"""
     

    Confidence error exception.

    -

    This exception is raised when the confidence level of an item is too low. -It contains the original confidence level and the confidence level of the item.

    +

    This exception is raised when the confidence level of an item is below the +user-defined level. It contains the original confidence level and the confidence +level of the item.

    Attributes:
    @@ -1387,32 +1757,33 @@
    Inherited Members
    -
     95class UnmatchedError(Exception):
    - 96    """
    - 97    Unmatched category error.
    - 98
    - 99    This exception is raised when an item's Overture category does not have a
    -100    corresponding OSM definition. Edit
    -101    [the OSM Wiki page](https://wiki.openstreetmap.org/wiki/Overture_categories)
    -102    to add a definition to this category.
    -103
    -104    Attributes:
    -105        category (str): The Overture category that is unmatched.
    -106        message (str): The error message.
    -107    """
    -108
    -109    def __init__(
    -110        self,
    -111        category: str,
    -112        message: str = "Overture category is unmatched.",
    -113    ):
    -114        """@private"""
    -115        self.category = category
    -116        self.message = message
    -117        super().__init__(message)
    -118
    -119    def __str__(self):
    -120        return f"{self.message} {{category={self.category}}}"
    +            
    111class UnmatchedError(Exception):
    +112    """
    +113    Unmatched category error.
    +114
    +115    This exception is raised when an item's Overture category does not have a
    +116    corresponding OSM definition. Edit
    +117    [the OSM Wiki page](https://wiki.openstreetmap.org/wiki/Overture_categories)
    +118    to add a definition to this category.
    +119
    +120    Attributes:
    +121        category (str): The Overture category that is unmatched.
    +122        message (str): The error message.
    +123    """
    +124
    +125    def __init__(
    +126        self,
    +127        category: str,
    +128        message: str = "Overture category is unmatched.",
    +129    ) -> None:
    +130        """@private"""
    +131        self.category = category
    +132        self.message = message
    +133        super().__init__(message)
    +134
    +135    def __str__(self) -> str:
    +136        """@private"""
    +137        return f"{self.message} {{category={self.category}}}"
     
    @@ -1466,6 +1837,588 @@
    Inherited Members
    +
    + +
    + + class + BuildingProps(pydantic.main.BaseModel): + + + +
    + +
    140class BuildingProps(BaseModel):
    +141    """Overture building properties.
    +142
    +143    Use this model directly if you want to manipulate the `building` properties yourself.
    +144    """
    +145
    +146    version: int
    +147    class_: str = Field(alias="class")
    +148    subtype: str
    +149    sources: List[Sources]
    +150    height: Optional[float] = None
    +151    is_underground: Optional[bool] = None
    +152    num_floors: Optional[int] = None
    +153    num_floors_underground: Optional[int] = None
    +154    min_height: Optional[float] = None
    +155    min_floor: Optional[int] = None
    +156    facade_color: Optional[str] = None
    +157    facade_material: Optional[str] = None
    +158    roof_material: Optional[str] = None
    +159    roof_shape: Optional[str] = None
    +160    roof_direction: Optional[str] = None
    +161    roof_orientation: Optional[str] = None
    +162    roof_color: Optional[str] = None
    +163    roof_height: Optional[float] = None
    +
    + + +

    Overture building properties.

    + +

    Use this model directly if you want to manipulate the building properties yourself.

    +
    + + +
    +
    + version: int + + +
    + + + + +
    +
    +
    + class_: str + + +
    + + + + +
    +
    +
    + subtype: str + + +
    + + + + +
    +
    +
    + sources: List[Sources] + + +
    + + + + +
    +
    +
    + height: Optional[float] + + +
    + + + + +
    +
    +
    + is_underground: Optional[bool] + + +
    + + + + +
    +
    +
    + num_floors: Optional[int] + + +
    + + + + +
    +
    +
    + num_floors_underground: Optional[int] + + +
    + + + + +
    +
    +
    + min_height: Optional[float] + + +
    + + + + +
    +
    +
    + min_floor: Optional[int] + + +
    + + + + +
    +
    +
    + facade_color: Optional[str] + + +
    + + + + +
    +
    +
    + facade_material: Optional[str] + + +
    + + + + +
    +
    +
    + roof_material: Optional[str] + + +
    + + + + +
    +
    +
    + roof_shape: Optional[str] + + +
    + + + + +
    +
    +
    + roof_direction: Optional[str] + + +
    + + + + +
    +
    +
    + roof_orientation: Optional[str] + + +
    + + + + +
    +
    +
    + roof_color: Optional[str] + + +
    + + + + +
    +
    +
    + roof_height: Optional[float] + + +
    + + + + +
    +
    +
    + model_config = +{} + + +
    + + + + +
    +
    +
    + model_fields = + + {'version': FieldInfo(annotation=int, required=True), 'class_': FieldInfo(annotation=str, required=True, alias='class', alias_priority=2), 'subtype': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=List[Sources], required=True), 'height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'is_underground': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'num_floors': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'num_floors_underground': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'min_height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'min_floor': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'facade_color': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'facade_material': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_material': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_shape': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_direction': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_orientation': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_color': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None)} + + +
    + + + + +
    +
    +
    + model_computed_fields = +{} + + +
    + + + + +
    +
    +
    Inherited Members
    +
    +
    pydantic.main.BaseModel
    +
    BaseModel
    +
    model_extra
    +
    model_fields_set
    +
    model_construct
    +
    model_copy
    +
    model_dump
    +
    model_dump_json
    +
    model_json_schema
    +
    model_parametrized_name
    +
    model_post_init
    +
    model_rebuild
    +
    model_validate
    +
    model_validate_json
    +
    model_validate_strings
    +
    dict
    +
    json
    +
    parse_obj
    +
    parse_raw
    +
    parse_file
    +
    from_orm
    +
    construct
    +
    copy
    +
    schema
    +
    schema_json
    +
    validate
    +
    update_forward_refs
    + +
    +
    +
    +
    +
    + +
    + + class + AddressLevel(pydantic.main.BaseModel): + + + +
    + +
    166class AddressLevel(BaseModel):
    +167    """Overture address level model."""
    +168
    +169    value: str
    +
    + + +

    Overture address level model.

    +
    + + +
    +
    + value: str + + +
    + + + + +
    +
    +
    + model_config = +{} + + +
    + + + + +
    +
    +
    + model_fields = +{'value': FieldInfo(annotation=str, required=True)} + + +
    + + + + +
    +
    +
    + model_computed_fields = +{} + + +
    + + + + +
    +
    +
    Inherited Members
    +
    +
    pydantic.main.BaseModel
    +
    BaseModel
    +
    model_extra
    +
    model_fields_set
    +
    model_construct
    +
    model_copy
    +
    model_dump
    +
    model_dump_json
    +
    model_json_schema
    +
    model_parametrized_name
    +
    model_post_init
    +
    model_rebuild
    +
    model_validate
    +
    model_validate_json
    +
    model_validate_strings
    +
    dict
    +
    json
    +
    parse_obj
    +
    parse_raw
    +
    parse_file
    +
    from_orm
    +
    construct
    +
    copy
    +
    schema
    +
    schema_json
    +
    validate
    +
    update_forward_refs
    + +
    +
    +
    +
    +
    + +
    + + class + AddressProps(OvertureBase): + + + +
    + +
    172class AddressProps(OvertureBase):
    +173    """Overture address properties.
    +174
    +175    Use this model directly if you want to manipulate the `address` properties yourself.
    +176    """
    +177
    +178    number: Optional[str] = Field(serialization_alias="addr:housenumber")
    +179    street: Optional[str] = Field(serialization_alias="addr:street")
    +180    postcode: Optional[str] = Field(serialization_alias="addr:postcode")
    +181    country: Optional[str] = Field(serialization_alias="addr:country")
    +182    address_levels: Optional[List[AddressLevel]] = Field(default_factory=list)
    +
    + + +

    Overture address properties.

    + +

    Use this model directly if you want to manipulate the address properties yourself.

    +
    + + +
    +
    + number: Optional[str] + + +
    + + + + +
    +
    +
    + street: Optional[str] + + +
    + + + + +
    +
    +
    + postcode: Optional[str] + + +
    + + + + +
    +
    +
    + country: Optional[str] + + +
    + + + + +
    +
    +
    + address_levels: Optional[List[AddressLevel]] + + +
    + + + + +
    +
    +
    + model_config = +{} + + +
    + + + + +
    +
    +
    + model_fields = + + {'theme': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True), 'number': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:housenumber'), 'street': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:street'), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:postcode'), 'country': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:country'), 'address_levels': FieldInfo(annotation=Union[List[AddressLevel], NoneType], required=False, default_factory=list)} + + +
    + + + + +
    +
    +
    + model_computed_fields = +{} + + +
    + + + + +
    +
    +
    Inherited Members
    +
    +
    pydantic.main.BaseModel
    +
    BaseModel
    +
    model_extra
    +
    model_fields_set
    +
    model_construct
    +
    model_copy
    +
    model_dump
    +
    model_dump_json
    +
    model_json_schema
    +
    model_parametrized_name
    +
    model_post_init
    +
    model_rebuild
    +
    model_validate
    +
    model_validate_json
    +
    model_validate_strings
    +
    dict
    +
    json
    +
    parse_obj
    +
    parse_raw
    +
    parse_file
    +
    from_orm
    +
    construct
    +
    copy
    +
    schema
    +
    schema_json
    +
    validate
    +
    update_forward_refs
    + +
    + +
    +
    +
    + \ No newline at end of file diff --git a/docs/search.js b/docs/search.js index b9f8915..89647e3 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();ooverturetoosm is a Python package to convert objects tagged in the \nOverture schema for use in OSM. Only Overture's places layer is currently supported.

    \n"}, {"fullname": "overturetoosm.objects", "modulename": "overturetoosm.objects", "kind": "module", "doc": "

    Pydantic models needed throughout the project.

    \n"}, {"fullname": "overturetoosm.objects.Sources", "modulename": "overturetoosm.objects", "qualname": "Sources", "kind": "class", "doc": "

    Overture sources model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Sources.property", "modulename": "overturetoosm.objects", "qualname": "Sources.property", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Sources.dataset", "modulename": "overturetoosm.objects", "qualname": "Sources.dataset", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Sources.record_id", "modulename": "overturetoosm.objects", "qualname": "Sources.record_id", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Sources.confidence", "modulename": "overturetoosm.objects", "qualname": "Sources.confidence", "kind": "variable", "doc": "

    \n", "annotation": ": float | None"}, {"fullname": "overturetoosm.objects.Sources.model_config", "modulename": "overturetoosm.objects", "qualname": "Sources.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Sources.model_fields", "modulename": "overturetoosm.objects", "qualname": "Sources.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'property': FieldInfo(annotation=str, required=True), 'dataset': FieldInfo(annotation=str, required=True), 'record_id': FieldInfo(annotation=str, required=True), 'confidence': FieldInfo(annotation=Union[float, NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Sources.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Sources.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Names", "modulename": "overturetoosm.objects", "qualname": "Names", "kind": "class", "doc": "

    Overture names model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Names.primary", "modulename": "overturetoosm.objects", "qualname": "Names.primary", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Names.common", "modulename": "overturetoosm.objects", "qualname": "Names.common", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Names.rules", "modulename": "overturetoosm.objects", "qualname": "Names.rules", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Names.model_config", "modulename": "overturetoosm.objects", "qualname": "Names.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Names.model_fields", "modulename": "overturetoosm.objects", "qualname": "Names.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'primary': FieldInfo(annotation=str, required=True), 'common': FieldInfo(annotation=Union[str, NoneType], required=True), 'rules': FieldInfo(annotation=Union[str, NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Names.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Names.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Addresses", "modulename": "overturetoosm.objects", "qualname": "Addresses", "kind": "class", "doc": "

    Overture addresses model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Addresses.freeform", "modulename": "overturetoosm.objects", "qualname": "Addresses.freeform", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Addresses.locality", "modulename": "overturetoosm.objects", "qualname": "Addresses.locality", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Addresses.postcode", "modulename": "overturetoosm.objects", "qualname": "Addresses.postcode", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Addresses.region", "modulename": "overturetoosm.objects", "qualname": "Addresses.region", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Addresses.country", "modulename": "overturetoosm.objects", "qualname": "Addresses.country", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Addresses.model_config", "modulename": "overturetoosm.objects", "qualname": "Addresses.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Addresses.model_fields", "modulename": "overturetoosm.objects", "qualname": "Addresses.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'freeform': FieldInfo(annotation=Union[str, NoneType], required=True), 'locality': FieldInfo(annotation=Union[str, NoneType], required=True), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True), 'region': FieldInfo(annotation=Union[str, NoneType], required=True), 'country': FieldInfo(annotation=Union[str, NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Addresses.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Addresses.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Categories", "modulename": "overturetoosm.objects", "qualname": "Categories", "kind": "class", "doc": "

    Overture categories model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Categories.main", "modulename": "overturetoosm.objects", "qualname": "Categories.main", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Categories.alternate", "modulename": "overturetoosm.objects", "qualname": "Categories.alternate", "kind": "variable", "doc": "

    \n", "annotation": ": list[str] | None"}, {"fullname": "overturetoosm.objects.Categories.model_config", "modulename": "overturetoosm.objects", "qualname": "Categories.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Categories.model_fields", "modulename": "overturetoosm.objects", "qualname": "Categories.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'main': FieldInfo(annotation=str, required=True), 'alternate': FieldInfo(annotation=Union[list[str], NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Categories.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Categories.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Brand", "modulename": "overturetoosm.objects", "qualname": "Brand", "kind": "class", "doc": "

    Overture brand model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Brand.wikidata", "modulename": "overturetoosm.objects", "qualname": "Brand.wikidata", "kind": "variable", "doc": "

    \n", "annotation": ": str | None"}, {"fullname": "overturetoosm.objects.Brand.names", "modulename": "overturetoosm.objects", "qualname": "Brand.names", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Names"}, {"fullname": "overturetoosm.objects.Brand.model_config", "modulename": "overturetoosm.objects", "qualname": "Brand.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Brand.model_fields", "modulename": "overturetoosm.objects", "qualname": "Brand.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'wikidata': FieldInfo(annotation=Union[str, NoneType], required=True), 'names': FieldInfo(annotation=Names, required=True)}"}, {"fullname": "overturetoosm.objects.Brand.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Brand.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.PlaceProps", "modulename": "overturetoosm.objects", "qualname": "PlaceProps", "kind": "class", "doc": "

    Overture properties model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.PlaceProps.id", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.id", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.PlaceProps.version", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.version", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "overturetoosm.objects.PlaceProps.update_time", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.update_time", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.PlaceProps.sources", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.sources", "kind": "variable", "doc": "

    \n", "annotation": ": list[overturetoosm.objects.Sources]"}, {"fullname": "overturetoosm.objects.PlaceProps.names", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.names", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Names"}, {"fullname": "overturetoosm.objects.PlaceProps.brand", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.brand", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Brand | None"}, {"fullname": "overturetoosm.objects.PlaceProps.categories", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.categories", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Categories | None"}, {"fullname": "overturetoosm.objects.PlaceProps.confidence", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.confidence", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "overturetoosm.objects.PlaceProps.websites", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.websites", "kind": "variable", "doc": "

    \n", "annotation": ": list[str] | None"}, {"fullname": "overturetoosm.objects.PlaceProps.socials", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.socials", "kind": "variable", "doc": "

    \n", "annotation": ": list[str] | None"}, {"fullname": "overturetoosm.objects.PlaceProps.phones", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.phones", "kind": "variable", "doc": "

    \n", "annotation": ": list[str] | None"}, {"fullname": "overturetoosm.objects.PlaceProps.addresses", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.addresses", "kind": "variable", "doc": "

    \n", "annotation": ": list[overturetoosm.objects.Addresses]"}, {"fullname": "overturetoosm.objects.PlaceProps.model_config", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.PlaceProps.model_fields", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'id': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True), 'update_time': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=list[Sources], required=True), 'names': FieldInfo(annotation=Names, required=True), 'brand': FieldInfo(annotation=Union[Brand, NoneType], required=False, default=None), 'categories': FieldInfo(annotation=Union[Categories, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=True, metadata=[Ge(ge=0.0), Le(le=1.0)]), 'websites': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'socials': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'phones': FieldInfo(annotation=Union[list[str], NoneType], required=False, default=None), 'addresses': FieldInfo(annotation=list[Addresses], required=True)}"}, {"fullname": "overturetoosm.objects.PlaceProps.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.ConfidenceError", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError", "kind": "class", "doc": "

    Confidence error exception.

    \n\n

    This exception is raised when the confidence level of an item is too low.\nIt contains the original confidence level and the confidence level of the item.

    \n\n
    Attributes:
    \n\n
      \n
    • confidence_level (float): The set confidence level.
    • \n
    • confidence_item (float): The confidence of the item.
    • \n
    • message (str): The error message.
    • \n
    \n", "bases": "builtins.Exception"}, {"fullname": "overturetoosm.objects.ConfidenceError.confidence_level", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.confidence_level", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.ConfidenceError.confidence_item", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.confidence_item", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.ConfidenceError.message", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.message", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.UnmatchedError", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError", "kind": "class", "doc": "

    Unmatched category error.

    \n\n

    This exception is raised when an item's Overture category does not have a\ncorresponding OSM definition. Edit\nthe OSM Wiki page\nto add a definition to this category.

    \n\n
    Attributes:
    \n\n
      \n
    • category (str): The Overture category that is unmatched.
    • \n
    • message (str): The error message.
    • \n
    \n", "bases": "builtins.Exception"}, {"fullname": "overturetoosm.objects.UnmatchedError.category", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError.category", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.UnmatchedError.message", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError.message", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.places", "modulename": "overturetoosm.places", "kind": "module", "doc": "

    Convert Overture's places features to OSM tags.

    \n"}, {"fullname": "overturetoosm.places.process_props", "modulename": "overturetoosm.places", "qualname": "process_props", "kind": "function", "doc": "

    Convert Overture's properties to OSM tags.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm.places import process_props\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n\n    for feature in contents["features"]:\n        feature["properties"] = process_props(feature["properties"])\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(contents, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • region_tag (str, optional): What tag to convert Overture's region tag to.\nDefaults to addr:state.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • unmatched (Literal[\"error\", \"force\", \"ignore\"], optional): How to handle\nunmatched Overture categories. The \"error\" option raises an UnmatchedError\nexception, \"force\" puts the category into the type key, and \"ignore\"\nonly returns other properties. Defaults to \"ignore\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n\n
    Raises:
    \n\n
      \n
    • UnmatchedError: Raised if unmatched is set to error and the Overture category\nhas no OSM definition.
    • \n
    • ConfidenceError: Raised if the confidence level is set above a feature's confidence.
    • \n
    \n", "signature": "(\tprops: dict,\tregion_tag: str = 'addr:state',\tconfidence: float = 0.0,\tunmatched: Literal['error', 'force', 'ignore'] = 'ignore') -> dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.places.process_geojson", "modulename": "overturetoosm.places", "qualname": "process_geojson", "kind": "function", "doc": "

    Convert an Overture place GeoJSON to one that follows OSM's schema.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm.places import process_geojson\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n    geojson = process_geojson(contents)\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(geojson, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • geojson (dict): The dictionary representation of the Overture GeoJSON.
    • \n
    • region_tag (str, optional): What tag to convert Overture's region tag to.\nDefaults to addr:state.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • unmatched (Literal[\"error\", \"force\", \"ignore\"], optional): How to handle unmatched Overture\ncategories. The \"error\" option skips unmatched places, \"force\" puts the\ncategory into the type key, and \"ignore\" only returns other properties.\nDefaults to \"ignore\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict: The dictionary representation of the GeoJSON that follows OSM's schema.

    \n
    \n", "signature": "(\tgeojson: dict,\tregion_tag: str = 'addr:state',\tconfidence: float = 0.0,\tunmatched: Literal['error', 'force', 'ignore'] = 'ignore') -> dict:", "funcdef": "def"}, {"fullname": "overturetoosm.resources", "modulename": "overturetoosm.resources", "kind": "module", "doc": "

    A mapping of Overture tags to OSM tags.

    \n"}, {"fullname": "overturetoosm.resources.places_tags", "modulename": "overturetoosm.resources", "qualname": "places_tags", "kind": "variable", "doc": "

    dict[str, dict[str, str]]: A mapping of Overture to OSM place tags,\nexcluding blank values. This is downstream from the scripts/tag.json\nfile.

    \n", "annotation": ": dict[str, dict[str, str]]", "default_value": "{'eat_and_drink': {'amenity': 'restaurant'}, 'restaurant': {'amenity': 'restaurant'}, 'afghan_restaurant': {'amenity': 'restaurant', 'cuisine': 'afghan'}, 'african_restaurant': {'amenity': 'restaurant', 'cuisine': 'african'}, 'ethiopian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ethiopian'}, 'senegalese_restaurant': {'amenity': 'restaurant', 'cuisine': 'senegalese'}, 'south_african_restaurant': {'amenity': 'restaurant', 'cuisine': 'south_african'}, 'moroccan_restaurant': {'amenity': 'restaurant', 'cuisine': 'moroccan'}, 'nigerian_restaurant': {'amenity': 'restaurant', 'cuisine': 'nigerian'}, 'american_restaurant': {'amenity': 'restaurant', 'cuisine': 'american'}, 'arabian_restaurant': {'amenity': 'restaurant', 'cuisine': 'arab'}, 'belgian_restaurant': {'amenity': 'restaurant', 'cuisine': 'belgian'}, 'latin_american_restaurant': {'amenity': 'restaurant', 'cuisine': 'latin_american'}, 'argentine_restaurant': {'amenity': 'restaurant', 'cuisine': 'argentinian'}, 'belizean_restaurant': {'amenity': 'restaurant', 'cuisine': 'belizean'}, 'bolivian_restaurant': {'amenity': 'restaurant', 'cuisine': 'bolivian'}, 'brazilian_restaurant': {'amenity': 'restaurant', 'cuisine': 'brazilian'}, 'chilean_restaurant': {'amenity': 'restaurant', 'cuisine': 'chilean'}, 'colombian_restaurant': {'amenity': 'restaurant', 'cuisine': 'colombian'}, 'costa_rican_restaurant': {'amenity': 'restaurant', 'cuisine': 'costa_rican'}, 'cuban_restaurant': {'amenity': 'restaurant', 'cuisine': 'cuban'}, 'ecuadorian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ecuadorian'}, 'guatemalan_restaurant': {'amenity': 'restaurant', 'cuisine': 'guatemalan'}, 'honduran_restaurant': {'amenity': 'restaurant', 'cuisine': 'honduran'}, 'mexican_restaurant': {'amenity': 'restaurant', 'cuisine': 'mexican'}, 'nicaraguan_restaurant': {'amenity': 'restaurant', 'cuisine': 'nicaraguan'}, 'panamanian_restaurant': {'amenity': 'restaurant', 'cuisine': 'panamanian'}, 'paraguayan_restaurant': {'amenity': 'restaurant', 'cuisine': 'paraguayan'}, 'peruvian_restaurant': {'amenity': 'restaurant', 'cuisine': 'peruvian'}, 'puerto_rican_restaurant': {'amenity': 'restaurant'}, 'salvadoran_restaurant': {'amenity': 'restaurant'}, 'texmex_restaurant': {'amenity': 'restaurant', 'cuisine': 'tex-mex'}, 'uruguayan_restaurant': {'amenity': 'restaurant'}, 'venezuelan_restaurant': {'amenity': 'restaurant', 'cuisine': 'venezuelan'}, 'middle_eastern_restaurant': {'amenity': 'restaurant', 'cuisine': 'middle_eastern'}, 'armenian_restaurant': {'amenity': 'restaurant', 'cuisine': 'armenian'}, 'azerbaijani_restaurant': {'amenity': 'restaurant'}, 'egyptian_restaurant': {'amenity': 'restaurant', 'cuisine': 'egyptian'}, 'georgian_restaurant': {'amenity': 'restaurant', 'cuisine': 'georgian'}, 'israeli_restaurant': {'amenity': 'restaurant', 'cuisine': 'israeli'}, 'kofta_restaurant': {'amenity': 'restaurant'}, 'kurdish_restaurant': {'amenity': 'restaurant'}, 'lebanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'lebanese'}, 'persian_iranian_restaurant': {'amenity': 'restaurant', 'cuisine': 'persian'}, 'syrian_restaurant': {'amenity': 'restaurant', 'cuisine': 'syrian'}, 'turkish_restaurant': {'amenity': 'restaurant', 'cuisine': 'turkish'}, 'asian_restaurant': {'amenity': 'restaurant', 'cuisine': 'asian'}, 'asian_fusion_restaurant': {'amenity': 'restaurant', 'cuisine': 'fusion'}, 'pan_asian_restaurant': {'amenity': 'restaurant'}, 'burmese_restaurant': {'amenity': 'restaurant'}, 'cambodian_restaurant': {'amenity': 'restaurant', 'cuisine': 'cambodian'}, 'chinese_restaurant': {'amenity': 'restaurant', 'cuisine': 'chinese'}, 'dim_sum_restaurant': {'amenity': 'restaurant'}, 'filipino_restaurant': {'amenity': 'restaurant', 'cuisine': 'filipino'}, 'indo_chinese_restaurant': {'amenity': 'restaurant'}, 'indonesian_restaurant': {'amenity': 'restaurant', 'cuisine': 'indonesian'}, 'japanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'japanese'}, 'korean_restaurant': {'amenity': 'restaurant', 'cuisine': 'korean'}, 'sushi_restaurant': {'amenity': 'restaurant', 'cuisine': 'sushi'}, 'laotian_restaurant': {'amenity': 'restaurant'}, 'malaysian_restaurant': {'amenity': 'restaurant', 'cuisine': 'malaysian'}, 'mongolian_restaurant': {'amenity': 'restaurant', 'cuisine': 'mongolian'}, 'noodles_restaurant': {'amenity': 'restaurant', 'cuisine': 'noodle'}, 'singaporean_restaurant': {'amenity': 'restaurant', 'cuisine': 'singaporean'}, 'taiwanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'taiwanese'}, 'thai_restaurant': {'amenity': 'restaurant', 'cuisine': 'thai'}, 'vietnamese_restaurant': {'amenity': 'restaurant', 'cuisine': 'vietnamese'}, 'australian_restaurant': {'amenity': 'restaurant', 'cuisine': 'australian'}, 'austrian_restaurant': {'amenity': 'restaurant', 'cuisine': 'austrian'}, 'bangladeshi_restaurant': {'amenity': 'restaurant', 'cuisine': 'bangladeshi'}, 'indian_restaurant': {'amenity': 'restaurant', 'cuisine': 'indian'}, 'basque_restaurant': {'amenity': 'restaurant', 'cuisine': 'basque'}, 'british_restaurant': {'amenity': 'restaurant', 'cuisine': 'british'}, 'eastern_european_restaurant': {'amenity': 'restaurant'}, 'belarusian_restaurant': {'amenity': 'restaurant'}, 'bulgarian_restaurant': {'amenity': 'restaurant', 'cuisine': 'bulgarian'}, 'romanian_restaurant': {'amenity': 'restaurant', 'cuisine': 'romanian'}, 'tatar_restaurant': {'amenity': 'restaurant'}, 'ukrainian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ukrainian'}, 'french_restaurant': {'amenity': 'restaurant', 'cuisine': 'french'}, 'cajun_creole_restaurant': {'amenity': 'restaurant', 'cuisine': 'cajun'}, 'canadian_restaurant': {'amenity': 'restaurant'}, 'caribbean_restaurant': {'amenity': 'restaurant', 'cuisine': 'caribbean'}, 'dominican_restaurant': {'amenity': 'restaurant'}, 'haitian_restaurant': {'amenity': 'restaurant'}, 'jamaican_restaurant': {'amenity': 'restaurant', 'cuisine': 'jamaican'}, 'trinidadian_restaurant': {'amenity': 'restaurant'}, 'german_restaurant': {'amenity': 'restaurant', 'cuisine': 'german'}, 'catalan_restaurant': {'amenity': 'restaurant'}, 'italian_restaurant': {'amenity': 'restaurant', 'cuisine': 'italian'}, 'czech_restaurant': {'amenity': 'restaurant', 'cuisine': 'czech'}, 'mediterranean_restaurant': {'amenity': 'restaurant', 'cuisine': 'mediterranean'}, 'greek_restaurant': {'amenity': 'restaurant', 'cuisine': 'greek'}, 'guamanian_restaurant': {'amenity': 'restaurant'}, 'hawaiian_restaurant': {'amenity': 'restaurant', 'cuisine': 'hawaiian'}, 'himalayan_nepalese_restaurant': {'amenity': 'restaurant'}, 'hungarian_restaurant': {'amenity': 'restaurant', 'cuisine': 'hungarian'}, 'iberian_restaurant': {'amenity': 'restaurant'}, 'irish_restaurant': {'amenity': 'restaurant', 'cuisine': 'irish'}, 'jewish_restaurant': {'amenity': 'restaurant'}, 'international_restaurant': {'amenity': 'restaurant'}, 'european_restaurant': {'amenity': 'restaurant'}, 'oriental_restaurant': {'amenity': 'restaurant'}, 'pakistani_restaurant': {'amenity': 'restaurant', 'cuisine': 'pakistani'}, 'polish_restaurant': {'amenity': 'restaurant', 'cuisine': 'polish'}, 'polynesian_restaurant': {'amenity': 'restaurant'}, 'portuguese_restaurant': {'amenity': 'restaurant', 'cuisine': 'portuguese'}, 'russian_restaurant': {'amenity': 'restaurant', 'cuisine': 'russian'}, 'scandinavian_restaurant': {'amenity': 'restaurant'}, 'danish_restaurant': {'amenity': 'restaurant'}, 'norwegian_restaurant': {'amenity': 'restaurant'}, 'scottish_restaurant': {'amenity': 'restaurant'}, 'seafood_restaurant': {'amenity': 'restaurant', 'cuisine': 'seafood'}, 'serbo_croation_restaurant': {'amenity': 'restaurant'}, 'slovakian_restaurant': {'amenity': 'restaurant'}, 'southern_restaurant': {'amenity': 'restaurant'}, 'spanish_restaurant': {'amenity': 'restaurant', 'cuisine': 'spanish'}, 'sri_lankan_restaurant': {'amenity': 'restaurant'}, 'swiss_restaurant': {'amenity': 'restaurant'}, 'uzbek_restaurant': {'amenity': 'restaurant'}, 'molecular_gastronomy_restaurant': {'amenity': 'restaurant'}, 'haute_cuisine_restaurant': {'amenity': 'restaurant'}, 'brasserie': {'amenity': 'restaurant'}, 'buffet_restaurant': {'amenity': 'restaurant'}, 'barbecue_restaurant': {'amenity': 'restaurant'}, 'burger_restaurant': {'amenity': 'restaurant', 'cuisine': 'burger'}, 'cheesesteak_restaurant': {'amenity': 'restaurant'}, 'chicken_restaurant': {'amenity': 'restaurant'}, 'chicken_wings_restaurant': {'amenity': 'restaurant'}, 'dog_meat_restaurant': {'amenity': 'restaurant'}, 'dumpling_restaurant': {'amenity': 'restaurant'}, 'fast_food_restaurant': {'amenity': 'fast_food'}, 'fishchbroetchen_restaurant': {'amenity': 'restaurant'}, 'fish_restaurant': {'amenity': 'restaurant'}, 'fish_and_chips_restaurant': {'amenity': 'restaurant'}, 'fondue_restaurant': {'amenity': 'restaurant'}, 'gluten_free_restaurant': {'amenity': 'restaurant'}, 'baozi_restaurant': {'amenity': 'restaurant'}, 'halal_restaurant': {'amenity': 'restaurant'}, 'bistro': {'amenity': 'restaurant'}, 'health_food_restaurant': {'amenity': 'restaurant'}, 'kosher_restaurant': {'amenity': 'restaurant'}, 'comfort_food_restaurant': {'amenity': 'restaurant'}, 'meat_restaurant': {'amenity': 'restaurant'}, 'curry_sausage_restaurant': {'amenity': 'restaurant'}, 'diner': {'amenity': 'restaurant'}, 'nasi_restaurant': {'amenity': 'restaurant'}, 'flatbread_restaurant': {'amenity': 'restaurant'}, 'food_court': {'amenity': 'food_court'}, 'gastropub': {'amenity': 'restaurant'}, 'pizza_restaurant': {'amenity': 'restaurant', 'cuisine': 'pizza'}, 'pop_up_restaurant': {'amenity': 'restaurant'}, 'poutinerie_restaurant': {'amenity': 'restaurant'}, 'vegan_restaurant': {'amenity': 'restaurant', 'diet:vegan': 'yes'}, 'vegetarian_restaurant': {'amenity': 'restaurant', 'diet:vegetarian': 'yes'}, 'wok_restaurant': {'amenity': 'restaurant'}, 'wrap_restaurant': {'amenity': 'restaurant'}, 'piadina_restaurant': {'amenity': 'restaurant'}, 'pigs_trotters_restaurant': {'amenity': 'restaurant'}, 'potato_restaurant': {'amenity': 'restaurant'}, 'rotisserie_chicken_restaurant': {'amenity': 'restaurant', 'cuisine': 'chicken'}, 'schnitzel_restaurant': {'amenity': 'restaurant'}, 'steakhouse': {'amenity': 'restaurant', 'cuisine': 'steak_house'}, 'tapas_bar': {'amenity': 'restaurant'}, 'venison_restaurant': {'amenity': 'restaurant'}, 'wild_game_meats_restaurant': {'amenity': 'restaurant'}, 'falafel_restaurant': {'amenity': 'restaurant'}, 'taco_restaurant': {'amenity': 'restaurant', 'cuisine': 'mexican'}, 'hot_dog_restaurant': {'amenity': 'restaurant', 'cuisine': 'american'}, 'soup_restaurant': {'amenity': 'restaurant'}, 'theme_restaurant': {'amenity': 'restaurant'}, 'bar_and_grill_restaurant': {'amenity': 'restaurant'}, 'meatball_restaurant': {'amenity': 'restaurant'}, 'waffle_restaurant': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'breakfast_and_brunch_restaurant': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'pancake_house': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'bagel_restaurant': {'amenity': 'restaurant'}, 'bar': {'amenity': 'bar'}, 'beach_bar': {'amenity': 'bar'}, 'beer_bar': {'amenity': 'bar'}, 'beer_garden': {'amenity': 'biergarten'}, 'brewery': {'craft': 'brewery'}, 'bubble_tea': {'amenity': 'cafe', 'cuisine': 'bubble_tea'}, 'cocktail_bar': {'amenity': 'bar'}, 'dive_bar': {'amenity': 'bar'}, 'drive_thru_bar': {'amenity': 'bar', 'drive_through': 'yes'}, 'gay_bar': {'amenity': 'bar', 'lgbtq': 'primary'}, 'hookah_bar': {'amenity': 'bar'}, 'hotel_bar': {'amenity': 'bar'}, 'irish_pub': {'amenity': 'bar', 'cuisine': 'irish'}, 'milk_bar': {'amenity': 'fast_food'}, 'pub': {'amenity': 'pub'}, 'sake_bar': {'amenity': 'bar'}, 'speakeasy': {'amenity': 'bar'}, 'sports_bar': {'amenity': 'bar'}, 'tiki_bar': {'amenity': 'bar'}, 'vermouth_bar': {'amenity': 'bar'}, 'whiskey_bar': {'amenity': 'bar'}, 'wine_bar': {'amenity': 'bar'}, 'piano_bar': {'amenity': 'bar', 'live_music': 'yes'}, 'cafe': {'amenity': 'cafe'}, 'coffee_roastery': {'shop': 'coffee'}, 'tea_room': {'amenity': 'cafe'}, 'coffee_shop': {'amenity': 'cafe', 'cuisine': 'coffee_shop'}, 'accommodation': {'tourism': 'yes'}, 'bed_and_breakfast': {'tourism': 'guest_house', 'guest_house': 'bed_and_breakfast'}, 'cabin': {'tourism': 'chalet'}, 'campground': {'tourism': 'camp_site'}, 'cottage': {'tourism': 'chalet'}, 'guest_house': {'tourism': 'guest_house'}, 'hostel': {'tourism': 'hostel'}, 'hotel': {'tourism': 'hotel'}, 'motel': {'tourism': 'motel'}, 'resort': {'leisure': 'resort'}, 'beach_resort': {'leisure': 'beach_resort'}, 'rv_park': {'tourism': 'caravan_site'}, 'service_apartments': {'tourism': 'apartment'}, 'automotive_dealer': {'shop': 'car'}, 'car_dealer': {'shop': 'car'}, 'motorcycle_dealer': {'shop': 'motorcycle'}, 'used_car_dealer': {'shop': 'car', 'second_hand': 'only'}, 'automotive_services_and_repair': {'amenity': 'car_repair'}, 'auto_body_shop': {'shop': 'car_repair', 'car_repair': 'bodywork'}, 'auto_customization': {'shop': 'car_repair', 'car_repair': 'customization'}, 'auto_detailing': {'shop': 'car_repair', 'car_repair': 'detailing'}, 'auto_electrical_repair': {'shop': 'car_repair', 'car_repair': 'electrical'}, 'auto_glass_service': {'shop': 'car_repair', 'car_repair': 'glass'}, 'car_window_tinting': {'shop': 'car_repair', 'car_repair': 'tinting'}, 'auto_restoration_services': {'shop': 'car_repair', 'car_repair': 'restoration'}, 'auto_security': {'shop': 'car_repair', 'car_repair': 'security'}, 'automotive_consultant': {'office': 'consulting', 'consulting': 'automotive'}, 'automotive_storage_facility': {'amenity': 'parking'}, 'car_wash': {'amenity': 'car_wash'}, 'motorcycle_repair': {'shop': 'motorcycle_repair'}, 'tire_dealer_and_repair': {'shop': 'tyres'}, 'automotive_parts_and_accessories': {'shop': 'car_parts'}, 'gas_station': {'amenity': 'fuel'}, 'truck_gas_station': {'amenity': 'fuel', 'hgv': 'yes'}, 'ev_charging_station': {'amenity': 'charging_station'}, 'automotive_repair': {'shop': 'car_repair'}, 'auto_company': {'shop': 'car'}, 'betting_center': {'shop': 'bookmaker'}, 'bookmakers': {'shop': 'bookmaker'}, 'carousel': {'attraction': 'carousel'}, 'casino': {'amenity': 'casino'}, 'circus': {'amenity': 'theatre', 'theatre:genre': 'circus'}, 'comedy_club': {'amenity': 'theatre', 'theatre:genre': 'comedy'}, 'topic_concert_venue': {'amenity': 'music_venue'}, 'dance_club': {'amenity': 'nightclub'}, 'escape_rooms': {'leisure': 'escape_game'}, 'internet_cafe': {'amenity': 'internet_cafe'}, 'paintball': {'leisure': 'pitch', 'sport': 'paintball'}, 'planetarium': {'amenity': 'planetarium'}, 'stadium_arena': {'leisure': 'stadium'}, 'baseball_stadium': {'leisure': 'pitch', 'sport': 'baseball'}, 'basketball_stadium': {'leisure': 'pitch', 'sport': 'basketball'}, 'cricket_ground': {'leisure': 'pitch', 'sport': 'cricket'}, 'football_stadium': {'leisure': 'pitch', 'sport': 'american_football'}, 'hockey_arena': {'leisure': 'stadium', 'sport': 'hockey'}, 'rugby_stadium': {'leisure': 'stadium', 'sport': 'rugby'}, 'soccer_stadium': {'leisure': 'pitch', 'sport': 'soccer'}, 'tennis_stadium': {'leisure': 'pitch', 'sport': 'tennis'}, 'track_stadium': {'leisure': 'stadium', 'sport': 'track'}, 'theatre': {'amenity': 'theatre'}, 'water_park': {'leisure': 'water_park'}, 'cinema': {'amenity': 'cinema'}, 'drive_in_theatre': {'amenity': 'cinema', 'drive_in': 'yes'}, 'outdoor_movies': {'amenity': 'cinema', 'outdoor': 'yes'}, 'farm': {'shop': 'farm'}, 'attraction_farm': {'shop': 'farm'}, 'psychic': {'shop': 'psychic'}, 'amusement_park': {'tourism': 'theme_park'}, 'aquarium': {'tourism': 'aquarium'}, 'art_gallery': {'tourism': 'gallery'}, 'beach': {'natural': 'beach'}, 'botanical_garden': {'leisure': 'garden', 'garden:type': 'botanical'}, 'canyon': {'natural': 'valley'}, 'castle': {'historic': 'castle'}, 'cave': {'natural': 'cave_entrance'}, 'fort': {'historic': 'fort'}, 'fountain': {'amenity': 'fountain'}, 'lake': {'natural': 'water', 'water': 'lake'}, 'landmark_and_historical_building': {'building': 'yes'}, 'lighthouse': {'man_made': 'lighthouse'}, 'lookout': {'tourism': 'viewpoint'}, 'marina': {'leisure': 'marina'}, 'monument': {'historic': 'monument'}, 'observatory': {'man_made': 'observatory'}, 'palace': {'historic': 'castle', 'castle_type': 'palace'}, 'plaza': {'place': 'square'}, 'ruin': {'historic': 'ruins'}, 'sculpture_statue': {'historic': 'memorial', 'memorial': 'statue'}, 'trail': {'highway': 'path'}, 'hiking_trail': {'highway': 'path', 'sac_scale': 'hiking'}, 'mountain_bike_trails': {'highway': 'path', 'bicycle': 'yes'}, 'waterfall': {'waterway': 'waterfall'}, 'zoo': {'tourism': 'zoo'}, 'petting_zoo': {'tourism': 'zoo', 'zoo': 'petting_zoo'}, 'museum': {'tourism': 'museum'}, 'art_museum': {'tourism': 'gallery'}, 'asian_art_museum': {'tourism': 'gallery'}, 'contemporary_art_museum': {'tourism': 'gallery'}, "children's_museum": {'tourism': 'museum'}, 'costume_museum': {'tourism': 'museum'}, 'decorative_arts_museum': {'tourism': 'gallery'}, 'design_museum': {'tourism': 'museum'}, 'modern_art_museum': {'tourism': 'gallery'}, 'photography_museum': {'tourism': 'gallery'}, 'history_museum': {'tourism': 'museum'}, 'community_museum': {'tourism': 'museum'}, 'military_museum': {'tourism': 'museum'}, 'national_museum': {'tourism': 'museum'}, 'science_museum': {'tourism': 'museum'}, 'state_museum': {'tourism': 'museum'}, 'aviation_museum': {'tourism': 'museum'}, 'sports_museum': {'tourism': 'museum'}, 'park': {'leisure': 'park'}, 'dog_park': {'leisure': 'dog_park'}, 'memorial_park': {'leisure': 'park'}, 'national_park': {'boundary': 'protected_area'}, 'state_park': {'boundary': 'protected_area'}, 'american_football_field': {'leisure': 'pitch', 'sport': 'american_football'}, 'archery_range': {'leisure': 'pitch', 'sport': 'archery'}, 'badminton_court': {'leisure': 'pitch', 'sport': 'badminton'}, 'baseball_field': {'leisure': 'pitch', 'sport': 'baseball'}, 'basketball_court': {'leisure': 'pitch', 'sport': 'basketball'}, 'beach_volleyball_court': {'leisure': 'pitch', 'sport': 'beachvolleyball'}, 'bocce_ball_court': {'leisure': 'pitch', 'sport': 'boules'}, 'bowling_alley': {'leisure': 'bowling_alley'}, 'bubble_soccer_field': {'leisure': 'pitch', 'sport': 'soccer'}, 'disc_golf_course': {'leisure': 'disc_golf_course'}, 'futsal_field': {'leisure': 'pitch', 'sport': 'futsal'}, 'golf_course': {'leisure': 'golf_course'}, 'driving_range': {'golf': 'driving_range'}, 'gym': {'leisure': 'fitness_centre'}, 'handball_court': {'leisure': 'pitch', 'sport': 'handball'}, 'hockey_field': {'leisure': 'pitch', 'sport': 'field_hockey'}, 'horse_riding': {'leisure': 'horse_riding'}, 'miniature_golf_course': {'leisure': 'miniature_golf'}, 'playground': {'leisure': 'playground'}, 'racquetball_court': {'leisure': 'pitch', 'sport': 'racquetball'}, 'rock_climbing_gym': {'leisure': 'fitness_centre', 'sport': 'rock_climbing', 'indoor': 'yes'}, 'rugby_pitch': {'leisure': 'pitch', 'sport': 'rugby'}, 'soccer_field': {'leisure': 'pitch', 'sport': 'soccer'}, 'squash_court': {'leisure': 'pitch', 'sport': 'squash'}, 'swimming_pool': {'leisure': 'swimming_pool'}, 'tennis_court': {'leisure': 'pitch', 'sport': 'tennis'}, 'trampoline_park': {'leisure': 'trampoline_park'}, 'volleyball_court': {'leisure': 'pitch', 'sport': 'volleyball'}, 'dance_school': {'leisure': 'dance', 'dance:teaching': 'yes'}, 'ski_and_snowboard_school': {'amenity': 'school'}, 'surfing_school': {'amenity': 'school'}, 'yoga_studio': {'leisure': 'fitness_centre', 'sport': 'yoga'}, 'fencing_club': {'leisure': 'sports_centre', 'sport': 'fencing'}, 'gymnastics_club': {'leisure': 'sports_centre', 'sport': 'gymnastics'}, 'soccer_club': {'leisure': 'sports_centre', 'sport': 'soccer'}, 'table_tennis_club': {'leisure': 'sports_centre', 'sport': 'table_tennis'}, 'volleyball_club': {'leisure': 'sports_centre', 'sport': 'volleyball'}, 'golf_club': {'leisure': 'golf_course'}, 'indoor_golf_center': {'leisure': 'golf_course', 'golf:course': 'driving_range', 'indoor': 'yes'}, 'martial_arts_club': {'sport': 'martial_arts'}, 'karate_club': {'leisure': 'sports_centre', 'sport': 'karate'}, 'taekwondo_club': {'leisure': 'sports_centre', 'sport': 'taekwondo'}, 'bike_rentals': {'amenity': 'bicycle_rental'}, 'beauty_and_spa': {'amenity': 'spa'}, 'beauty_salon': {'shop': 'beauty'}, 'barber': {'shop': 'hairdresser'}, 'health_spa': {'amenity': 'spa'}, 'massage': {'shop': 'massage'}, 'tattoo_and_piercing': {'shop': 'tattoo', 'piercing': 'yes'}, 'piercing': {'shop': 'tattoo', 'piercing': 'yes'}, 'tattoo': {'shop': 'tattoo'}, 'spas': {'amenity': 'spa'}, 'medical_spa': {'amenity': 'spa'}, 'day_spa': {'amenity': 'spa'}, 'college_university': {'amenity': 'university', 'isced:level': '5'}, 'school': {'amenity': 'school'}, 'charter_school': {'amenity': 'school'}, 'elementary_school': {'amenity': 'school', 'isced:level': '1'}, 'high_school': {'amenity': 'school', 'isced:level': '3'}, 'middle_school': {'amenity': 'school', 'isced:level': '2'}, 'montessori_school': {'amenity': 'school'}, 'preschool': {'amenity': 'school', 'isced:level': '0'}, 'private_school': {'amenity': 'school'}, 'public_school': {'amenity': 'school'}, 'religious_school': {'amenity': 'school'}, 'waldorf_school': {'amenity': 'school'}, 'specialty_school': {'amenity': 'school'}, 'art_school': {'amenity': 'school', 'school': 'art'}, 'bartending_school': {'amenity': 'school', 'school': 'bartending'}, 'circus_school': {'amenity': 'school', 'school': 'circus'}, 'cooking_school': {'amenity': 'school', 'school': 'cooking'}, 'cosmetology_school': {'amenity': 'school', 'school': 'cosmetology'}, 'drama_school': {'amenity': 'school', 'school': 'drama'}, 'driving_school': {'amenity': 'driving_school'}, 'dui_school': {'amenity': 'school'}, 'flight_school': {'amenity': 'school'}, 'language_school': {'amenity': 'language_school'}, 'massage_school': {'amenity': 'school'}, 'medical_school': {'amenity': 'school'}, 'music_school': {'amenity': 'music_school'}, 'nursing_school': {'amenity': 'school'}, 'sports_school': {'amenity': 'school'}, 'traffic_school': {'amenity': 'school'}, 'vocational_and_technical_school': {'amenity': 'school'}, 'financial_service': {'office': 'financial'}, 'accountant': {'office': 'accountant'}, 'atms': {'amenity': 'atm'}, 'bank_credit_union': {'amenity': 'bank'}, 'banks': {'amenity': 'bank'}, 'credit_union': {'amenity': 'bank'}, 'business_brokers': {'office': 'financial_advisor'}, 'insurance_agency': {'office': 'insurance'}, 'auto_insurance': {'office': 'insurance', 'insurance': 'car'}, 'farm_insurance': {'office': 'insurance', 'insurance': 'farm'}, 'home_and_rental_insurance': {'office': 'insurance', 'insurance': 'home'}, 'life_insurance': {'office': 'insurance', 'insurance': 'life'}, 'investing': {'office': 'financial_advisor'}, 'tax_services': {'office': 'tax_advisor'}, 'trusts': {'office': 'accountant'}, 'private_establishments_and_corporates': {'office': 'company'}, 'retail': {'shop': 'yes'}, 'bagel_shop': {'amenity': 'cafe', 'cuisine': 'bagel'}, 'bakery': {'shop': 'bakery'}, 'flatbread': {'shop': 'bakery'}, 'beer_wine_and_spirits': {'shop': 'alcohol'}, 'patisserie_cake_shop': {'shop': 'pastry'}, 'cupcake_shop': {'shop': 'pastry'}, 'custom_cakes_shop': {'shop': 'pastry'}, 'coffee_and_tea_supplies': {'shop': 'coffee'}, 'health_food_store': {'shop': 'herbalist'}, 'ice_cream_and_frozen_yoghurt': {'amenity': 'ice_cream'}, 'gelato': {'amenity': 'ice_cream'}, 'ice_cream_shop': {'amenity': 'ice_cream'}, 'frozen_yoghurt_shop': {'amenity': 'ice_cream'}, 'liquor_store': {'shop': 'alcohol'}, 'mulled_wine': {'shop': 'wine'}, 'sandwich_shop': {'amenity': 'fast_food', 'cuisine': 'sandwich'}, 'delicatessen': {'shop': 'deli'}, 'winery': {'craft': 'winery'}, 'wine_tasting_room': {'craft': 'winery'}, 'auto_parts_and_supply_store': {'shop': 'car_parts'}, 'beverage_store': {'shop': 'alcohol'}, 'butcher_shop': {'shop': 'butcher'}, 'candy_store': {'shop': 'confectionery'}, 'japanese_confectionery_shop': {'shop': 'confectionery'}, 'carpet_store': {'shop': 'carpet'}, 'cheese_shop': {'shop': 'cheese'}, 'chocolatier': {'shop': 'chocolate'}, 'distillery': {'craft': 'distillery'}, 'flooring_store': {'shop': 'flooring'}, 'meat_shop': {'shop': 'butcher'}, 'pharmacy': {'amenity': 'pharmacy'}, 'water_store': {'shop': 'water'}, 'shopping': {'shop': 'yes'}, 'arts_and_crafts': {'shop': 'craft'}, 'art_supply_store': {'shop': 'craft'}, 'costume_store': {'shop': 'costume'}, 'craft_shop': {'shop': 'craft'}, 'embroidery_and_crochet': {'shop': 'sewing'}, 'fabric_store': {'shop': 'fabric'}, 'framing_store': {'shop': 'frame'}, 'handicraft_shop': {'shop': 'craft'}, 'bookstore': {'shop': 'books'}, 'fashion': {'shop': 'clothes', 'clothes': 'fashion'}, 'clothing_store': {'shop': 'clothes'}, "children's_clothing_store": {'shop': 'clothes', 'clothes': 'children'}, 'denim_wear_store': {'shop': 'clothes', 'clothes': 'denim'}, "men's_clothing_store": {'shop': 'clothes', 'clothes': 'men'}, "women's_clothing_store": {'shop': 'clothes', 'clothes': 'women'}, 'fashion_accessories_store': {'shop': 'fashion_accessories'}, 'hat_shop': {'shop': 'clothes', 'clothes': 'hats'}, 'shoe_store': {'shop': 'shoes'}, 'orthopedic_shoe_store': {'shop': 'shoes', 'shoes': 'orthopaedic'}, 'eyewear_and_optician': {'shop': 'optician'}, 'flowers_and_gifts_shop': {'shop': 'flowers'}, 'florist': {'shop': 'florist'}, 'gift_shop': {'shop': 'gift'}, 'grocery_store': {'shop': 'convenience'}, 'specialty_grocery_store': {'shop': 'supermarket'}, 'asian_grocery_store': {'shop': 'supermarket', 'cuisine': 'asian'}, 'indian_grocery_store': {'shop': 'supermarket', 'cuisine': 'indian'}, 'japanese_grocery_store': {'shop': 'supermarket', 'cuisine': 'japanese'}, 'korean_grocery_store': {'shop': 'supermarket', 'cuisine': 'korean'}, 'kosher_grocery_store': {'shop': 'supermarket', 'cuisine': 'kosher'}, 'mexican_grocery_store': {'shop': 'supermarket', 'cuisine': 'mexican'}, 'organic_grocery_store': {'shop': 'supermarket', 'organic': 'yes'}, 'russian_grocery_store': {'shop': 'supermarket', 'cuisine': 'russian'}, 'home_and_garden': {'shop': 'hardware'}, 'hardware_store': {'shop': 'hardware'}, 'appliance_store': {'shop': 'appliance'}, 'candle_store': {'shop': 'candles'}, 'furniture_accessory_store': {'shop': 'furniture'}, 'furniture_store': {'shop': 'furniture'}, 'home_improvement_store': {'shop': 'doityourself'}, 'mattress_store': {'shop': 'bed'}, 'paint_store': {'shop': 'paint'}, 'medical_supply': {'shop': 'medical_supply'}, 'hearing_aids': {'shop': 'hearing_aids'}, 'pet_store': {'shop': 'pet'}, 'computer_store': {'shop': 'computer'}, 'convenience_store': {'shop': 'convenience'}, 'department_store': {'shop': 'department_store'}, 'discount_store': {'shop': 'discount'}, 'do_it_yourself_store': {'shop': 'doityourself'}, 'electronics': {'shop': 'electronics'}, 'jewelry_store': {'shop': 'jewelry'}, 'mobile_phone_store': {'shop': 'mobile_phone'}, 'shopping_center': {'shop': 'mall'}, 'supermarket': {'shop': 'supermarket'}, 'superstore': {'shop': 'supermarket'}, 'tobacco_shop': {'shop': 'tobacco'}, 'toy_store': {'shop': 'toys'}, 'used_bookstore': {'shop': 'books', 'second_hand': 'only'}, 'e_cigarette_store': {'shop': 'tobacco'}, 'watch_store': {'shop': 'watches'}, 'wholesale_store': {'shop': 'wholesale'}, 'bicycle_shop': {'shop': 'bicycle'}, 'swimwear_store': {'shop': 'clothes', 'clothes': 'swimwear'}, 'health_and_medical': {'healthcare': 'yes'}, 'counseling_and_mental_health': {'healthcare': 'psychotherapist'}, 'family_counselor': {'healthcare': 'counselling', 'healthcare:counselling': 'family'}, 'psychotherapist': {'healthcare': 'psychotherapist'}, 'dentist': {'amenity': 'dentist'}, 'doctor': {'amenity': 'doctor'}, 'audiologist': {'healthcare': 'audiologist'}, 'dermatologist': {'healthcare:speciality': 'dermatology'}, 'fertility': {'amenity': 'clinic', 'healthcare': 'clinic', 'healthcare:speciality': 'fertility'}, 'gastroenterologist': {'healthcare:speciality': 'gastroenterology'}, 'geneticist': {'healthcare:speciality': 'genetics'}, 'gerontologist': {'healthcare:speciality': 'gerontology'}, 'hepatologist': {'healthcare:speciality': 'hepatology'}, 'neurologist': {'healthcare:speciality': 'neurology'}, 'obstetrician_and_gynecologist': {'healthcare:speciality': 'gynaecology'}, 'oncologist': {'healthcare:speciality': 'oncology'}, 'podiatrist': {'healthcare': 'podiatrist'}, 'acupuncture': {'healthcare': 'alternative', 'healthcare:speciality': 'acupuncture'}, 'ayurveda': {'healthcare': 'alternative', 'healthcare:speciality': 'ayurveda'}, 'chiropractor': {'healthcare': 'alternative', 'healthcare:specialty': 'chiropractic'}, 'float_spa': {'amenity': 'spa'}, 'halotherapy': {'healthcare:speciality': 'halotherapy'}, 'hospice': {'healthcare': 'hospice'}, 'hospital': {'amenity': 'hospital'}, 'massage_therapy': {'shop': 'massage'}, 'midwife': {'healthcare': 'midwife'}, 'optometrist': {'healthcare': 'optometrist'}, 'physical_therapy': {'healthcare': 'physiotherapist'}, 'podiatry': {'amenity': 'doctors', 'healthcare:speciality': 'podiatry'}, 'sauna': {'leisure': 'sauna'}, 'speech_therapist': {'healthcare': 'speech_therapist'}, 'internal_medicine': {'healthcare': 'doctor', 'healthcare:speciality': 'internal'}, 'psychiatrist': {'amenity': 'doctors', 'healthcare:speciality': 'psychiatry'}, 'traditional_chinese_medicine': {'healthcare': 'alternative', 'healthcare:speciality': 'traditional_chinese_medicine'}, 'pet_groomer': {'shop': 'pet_grooming'}, 'animal_shelter': {'amenity': 'animal_shelter'}, 'veterinarian': {'amenity': 'veterinary'}, 'business_to_business': {'office': 'yes'}, 'research_institute': {'amenity': 'research_institute'}, 'coworking_space': {'amenity': 'coworking_space'}, 'information_technology_company': {'office': 'it'}, 'telecommunications_company': {'office': 'telecommunication'}, 'mining': {'industrial': 'mine'}, 'coal_and_coke': {'industrial': 'mine'}, 'oil_refiners': {'industrial': 'refinery'}, 'public_service_and_government': {'office': 'yes'}, 'non_governmental_association': {'office': 'ngo'}, 'public_and_government_association': {'office': 'yes'}, 'charity_organization': {'office': 'charity'}, 'food_banks': {'amenity': 'social_facility', 'social_facility': 'food_bank'}, 'homeless_shelter': {'amenity': 'social_facility', 'social_facility': 'shelter', 'social_facility:for': 'homeless'}, 'community_services_non_profits': {'amenity': 'community_centre'}, 'jail_and_prison': {'amenity': 'prison'}, 'juvenile_detention_center': {'amenity': 'prison'}, 'post_office': {'amenity': 'post_office'}, 'public_toilet': {'amenity': 'toilets', 'access': 'yes'}, 'community_center': {'amenity': 'community_centre'}, 'courthouse': {'amenity': 'courthouse'}, 'embassy': {'office': 'diplomatic', 'diplomatic': 'embassy'}, 'fire_department': {'amenity': 'fire_station'}, 'library': {'amenity': 'library'}, 'police_department': {'amenity': 'police'}, 'retirement_home': {'amenity': 'social_facility', 'social_facility': 'assisted_living'}, 'town_hall': {'amenity': 'townhall'}, 'religious_organization': {'amenity': 'place_of_worship'}, 'church_cathedral': {'amenity': 'place_of_worship', 'religion': 'christian'}, 'anglican_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'anglican'}, 'baptist_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'baptist'}, 'catholic_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'catholic'}, 'episcopal_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'episcopal'}, 'evangelical_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'evangelical'}, 'pentecostal_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'pentecostal'}, 'buddhist_temple': {'amenity': 'place_of_worship', 'religion': 'buddhist'}, 'hindu_temple': {'amenity': 'place_of_worship', 'religion': 'hindu'}, 'mosque': {'amenity': 'place_of_worship', 'religion': 'muslim'}, 'religious_destination': {'amenity': 'place_of_worship'}, 'shinto_shrines': {'amenity': 'place_of_worship', 'religion': 'shinto'}, 'sikh_temple': {'amenity': 'place_of_worship', 'religion': 'sikh'}, 'synagogue': {'amenity': 'place_of_worship', 'religion': 'jewish'}, 'temple': {'building': 'temple', 'amenity': 'place_of_worship'}, 'real_estate': {'office': 'estate_agent'}, 'real_estate_investment': {'office': 'estate_agent'}, 'apartments': {'building': 'apartments'}, 'condominium': {'building': 'apartments'}, 'property_management': {'office': 'property_management'}, 'real_estate_agent': {'office': 'estate_agent'}, 'rental_services': {'shop': 'rental'}, 'airport': {'aeroway': 'aerodrome'}, 'airport_terminal': {'aeroway': 'terminal'}, 'domestic_airports': {'aeroway': 'aerodrome', 'aerodrome:type': 'regional'}, 'heliports': {'aeroway': 'heliport'}, 'major_airports': {'aeroway': 'aerodrome', 'aerodrome:type': 'international'}, 'travel_agents': {'shop': 'travel_agency'}, 'visitor_center': {'tourism': 'information', 'information': 'visitor_centre'}, 'rest_areas': {'highway': 'services'}, 'toll_stations': {'barrier': 'toll_booth'}, 'train_station': {'railway': 'station', 'public_transport': 'station'}, 'bicycle_sharing_location': {'amenity': 'bicycle_rental'}, 'bike_parking': {'amenity': 'bicycle_parking'}, 'bike_sharing': {'amenity': 'bicycle_rental'}, 'bus_station': {'amenity': 'bus_station', 'public_transport': 'station'}, 'car_sharing': {'amenity': 'car_sharing'}, 'light_rail_and_subway_stations': {'railway': 'station', 'public_transport': 'station'}, 'metro_station': {'railway': 'station', 'public_transport': 'station'}, 'motorcycle_parking': {'amenity': 'motorcycle_parking'}, 'parking': {'amenity': 'parking'}, 'rental_service': {'shop': 'rental'}, 'car_rental_agency': {'amenity': 'car_rental'}, 'motorcycle_rentals': {'shop': 'rental', 'rental': 'motorcycle'}, 'rv_rentals': {'shop': 'rental', 'rental': 'rv'}, 'trailer_rentals': {'shop': 'rental', 'rental': 'trailer'}, 'truck_rentals': {'shop': 'rental', 'rental': 'truck'}, 'rest_stop': {'highway': 'services'}, 'broadcasting_media_production': {'office': 'media'}, 'home_service': {'craft': 'yes'}, 'roofing': {'craft': 'roofer'}, 'chimney_service': {'craft': 'chimney_sweeper'}, 'chimney_sweep': {'craft': 'chimney_sweeper'}, 'flooring_contractors': {'craft': 'floorer'}, 'carpenter': {'craft': 'carpenter'}, 'electrician': {'craft': 'electrician'}, 'insulation_installation': {'craft': 'insulation'}, 'key_and_locksmith': {'shop': 'locksmith'}, 'painting': {'craft': 'painter'}, 'plasterer': {'craft': 'plasterer'}, 'tiling': {'craft': 'tiler'}, 'landscaping': {'craft': 'gardener'}, 'gardener': {'craft': 'gardener'}, 'landscape_architect': {'craft': 'gardener'}, 'lawn_service': {'craft': 'gardener'}, 'tree_services': {'craft': 'arborist'}, 'professional_services': {'craft': 'yes'}, 'welders': {'craft': 'welder'}, 'stone_and_masonry': {'craft': 'stonemason'}, 'masonry_contractors': {'craft': 'stonemason'}, 'lawyer': {'office': 'lawyer'}, 'estate_planning_law': {'office': 'lawyer', 'lawyer': 'estate_planning'}, 'bankruptcy_law': {'office': 'lawyer', 'lawyer': 'bankruptcy'}, 'business_law': {'office': 'lawyer', 'lawyer': 'business'}, 'contract_law': {'office': 'lawyer', 'lawyer': 'contract'}, 'criminal_defense_law': {'office': 'lawyer', 'lawyer': 'criminal_defense'}, 'disability_law': {'office': 'lawyer', 'lawyer': 'disability'}, 'divorce_and_family_law': {'office': 'lawyer', 'lawyer': 'divorce_and_family'}, 'dui_law': {'office': 'lawyer', 'lawyer': 'dui'}, 'employment_law': {'office': 'lawyer', 'lawyer': 'employment'}, 'entertainment_law': {'office': 'lawyer', 'lawyer': 'entertainment'}, 'immigration_law': {'office': 'lawyer', 'lawyer': 'immigration'}, 'ip_and_internet_law': {'office': 'lawyer', 'lawyer': 'ip_and_internet'}, 'medical_law': {'office': 'lawyer', 'lawyer': 'medical'}, 'personal_injury_law': {'office': 'lawyer', 'lawyer': 'personal_injury'}, 'real_estate_law': {'office': 'lawyer', 'lawyer': 'real_estate'}, 'social_security_law': {'office': 'lawyer', 'lawyer': 'social_security'}, 'tax_law': {'office': 'tax_advisor'}, 'traffic_ticketing_law': {'office': 'lawyer', 'lawyer': 'traffic_ticketing'}, 'workers_compensation_law': {'office': 'lawyer', 'lawyer': 'workers_compensation'}, 'caterer': {'craft': 'caterer'}, 'photographer': {'craft': 'photographer'}, 'session_photography': {'craft': 'photographer'}, 'laundry_services': {'shop': 'laundry'}, 'dry_cleaning': {'shop': 'laundry', 'dry_cleaning': 'yes'}, 'laundromat': {'shop': 'laundry'}, 'advertising_agency': {'office': 'advertising_agency'}, 'architect': {'office': 'architect'}, 'architectural_designer': {'office': 'architect'}, 'bail_bonds_service': {'office': 'bail_bond_agent'}, 'car_broker': {'shop': 'car'}, 'day_care_preschool': {'amenity': 'school'}, 'computer_hardware_company': {'shop': 'computer'}, 'electronics_repair_shop': {'craft': 'electronics_repair'}, 'junkyard': {'industrial': 'scrap_yard'}, 'machine_and_tool_rentals': {'shop': 'rental', 'rental': 'machines'}, 'notary_public': {'office': 'lawyer', 'lawyer': 'notary'}, 'patent_law': {'office': 'lawyer', 'lawyer': 'patent'}, 'shoe_repair': {'shop': 'shoe_repair'}, 'software_development': {'office': 'software'}, 'tenant_and_eviction_law': {'office': 'lawyer', 'lawyer': 'tenant_and_eviction'}, 'self_storage_facility': {'shop': 'storage_rental'}, 'public_phones': {'amenity': 'telephone'}, 'public_restrooms': {'amenity': 'toilets', 'access': 'yes'}, 'structure_and_geography': {'place': 'yes'}, 'bridge': {'man_made': 'bridge'}, 'canal': {'waterway': 'canal'}, 'dam': {'waterway': 'dam'}, 'desert': {'natural': 'desert'}, 'forest': {'natural': 'wood'}, 'island': {'place': 'island'}, 'mountain': {'natural': 'peak'}, 'nature_reserve': {'leisure': 'nature_reserve'}, 'pier': {'man_made': 'pier'}, 'public_plaza': {'place': 'square'}, 'quay': {'man_made': 'quay'}, 'river': {'waterway': 'river'}, 'skyscraper': {'building': 'yes'}, 'tower': {'man_made': 'tower'}, 'weir': {'waterway': 'weir'}}"}]; + /** pdoc search index */const docs = [{"fullname": "overturetoosm", "modulename": "overturetoosm", "kind": "module", "doc": "

    overturetoosm is a Python package to convert objects tagged in the \nOverture schema for use in OSM. Only Overture's places, buildings, \nand addresses layers are currently supported.

    \n\n

    Links:

    \n\n\n"}, {"fullname": "overturetoosm.process_place", "modulename": "overturetoosm", "qualname": "process_place", "kind": "function", "doc": "

    Convert Overture's places properties to OSM tags.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm import process_place\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n\n    for feature in contents["features"]:\n        feature["properties"] = process_place(feature["properties"], confidence=0.5)\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(contents, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • region_tag (str, optional): What tag to convert Overture's region tag to.\nDefaults to addr:state.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • unmatched (Literal[\"error\", \"force\", \"ignore\"], optional): How to handle\nunmatched Overture categories. The \"error\" option raises an UnmatchedError\nexception, \"force\" puts the category into the type key, and \"ignore\"\nonly returns other properties. Defaults to \"ignore\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n\n
    Raises:
    \n\n
      \n
    • overturetoosm.objects.UnmatchedError: Raised if unmatched is set to error and\nthe Overture category has no OSM definition.
    • \n
    • overturetoosm.objects.ConfidenceError: Raised if the confidence level is set\nabove a feature's confidence.
    • \n
    \n", "signature": "(\tprops: dict,\tconfidence: float = 0.0,\tregion_tag: str = 'addr:state',\tunmatched: Literal['error', 'force', 'ignore'] = 'ignore') -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.process_building", "modulename": "overturetoosm", "qualname": "process_building", "kind": "function", "doc": "

    Convert Overture's building properties to OSM tags.

    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    \n\n
    Returns:
    \n\n
    \n

    Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n\n
    Raises:
    \n\n
      \n
    • overturetoosm.objects.ConfidenceError: Raised if the confidence level is set\nabove a feature's confidence.
    • \n
    \n", "signature": "(props: dict, confidence: float = 0.0) -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.process_address", "modulename": "overturetoosm", "qualname": "process_address", "kind": "function", "doc": "

    Convert Overture's address properties to OSM tags.

    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • style (str, optional): How to handle the address_levels field. Open\na pull request or issue to add support for other regions. Defaults to \"US\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n", "signature": "(props: dict, style: str = 'US') -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.process_geojson", "modulename": "overturetoosm", "qualname": "process_geojson", "kind": "function", "doc": "

    Convert an Overture place GeoJSON to one that follows OSM's schema.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm import process_geojson\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n    geojson = process_geojson(contents, fx=process_building)\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(geojson, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • geojson (dict): The dictionary representation of the Overture GeoJSON.
    • \n
    • fx (Callable): The function to apply to each feature.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • options (dict, optional): Function-specific options to pass as arguments to\nthe fx function.
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict: The dictionary representation of the GeoJSON that follows OSM's schema.

    \n
    \n", "signature": "(\tgeojson: dict,\tfx: Callable,\tconfidence: float = 0.0,\toptions: Optional[dict] = None) -> dict:", "funcdef": "def"}, {"fullname": "overturetoosm.addresses", "modulename": "overturetoosm.addresses", "kind": "module", "doc": "

    Convert Overture's addresses features to OSM tags.

    \n"}, {"fullname": "overturetoosm.addresses.process_address", "modulename": "overturetoosm.addresses", "qualname": "process_address", "kind": "function", "doc": "

    Convert Overture's address properties to OSM tags.

    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • style (str, optional): How to handle the address_levels field. Open\na pull request or issue to add support for other regions. Defaults to \"US\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n", "signature": "(props: dict, style: str = 'US') -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.buildings", "modulename": "overturetoosm.buildings", "kind": "module", "doc": "

    Convert Overture's buildings features to OSM tags.

    \n"}, {"fullname": "overturetoosm.buildings.process_building", "modulename": "overturetoosm.buildings", "qualname": "process_building", "kind": "function", "doc": "

    Convert Overture's building properties to OSM tags.

    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    \n\n
    Returns:
    \n\n
    \n

    Dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n\n
    Raises:
    \n\n
      \n
    • overturetoosm.objects.ConfidenceError: Raised if the confidence level is set\nabove a feature's confidence.
    • \n
    \n", "signature": "(props: dict, confidence: float = 0.0) -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.objects", "modulename": "overturetoosm.objects", "kind": "module", "doc": "

    Pydantic models needed throughout the project.

    \n"}, {"fullname": "overturetoosm.objects.Sources", "modulename": "overturetoosm.objects", "qualname": "Sources", "kind": "class", "doc": "

    Overture sources model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Sources.property", "modulename": "overturetoosm.objects", "qualname": "Sources.property", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Sources.dataset", "modulename": "overturetoosm.objects", "qualname": "Sources.dataset", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Sources.record_id", "modulename": "overturetoosm.objects", "qualname": "Sources.record_id", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Sources.confidence", "modulename": "overturetoosm.objects", "qualname": "Sources.confidence", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "overturetoosm.objects.Sources.update_time", "modulename": "overturetoosm.objects", "qualname": "Sources.update_time", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Sources.model_config", "modulename": "overturetoosm.objects", "qualname": "Sources.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Sources.model_fields", "modulename": "overturetoosm.objects", "qualname": "Sources.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'property': FieldInfo(annotation=str, required=True), 'dataset': FieldInfo(annotation=str, required=True), 'record_id': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=False, default=0.0), 'update_time': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}"}, {"fullname": "overturetoosm.objects.Sources.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Sources.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Names", "modulename": "overturetoosm.objects", "qualname": "Names", "kind": "class", "doc": "

    Overture names model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Names.primary", "modulename": "overturetoosm.objects", "qualname": "Names.primary", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Names.common", "modulename": "overturetoosm.objects", "qualname": "Names.common", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[Dict[str, str]]"}, {"fullname": "overturetoosm.objects.Names.rules", "modulename": "overturetoosm.objects", "qualname": "Names.rules", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[Dict[str, str]]]"}, {"fullname": "overturetoosm.objects.Names.model_config", "modulename": "overturetoosm.objects", "qualname": "Names.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Names.model_fields", "modulename": "overturetoosm.objects", "qualname": "Names.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'primary': FieldInfo(annotation=str, required=True), 'common': FieldInfo(annotation=Union[Dict[str, str], NoneType], required=True), 'rules': FieldInfo(annotation=Union[List[Dict[str, str]], NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Names.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Names.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Address", "modulename": "overturetoosm.objects", "qualname": "Address", "kind": "class", "doc": "

    Overture addresses model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Address.freeform", "modulename": "overturetoosm.objects", "qualname": "Address.freeform", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Address.locality", "modulename": "overturetoosm.objects", "qualname": "Address.locality", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Address.postcode", "modulename": "overturetoosm.objects", "qualname": "Address.postcode", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Address.region", "modulename": "overturetoosm.objects", "qualname": "Address.region", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Address.country", "modulename": "overturetoosm.objects", "qualname": "Address.country", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Address.model_config", "modulename": "overturetoosm.objects", "qualname": "Address.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Address.model_fields", "modulename": "overturetoosm.objects", "qualname": "Address.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'freeform': FieldInfo(annotation=Union[str, NoneType], required=True), 'locality': FieldInfo(annotation=Union[str, NoneType], required=True), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True), 'region': FieldInfo(annotation=Union[str, NoneType], required=True), 'country': FieldInfo(annotation=Union[str, NoneType], required=True, metadata=[_PydanticGeneralMetadata(pattern='^[A-Z]{2}$')])}"}, {"fullname": "overturetoosm.objects.Address.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Address.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Categories", "modulename": "overturetoosm.objects", "qualname": "Categories", "kind": "class", "doc": "

    Overture categories model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Categories.main", "modulename": "overturetoosm.objects", "qualname": "Categories.main", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.Categories.alternate", "modulename": "overturetoosm.objects", "qualname": "Categories.alternate", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[str]]"}, {"fullname": "overturetoosm.objects.Categories.model_config", "modulename": "overturetoosm.objects", "qualname": "Categories.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Categories.model_fields", "modulename": "overturetoosm.objects", "qualname": "Categories.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'main': FieldInfo(annotation=str, required=True), 'alternate': FieldInfo(annotation=Union[List[str], NoneType], required=True)}"}, {"fullname": "overturetoosm.objects.Categories.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Categories.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Brand", "modulename": "overturetoosm.objects", "qualname": "Brand", "kind": "class", "doc": "

    Overture brand model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.Brand.wikidata", "modulename": "overturetoosm.objects", "qualname": "Brand.wikidata", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.Brand.names", "modulename": "overturetoosm.objects", "qualname": "Brand.names", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Names"}, {"fullname": "overturetoosm.objects.Brand.model_config", "modulename": "overturetoosm.objects", "qualname": "Brand.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.Brand.model_fields", "modulename": "overturetoosm.objects", "qualname": "Brand.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'wikidata': FieldInfo(annotation=Union[str, NoneType], required=True, metadata=[_PydanticGeneralMetadata(pattern='Q[0-9]+')]), 'names': FieldInfo(annotation=Names, required=True)}"}, {"fullname": "overturetoosm.objects.Brand.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "Brand.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.OvertureBase", "modulename": "overturetoosm.objects", "qualname": "OvertureBase", "kind": "class", "doc": "

    Overture base model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.OvertureBase.theme", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.theme", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.OvertureBase.type", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.type", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.OvertureBase.version", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.version", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "overturetoosm.objects.OvertureBase.model_config", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.OvertureBase.model_fields", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'theme': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True)}"}, {"fullname": "overturetoosm.objects.OvertureBase.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "OvertureBase.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.PlaceProps", "modulename": "overturetoosm.objects", "qualname": "PlaceProps", "kind": "class", "doc": "

    Overture properties model.

    \n\n

    Use this model directly if you want to manipulate the place properties yourself.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.PlaceProps.id", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.id", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.PlaceProps.version", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.version", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "overturetoosm.objects.PlaceProps.update_time", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.update_time", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.PlaceProps.sources", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.sources", "kind": "variable", "doc": "

    \n", "annotation": ": List[overturetoosm.objects.Sources]"}, {"fullname": "overturetoosm.objects.PlaceProps.names", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.names", "kind": "variable", "doc": "

    \n", "annotation": ": overturetoosm.objects.Names"}, {"fullname": "overturetoosm.objects.PlaceProps.brand", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.brand", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[overturetoosm.objects.Brand]"}, {"fullname": "overturetoosm.objects.PlaceProps.categories", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.categories", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[overturetoosm.objects.Categories]"}, {"fullname": "overturetoosm.objects.PlaceProps.confidence", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.confidence", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "overturetoosm.objects.PlaceProps.websites", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.websites", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[pydantic_core._pydantic_core.Url]]"}, {"fullname": "overturetoosm.objects.PlaceProps.socials", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.socials", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[pydantic_core._pydantic_core.Url]]"}, {"fullname": "overturetoosm.objects.PlaceProps.emails", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.emails", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[str]]"}, {"fullname": "overturetoosm.objects.PlaceProps.phones", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.phones", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[str]]"}, {"fullname": "overturetoosm.objects.PlaceProps.addresses", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.addresses", "kind": "variable", "doc": "

    \n", "annotation": ": List[overturetoosm.objects.Address]"}, {"fullname": "overturetoosm.objects.PlaceProps.model_config", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.PlaceProps.model_fields", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'id': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'version': FieldInfo(annotation=int, required=True), 'update_time': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=List[Sources], required=True), 'names': FieldInfo(annotation=Names, required=True), 'brand': FieldInfo(annotation=Union[Brand, NoneType], required=False, default=None), 'categories': FieldInfo(annotation=Union[Categories, NoneType], required=False, default=None), 'confidence': FieldInfo(annotation=float, required=True, metadata=[Ge(ge=0.0), Le(le=1.0)]), 'websites': FieldInfo(annotation=Union[List[Url], NoneType], required=False, default=None), 'socials': FieldInfo(annotation=Union[List[Url], NoneType], required=False, default=None), 'emails': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'phones': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'addresses': FieldInfo(annotation=List[Address], required=True)}"}, {"fullname": "overturetoosm.objects.PlaceProps.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "PlaceProps.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.ConfidenceError", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError", "kind": "class", "doc": "

    Confidence error exception.

    \n\n

    This exception is raised when the confidence level of an item is below the\nuser-defined level. It contains the original confidence level and the confidence\nlevel of the item.

    \n\n
    Attributes:
    \n\n
      \n
    • confidence_level (float): The set confidence level.
    • \n
    • confidence_item (float): The confidence of the item.
    • \n
    • message (str): The error message.
    • \n
    \n", "bases": "builtins.Exception"}, {"fullname": "overturetoosm.objects.ConfidenceError.confidence_level", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.confidence_level", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.ConfidenceError.confidence_item", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.confidence_item", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.ConfidenceError.message", "modulename": "overturetoosm.objects", "qualname": "ConfidenceError.message", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.UnmatchedError", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError", "kind": "class", "doc": "

    Unmatched category error.

    \n\n

    This exception is raised when an item's Overture category does not have a\ncorresponding OSM definition. Edit\nthe OSM Wiki page\nto add a definition to this category.

    \n\n
    Attributes:
    \n\n
      \n
    • category (str): The Overture category that is unmatched.
    • \n
    • message (str): The error message.
    • \n
    \n", "bases": "builtins.Exception"}, {"fullname": "overturetoosm.objects.UnmatchedError.category", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError.category", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.UnmatchedError.message", "modulename": "overturetoosm.objects", "qualname": "UnmatchedError.message", "kind": "variable", "doc": "

    \n"}, {"fullname": "overturetoosm.objects.BuildingProps", "modulename": "overturetoosm.objects", "qualname": "BuildingProps", "kind": "class", "doc": "

    Overture building properties.

    \n\n

    Use this model directly if you want to manipulate the building properties yourself.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.BuildingProps.version", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.version", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "overturetoosm.objects.BuildingProps.class_", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.class_", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.BuildingProps.subtype", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.subtype", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.BuildingProps.sources", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.sources", "kind": "variable", "doc": "

    \n", "annotation": ": List[overturetoosm.objects.Sources]"}, {"fullname": "overturetoosm.objects.BuildingProps.height", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.height", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[float]"}, {"fullname": "overturetoosm.objects.BuildingProps.is_underground", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.is_underground", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[bool]"}, {"fullname": "overturetoosm.objects.BuildingProps.num_floors", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.num_floors", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[int]"}, {"fullname": "overturetoosm.objects.BuildingProps.num_floors_underground", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.num_floors_underground", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[int]"}, {"fullname": "overturetoosm.objects.BuildingProps.min_height", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.min_height", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[float]"}, {"fullname": "overturetoosm.objects.BuildingProps.min_floor", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.min_floor", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[int]"}, {"fullname": "overturetoosm.objects.BuildingProps.facade_color", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.facade_color", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.facade_material", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.facade_material", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_material", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_material", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_shape", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_shape", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_direction", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_direction", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_orientation", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_orientation", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_color", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_color", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.BuildingProps.roof_height", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.roof_height", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[float]"}, {"fullname": "overturetoosm.objects.BuildingProps.model_config", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.BuildingProps.model_fields", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'version': FieldInfo(annotation=int, required=True), 'class_': FieldInfo(annotation=str, required=True, alias='class', alias_priority=2), 'subtype': FieldInfo(annotation=str, required=True), 'sources': FieldInfo(annotation=List[Sources], required=True), 'height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'is_underground': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'num_floors': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'num_floors_underground': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'min_height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'min_floor': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'facade_color': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'facade_material': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_material': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_shape': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_direction': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_orientation': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_color': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'roof_height': FieldInfo(annotation=Union[float, NoneType], required=False, default=None)}"}, {"fullname": "overturetoosm.objects.BuildingProps.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "BuildingProps.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.AddressLevel", "modulename": "overturetoosm.objects", "qualname": "AddressLevel", "kind": "class", "doc": "

    Overture address level model.

    \n", "bases": "pydantic.main.BaseModel"}, {"fullname": "overturetoosm.objects.AddressLevel.value", "modulename": "overturetoosm.objects", "qualname": "AddressLevel.value", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "overturetoosm.objects.AddressLevel.model_config", "modulename": "overturetoosm.objects", "qualname": "AddressLevel.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.AddressLevel.model_fields", "modulename": "overturetoosm.objects", "qualname": "AddressLevel.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'value': FieldInfo(annotation=str, required=True)}"}, {"fullname": "overturetoosm.objects.AddressLevel.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "AddressLevel.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.AddressProps", "modulename": "overturetoosm.objects", "qualname": "AddressProps", "kind": "class", "doc": "

    Overture address properties.

    \n\n

    Use this model directly if you want to manipulate the address properties yourself.

    \n", "bases": "OvertureBase"}, {"fullname": "overturetoosm.objects.AddressProps.number", "modulename": "overturetoosm.objects", "qualname": "AddressProps.number", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.AddressProps.street", "modulename": "overturetoosm.objects", "qualname": "AddressProps.street", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.AddressProps.postcode", "modulename": "overturetoosm.objects", "qualname": "AddressProps.postcode", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.AddressProps.country", "modulename": "overturetoosm.objects", "qualname": "AddressProps.country", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[str]"}, {"fullname": "overturetoosm.objects.AddressProps.address_levels", "modulename": "overturetoosm.objects", "qualname": "AddressProps.address_levels", "kind": "variable", "doc": "

    \n", "annotation": ": Optional[List[overturetoosm.objects.AddressLevel]]"}, {"fullname": "overturetoosm.objects.AddressProps.model_config", "modulename": "overturetoosm.objects", "qualname": "AddressProps.model_config", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.objects.AddressProps.model_fields", "modulename": "overturetoosm.objects", "qualname": "AddressProps.model_fields", "kind": "variable", "doc": "

    \n", "default_value": "{'theme': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=int, required=True), 'number': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:housenumber'), 'street': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:street'), 'postcode': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:postcode'), 'country': FieldInfo(annotation=Union[str, NoneType], required=True, alias_priority=2, serialization_alias='addr:country'), 'address_levels': FieldInfo(annotation=Union[List[AddressLevel], NoneType], required=False, default_factory=list)}"}, {"fullname": "overturetoosm.objects.AddressProps.model_computed_fields", "modulename": "overturetoosm.objects", "qualname": "AddressProps.model_computed_fields", "kind": "variable", "doc": "

    \n", "default_value": "{}"}, {"fullname": "overturetoosm.places", "modulename": "overturetoosm.places", "kind": "module", "doc": "

    Convert Overture's places features to OSM tags.

    \n"}, {"fullname": "overturetoosm.places.process_place", "modulename": "overturetoosm.places", "qualname": "process_place", "kind": "function", "doc": "

    Convert Overture's places properties to OSM tags.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm import process_place\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n\n    for feature in contents["features"]:\n        feature["properties"] = process_place(feature["properties"], confidence=0.5)\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(contents, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • props (dict): The feature properties from the Overture GeoJSON.
    • \n
    • region_tag (str, optional): What tag to convert Overture's region tag to.\nDefaults to addr:state.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • unmatched (Literal[\"error\", \"force\", \"ignore\"], optional): How to handle\nunmatched Overture categories. The \"error\" option raises an UnmatchedError\nexception, \"force\" puts the category into the type key, and \"ignore\"\nonly returns other properties. Defaults to \"ignore\".
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict[str, str]: The reshaped and converted properties in OSM's flat str:str schema.

    \n
    \n\n
    Raises:
    \n\n
      \n
    • overturetoosm.objects.UnmatchedError: Raised if unmatched is set to error and\nthe Overture category has no OSM definition.
    • \n
    • overturetoosm.objects.ConfidenceError: Raised if the confidence level is set\nabove a feature's confidence.
    • \n
    \n", "signature": "(\tprops: dict,\tconfidence: float = 0.0,\tregion_tag: str = 'addr:state',\tunmatched: Literal['error', 'force', 'ignore'] = 'ignore') -> Dict[str, str]:", "funcdef": "def"}, {"fullname": "overturetoosm.resources", "modulename": "overturetoosm.resources", "kind": "module", "doc": "

    A mapping of Overture tags to OSM tags.

    \n"}, {"fullname": "overturetoosm.resources.places_tags", "modulename": "overturetoosm.resources", "qualname": "places_tags", "kind": "variable", "doc": "

    Dict[str, Dict[str, str]]: A mapping of Overture to OSM place tags,\nexcluding blank values. This is downstream from the scripts/tag.json\nfile.

    \n", "annotation": ": Dict[str, Dict[str, str]]", "default_value": "{'eat_and_drink': {'amenity': 'restaurant'}, 'restaurant': {'amenity': 'restaurant'}, 'afghan_restaurant': {'amenity': 'restaurant', 'cuisine': 'afghan'}, 'african_restaurant': {'amenity': 'restaurant', 'cuisine': 'african'}, 'ethiopian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ethiopian'}, 'senegalese_restaurant': {'amenity': 'restaurant', 'cuisine': 'senegalese'}, 'south_african_restaurant': {'amenity': 'restaurant', 'cuisine': 'south_african'}, 'moroccan_restaurant': {'amenity': 'restaurant', 'cuisine': 'moroccan'}, 'nigerian_restaurant': {'amenity': 'restaurant', 'cuisine': 'nigerian'}, 'american_restaurant': {'amenity': 'restaurant', 'cuisine': 'american'}, 'arabian_restaurant': {'amenity': 'restaurant', 'cuisine': 'arab'}, 'belgian_restaurant': {'amenity': 'restaurant', 'cuisine': 'belgian'}, 'latin_american_restaurant': {'amenity': 'restaurant', 'cuisine': 'latin_american'}, 'argentine_restaurant': {'amenity': 'restaurant', 'cuisine': 'argentinian'}, 'belizean_restaurant': {'amenity': 'restaurant', 'cuisine': 'belizean'}, 'bolivian_restaurant': {'amenity': 'restaurant', 'cuisine': 'bolivian'}, 'brazilian_restaurant': {'amenity': 'restaurant', 'cuisine': 'brazilian'}, 'chilean_restaurant': {'amenity': 'restaurant', 'cuisine': 'chilean'}, 'colombian_restaurant': {'amenity': 'restaurant', 'cuisine': 'colombian'}, 'costa_rican_restaurant': {'amenity': 'restaurant', 'cuisine': 'costa_rican'}, 'cuban_restaurant': {'amenity': 'restaurant', 'cuisine': 'cuban'}, 'ecuadorian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ecuadorian'}, 'guatemalan_restaurant': {'amenity': 'restaurant', 'cuisine': 'guatemalan'}, 'honduran_restaurant': {'amenity': 'restaurant', 'cuisine': 'honduran'}, 'mexican_restaurant': {'amenity': 'restaurant', 'cuisine': 'mexican'}, 'nicaraguan_restaurant': {'amenity': 'restaurant', 'cuisine': 'nicaraguan'}, 'panamanian_restaurant': {'amenity': 'restaurant', 'cuisine': 'panamanian'}, 'paraguayan_restaurant': {'amenity': 'restaurant', 'cuisine': 'paraguayan'}, 'peruvian_restaurant': {'amenity': 'restaurant', 'cuisine': 'peruvian'}, 'puerto_rican_restaurant': {'amenity': 'restaurant'}, 'salvadoran_restaurant': {'amenity': 'restaurant'}, 'texmex_restaurant': {'amenity': 'restaurant', 'cuisine': 'tex-mex'}, 'uruguayan_restaurant': {'amenity': 'restaurant'}, 'venezuelan_restaurant': {'amenity': 'restaurant', 'cuisine': 'venezuelan'}, 'middle_eastern_restaurant': {'amenity': 'restaurant', 'cuisine': 'middle_eastern'}, 'armenian_restaurant': {'amenity': 'restaurant', 'cuisine': 'armenian'}, 'azerbaijani_restaurant': {'amenity': 'restaurant'}, 'egyptian_restaurant': {'amenity': 'restaurant', 'cuisine': 'egyptian'}, 'georgian_restaurant': {'amenity': 'restaurant', 'cuisine': 'georgian'}, 'israeli_restaurant': {'amenity': 'restaurant', 'cuisine': 'israeli'}, 'kofta_restaurant': {'amenity': 'restaurant'}, 'kurdish_restaurant': {'amenity': 'restaurant'}, 'lebanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'lebanese'}, 'persian_iranian_restaurant': {'amenity': 'restaurant', 'cuisine': 'persian'}, 'syrian_restaurant': {'amenity': 'restaurant', 'cuisine': 'syrian'}, 'turkish_restaurant': {'amenity': 'restaurant', 'cuisine': 'turkish'}, 'asian_restaurant': {'amenity': 'restaurant', 'cuisine': 'asian'}, 'asian_fusion_restaurant': {'amenity': 'restaurant', 'cuisine': 'fusion'}, 'pan_asian_restaurant': {'amenity': 'restaurant'}, 'burmese_restaurant': {'amenity': 'restaurant'}, 'cambodian_restaurant': {'amenity': 'restaurant', 'cuisine': 'cambodian'}, 'chinese_restaurant': {'amenity': 'restaurant', 'cuisine': 'chinese'}, 'dim_sum_restaurant': {'amenity': 'restaurant'}, 'filipino_restaurant': {'amenity': 'restaurant', 'cuisine': 'filipino'}, 'indo_chinese_restaurant': {'amenity': 'restaurant'}, 'indonesian_restaurant': {'amenity': 'restaurant', 'cuisine': 'indonesian'}, 'japanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'japanese'}, 'korean_restaurant': {'amenity': 'restaurant', 'cuisine': 'korean'}, 'sushi_restaurant': {'amenity': 'restaurant', 'cuisine': 'sushi'}, 'laotian_restaurant': {'amenity': 'restaurant'}, 'malaysian_restaurant': {'amenity': 'restaurant', 'cuisine': 'malaysian'}, 'mongolian_restaurant': {'amenity': 'restaurant', 'cuisine': 'mongolian'}, 'noodles_restaurant': {'amenity': 'restaurant', 'cuisine': 'noodle'}, 'singaporean_restaurant': {'amenity': 'restaurant', 'cuisine': 'singaporean'}, 'taiwanese_restaurant': {'amenity': 'restaurant', 'cuisine': 'taiwanese'}, 'thai_restaurant': {'amenity': 'restaurant', 'cuisine': 'thai'}, 'vietnamese_restaurant': {'amenity': 'restaurant', 'cuisine': 'vietnamese'}, 'australian_restaurant': {'amenity': 'restaurant', 'cuisine': 'australian'}, 'austrian_restaurant': {'amenity': 'restaurant', 'cuisine': 'austrian'}, 'bangladeshi_restaurant': {'amenity': 'restaurant', 'cuisine': 'bangladeshi'}, 'indian_restaurant': {'amenity': 'restaurant', 'cuisine': 'indian'}, 'basque_restaurant': {'amenity': 'restaurant', 'cuisine': 'basque'}, 'british_restaurant': {'amenity': 'restaurant', 'cuisine': 'british'}, 'eastern_european_restaurant': {'amenity': 'restaurant'}, 'belarusian_restaurant': {'amenity': 'restaurant'}, 'bulgarian_restaurant': {'amenity': 'restaurant', 'cuisine': 'bulgarian'}, 'romanian_restaurant': {'amenity': 'restaurant', 'cuisine': 'romanian'}, 'tatar_restaurant': {'amenity': 'restaurant'}, 'ukrainian_restaurant': {'amenity': 'restaurant', 'cuisine': 'ukrainian'}, 'french_restaurant': {'amenity': 'restaurant', 'cuisine': 'french'}, 'cajun_creole_restaurant': {'amenity': 'restaurant', 'cuisine': 'cajun'}, 'canadian_restaurant': {'amenity': 'restaurant'}, 'caribbean_restaurant': {'amenity': 'restaurant', 'cuisine': 'caribbean'}, 'dominican_restaurant': {'amenity': 'restaurant'}, 'haitian_restaurant': {'amenity': 'restaurant'}, 'jamaican_restaurant': {'amenity': 'restaurant', 'cuisine': 'jamaican'}, 'trinidadian_restaurant': {'amenity': 'restaurant'}, 'german_restaurant': {'amenity': 'restaurant', 'cuisine': 'german'}, 'catalan_restaurant': {'amenity': 'restaurant'}, 'italian_restaurant': {'amenity': 'restaurant', 'cuisine': 'italian'}, 'czech_restaurant': {'amenity': 'restaurant', 'cuisine': 'czech'}, 'mediterranean_restaurant': {'amenity': 'restaurant', 'cuisine': 'mediterranean'}, 'greek_restaurant': {'amenity': 'restaurant', 'cuisine': 'greek'}, 'guamanian_restaurant': {'amenity': 'restaurant'}, 'hawaiian_restaurant': {'amenity': 'restaurant', 'cuisine': 'hawaiian'}, 'himalayan_nepalese_restaurant': {'amenity': 'restaurant'}, 'hungarian_restaurant': {'amenity': 'restaurant', 'cuisine': 'hungarian'}, 'iberian_restaurant': {'amenity': 'restaurant'}, 'irish_restaurant': {'amenity': 'restaurant', 'cuisine': 'irish'}, 'jewish_restaurant': {'amenity': 'restaurant'}, 'international_restaurant': {'amenity': 'restaurant'}, 'european_restaurant': {'amenity': 'restaurant'}, 'oriental_restaurant': {'amenity': 'restaurant'}, 'pakistani_restaurant': {'amenity': 'restaurant', 'cuisine': 'pakistani'}, 'polish_restaurant': {'amenity': 'restaurant', 'cuisine': 'polish'}, 'polynesian_restaurant': {'amenity': 'restaurant'}, 'portuguese_restaurant': {'amenity': 'restaurant', 'cuisine': 'portuguese'}, 'russian_restaurant': {'amenity': 'restaurant', 'cuisine': 'russian'}, 'scandinavian_restaurant': {'amenity': 'restaurant'}, 'danish_restaurant': {'amenity': 'restaurant'}, 'norwegian_restaurant': {'amenity': 'restaurant'}, 'scottish_restaurant': {'amenity': 'restaurant'}, 'seafood_restaurant': {'amenity': 'restaurant', 'cuisine': 'seafood'}, 'serbo_croation_restaurant': {'amenity': 'restaurant'}, 'slovakian_restaurant': {'amenity': 'restaurant'}, 'southern_restaurant': {'amenity': 'restaurant'}, 'spanish_restaurant': {'amenity': 'restaurant', 'cuisine': 'spanish'}, 'sri_lankan_restaurant': {'amenity': 'restaurant'}, 'swiss_restaurant': {'amenity': 'restaurant'}, 'uzbek_restaurant': {'amenity': 'restaurant'}, 'molecular_gastronomy_restaurant': {'amenity': 'restaurant'}, 'haute_cuisine_restaurant': {'amenity': 'restaurant'}, 'brasserie': {'amenity': 'restaurant'}, 'buffet_restaurant': {'amenity': 'restaurant'}, 'barbecue_restaurant': {'amenity': 'restaurant'}, 'burger_restaurant': {'amenity': 'restaurant', 'cuisine': 'burger'}, 'cheesesteak_restaurant': {'amenity': 'restaurant'}, 'chicken_restaurant': {'amenity': 'restaurant'}, 'chicken_wings_restaurant': {'amenity': 'restaurant'}, 'dog_meat_restaurant': {'amenity': 'restaurant'}, 'dumpling_restaurant': {'amenity': 'restaurant'}, 'fast_food_restaurant': {'amenity': 'fast_food'}, 'fishchbroetchen_restaurant': {'amenity': 'restaurant'}, 'fish_restaurant': {'amenity': 'restaurant'}, 'fish_and_chips_restaurant': {'amenity': 'restaurant'}, 'fondue_restaurant': {'amenity': 'restaurant'}, 'gluten_free_restaurant': {'amenity': 'restaurant'}, 'baozi_restaurant': {'amenity': 'restaurant'}, 'halal_restaurant': {'amenity': 'restaurant'}, 'bistro': {'amenity': 'restaurant'}, 'health_food_restaurant': {'amenity': 'restaurant'}, 'kosher_restaurant': {'amenity': 'restaurant'}, 'comfort_food_restaurant': {'amenity': 'restaurant'}, 'meat_restaurant': {'amenity': 'restaurant'}, 'curry_sausage_restaurant': {'amenity': 'restaurant'}, 'diner': {'amenity': 'restaurant'}, 'nasi_restaurant': {'amenity': 'restaurant'}, 'flatbread_restaurant': {'amenity': 'restaurant'}, 'food_court': {'amenity': 'food_court'}, 'gastropub': {'amenity': 'restaurant'}, 'pizza_restaurant': {'amenity': 'restaurant', 'cuisine': 'pizza'}, 'pop_up_restaurant': {'amenity': 'restaurant'}, 'poutinerie_restaurant': {'amenity': 'restaurant'}, 'vegan_restaurant': {'amenity': 'restaurant', 'diet:vegan': 'yes'}, 'vegetarian_restaurant': {'amenity': 'restaurant', 'diet:vegetarian': 'yes'}, 'wok_restaurant': {'amenity': 'restaurant'}, 'wrap_restaurant': {'amenity': 'restaurant'}, 'piadina_restaurant': {'amenity': 'restaurant'}, 'pigs_trotters_restaurant': {'amenity': 'restaurant'}, 'potato_restaurant': {'amenity': 'restaurant'}, 'rotisserie_chicken_restaurant': {'amenity': 'restaurant', 'cuisine': 'chicken'}, 'schnitzel_restaurant': {'amenity': 'restaurant'}, 'steakhouse': {'amenity': 'restaurant', 'cuisine': 'steak_house'}, 'tapas_bar': {'amenity': 'restaurant'}, 'venison_restaurant': {'amenity': 'restaurant'}, 'wild_game_meats_restaurant': {'amenity': 'restaurant'}, 'falafel_restaurant': {'amenity': 'restaurant'}, 'taco_restaurant': {'amenity': 'restaurant', 'cuisine': 'mexican'}, 'hot_dog_restaurant': {'amenity': 'restaurant', 'cuisine': 'american'}, 'soup_restaurant': {'amenity': 'restaurant'}, 'theme_restaurant': {'amenity': 'restaurant'}, 'bar_and_grill_restaurant': {'amenity': 'restaurant'}, 'meatball_restaurant': {'amenity': 'restaurant'}, 'waffle_restaurant': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'breakfast_and_brunch_restaurant': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'pancake_house': {'amenity': 'restaurant', 'cuisine': 'breakfast'}, 'bagel_restaurant': {'amenity': 'restaurant'}, 'bar': {'amenity': 'bar'}, 'beach_bar': {'amenity': 'bar'}, 'beer_bar': {'amenity': 'bar'}, 'beer_garden': {'amenity': 'biergarten'}, 'brewery': {'craft': 'brewery'}, 'bubble_tea': {'amenity': 'cafe', 'cuisine': 'bubble_tea'}, 'cocktail_bar': {'amenity': 'bar'}, 'dive_bar': {'amenity': 'bar'}, 'drive_thru_bar': {'amenity': 'bar', 'drive_through': 'yes'}, 'gay_bar': {'amenity': 'bar', 'lgbtq': 'primary'}, 'hookah_bar': {'amenity': 'bar'}, 'hotel_bar': {'amenity': 'bar'}, 'irish_pub': {'amenity': 'bar', 'cuisine': 'irish'}, 'milk_bar': {'amenity': 'fast_food'}, 'pub': {'amenity': 'pub'}, 'sake_bar': {'amenity': 'bar'}, 'speakeasy': {'amenity': 'bar'}, 'sports_bar': {'amenity': 'bar'}, 'tiki_bar': {'amenity': 'bar'}, 'vermouth_bar': {'amenity': 'bar'}, 'whiskey_bar': {'amenity': 'bar'}, 'wine_bar': {'amenity': 'bar'}, 'piano_bar': {'amenity': 'bar', 'live_music': 'yes'}, 'cafe': {'amenity': 'cafe'}, 'coffee_roastery': {'shop': 'coffee'}, 'tea_room': {'amenity': 'cafe'}, 'coffee_shop': {'amenity': 'cafe', 'cuisine': 'coffee_shop'}, 'accommodation': {'tourism': 'yes'}, 'bed_and_breakfast': {'tourism': 'guest_house', 'guest_house': 'bed_and_breakfast'}, 'cabin': {'tourism': 'chalet'}, 'campground': {'tourism': 'camp_site'}, 'cottage': {'tourism': 'chalet'}, 'guest_house': {'tourism': 'guest_house'}, 'hostel': {'tourism': 'hostel'}, 'hotel': {'tourism': 'hotel'}, 'motel': {'tourism': 'motel'}, 'resort': {'leisure': 'resort'}, 'beach_resort': {'leisure': 'beach_resort'}, 'rv_park': {'tourism': 'caravan_site'}, 'service_apartments': {'tourism': 'apartment'}, 'automotive_dealer': {'shop': 'car'}, 'car_dealer': {'shop': 'car'}, 'motorcycle_dealer': {'shop': 'motorcycle'}, 'used_car_dealer': {'shop': 'car', 'second_hand': 'only'}, 'automotive_services_and_repair': {'amenity': 'car_repair'}, 'auto_body_shop': {'shop': 'car_repair', 'car_repair': 'bodywork'}, 'auto_customization': {'shop': 'car_repair', 'car_repair': 'customization'}, 'auto_detailing': {'shop': 'car_repair', 'car_repair': 'detailing'}, 'auto_electrical_repair': {'shop': 'car_repair', 'car_repair': 'electrical'}, 'auto_glass_service': {'shop': 'car_repair', 'car_repair': 'glass'}, 'car_window_tinting': {'shop': 'car_repair', 'car_repair': 'tinting'}, 'auto_restoration_services': {'shop': 'car_repair', 'car_repair': 'restoration'}, 'auto_security': {'shop': 'car_repair', 'car_repair': 'security'}, 'automotive_consultant': {'office': 'consulting', 'consulting': 'automotive'}, 'automotive_storage_facility': {'amenity': 'parking'}, 'car_wash': {'amenity': 'car_wash'}, 'motorcycle_repair': {'shop': 'motorcycle_repair'}, 'tire_dealer_and_repair': {'shop': 'tyres'}, 'automotive_parts_and_accessories': {'shop': 'car_parts'}, 'gas_station': {'amenity': 'fuel'}, 'truck_gas_station': {'amenity': 'fuel', 'hgv': 'yes'}, 'ev_charging_station': {'amenity': 'charging_station'}, 'automotive_repair': {'shop': 'car_repair'}, 'auto_company': {'shop': 'car'}, 'betting_center': {'shop': 'bookmaker'}, 'bookmakers': {'shop': 'bookmaker'}, 'carousel': {'attraction': 'carousel'}, 'casino': {'amenity': 'casino'}, 'circus': {'amenity': 'theatre', 'theatre:genre': 'circus'}, 'comedy_club': {'amenity': 'theatre', 'theatre:genre': 'comedy'}, 'topic_concert_venue': {'amenity': 'music_venue'}, 'dance_club': {'amenity': 'nightclub'}, 'escape_rooms': {'leisure': 'escape_game'}, 'internet_cafe': {'amenity': 'internet_cafe'}, 'paintball': {'leisure': 'pitch', 'sport': 'paintball'}, 'planetarium': {'amenity': 'planetarium'}, 'stadium_arena': {'leisure': 'stadium'}, 'baseball_stadium': {'leisure': 'pitch', 'sport': 'baseball'}, 'basketball_stadium': {'leisure': 'pitch', 'sport': 'basketball'}, 'cricket_ground': {'leisure': 'pitch', 'sport': 'cricket'}, 'football_stadium': {'leisure': 'pitch', 'sport': 'american_football'}, 'hockey_arena': {'leisure': 'stadium', 'sport': 'hockey'}, 'rugby_stadium': {'leisure': 'stadium', 'sport': 'rugby'}, 'soccer_stadium': {'leisure': 'pitch', 'sport': 'soccer'}, 'tennis_stadium': {'leisure': 'pitch', 'sport': 'tennis'}, 'track_stadium': {'leisure': 'stadium', 'sport': 'track'}, 'theatre': {'amenity': 'theatre'}, 'water_park': {'leisure': 'water_park'}, 'cinema': {'amenity': 'cinema'}, 'drive_in_theatre': {'amenity': 'cinema', 'drive_in': 'yes'}, 'outdoor_movies': {'amenity': 'cinema', 'outdoor': 'yes'}, 'farm': {'shop': 'farm'}, 'attraction_farm': {'shop': 'farm'}, 'psychic': {'shop': 'psychic'}, 'amusement_park': {'tourism': 'theme_park'}, 'aquarium': {'tourism': 'aquarium'}, 'art_gallery': {'tourism': 'gallery'}, 'beach': {'natural': 'beach'}, 'botanical_garden': {'leisure': 'garden', 'garden:type': 'botanical'}, 'canyon': {'natural': 'valley'}, 'castle': {'historic': 'castle'}, 'cave': {'natural': 'cave_entrance'}, 'fort': {'historic': 'fort'}, 'fountain': {'amenity': 'fountain'}, 'lake': {'natural': 'water', 'water': 'lake'}, 'landmark_and_historical_building': {'building': 'yes'}, 'lighthouse': {'man_made': 'lighthouse'}, 'lookout': {'tourism': 'viewpoint'}, 'marina': {'leisure': 'marina'}, 'monument': {'historic': 'monument'}, 'observatory': {'man_made': 'observatory'}, 'palace': {'historic': 'castle', 'castle_type': 'palace'}, 'plaza': {'place': 'square'}, 'ruin': {'historic': 'ruins'}, 'sculpture_statue': {'historic': 'memorial', 'memorial': 'statue'}, 'trail': {'highway': 'path'}, 'hiking_trail': {'highway': 'path', 'sac_scale': 'hiking'}, 'mountain_bike_trails': {'highway': 'path', 'bicycle': 'yes'}, 'waterfall': {'waterway': 'waterfall'}, 'zoo': {'tourism': 'zoo'}, 'petting_zoo': {'tourism': 'zoo', 'zoo': 'petting_zoo'}, 'museum': {'tourism': 'museum'}, 'art_museum': {'tourism': 'gallery'}, 'asian_art_museum': {'tourism': 'gallery'}, 'contemporary_art_museum': {'tourism': 'gallery'}, "children's_museum": {'tourism': 'museum'}, 'costume_museum': {'tourism': 'museum'}, 'decorative_arts_museum': {'tourism': 'gallery'}, 'design_museum': {'tourism': 'museum'}, 'modern_art_museum': {'tourism': 'gallery'}, 'photography_museum': {'tourism': 'gallery'}, 'history_museum': {'tourism': 'museum'}, 'community_museum': {'tourism': 'museum'}, 'military_museum': {'tourism': 'museum'}, 'national_museum': {'tourism': 'museum'}, 'science_museum': {'tourism': 'museum'}, 'state_museum': {'tourism': 'museum'}, 'aviation_museum': {'tourism': 'museum'}, 'sports_museum': {'tourism': 'museum'}, 'park': {'leisure': 'park'}, 'dog_park': {'leisure': 'dog_park'}, 'memorial_park': {'leisure': 'park'}, 'national_park': {'boundary': 'protected_area'}, 'state_park': {'boundary': 'protected_area'}, 'american_football_field': {'leisure': 'pitch', 'sport': 'american_football'}, 'archery_range': {'leisure': 'pitch', 'sport': 'archery'}, 'badminton_court': {'leisure': 'pitch', 'sport': 'badminton'}, 'baseball_field': {'leisure': 'pitch', 'sport': 'baseball'}, 'basketball_court': {'leisure': 'pitch', 'sport': 'basketball'}, 'beach_volleyball_court': {'leisure': 'pitch', 'sport': 'beachvolleyball'}, 'bocce_ball_court': {'leisure': 'pitch', 'sport': 'boules'}, 'bowling_alley': {'leisure': 'bowling_alley'}, 'bubble_soccer_field': {'leisure': 'pitch', 'sport': 'soccer'}, 'disc_golf_course': {'leisure': 'disc_golf_course'}, 'futsal_field': {'leisure': 'pitch', 'sport': 'futsal'}, 'golf_course': {'leisure': 'golf_course'}, 'driving_range': {'golf': 'driving_range'}, 'gym': {'leisure': 'fitness_centre'}, 'handball_court': {'leisure': 'pitch', 'sport': 'handball'}, 'hockey_field': {'leisure': 'pitch', 'sport': 'field_hockey'}, 'horse_riding': {'leisure': 'horse_riding'}, 'miniature_golf_course': {'leisure': 'miniature_golf'}, 'playground': {'leisure': 'playground'}, 'racquetball_court': {'leisure': 'pitch', 'sport': 'racquetball'}, 'rock_climbing_gym': {'leisure': 'fitness_centre', 'sport': 'rock_climbing', 'indoor': 'yes'}, 'rugby_pitch': {'leisure': 'pitch', 'sport': 'rugby'}, 'soccer_field': {'leisure': 'pitch', 'sport': 'soccer'}, 'squash_court': {'leisure': 'pitch', 'sport': 'squash'}, 'swimming_pool': {'leisure': 'swimming_pool'}, 'tennis_court': {'leisure': 'pitch', 'sport': 'tennis'}, 'trampoline_park': {'leisure': 'trampoline_park'}, 'volleyball_court': {'leisure': 'pitch', 'sport': 'volleyball'}, 'dance_school': {'leisure': 'dance', 'dance:teaching': 'yes'}, 'ski_and_snowboard_school': {'amenity': 'school'}, 'surfing_school': {'amenity': 'school'}, 'yoga_studio': {'leisure': 'fitness_centre', 'sport': 'yoga'}, 'fencing_club': {'leisure': 'sports_centre', 'sport': 'fencing'}, 'gymnastics_club': {'leisure': 'sports_centre', 'sport': 'gymnastics'}, 'soccer_club': {'leisure': 'sports_centre', 'sport': 'soccer'}, 'table_tennis_club': {'leisure': 'sports_centre', 'sport': 'table_tennis'}, 'volleyball_club': {'leisure': 'sports_centre', 'sport': 'volleyball'}, 'golf_club': {'leisure': 'golf_course'}, 'indoor_golf_center': {'leisure': 'golf_course', 'golf:course': 'driving_range', 'indoor': 'yes'}, 'martial_arts_club': {'sport': 'martial_arts'}, 'karate_club': {'leisure': 'sports_centre', 'sport': 'karate'}, 'taekwondo_club': {'leisure': 'sports_centre', 'sport': 'taekwondo'}, 'bike_rentals': {'amenity': 'bicycle_rental'}, 'beauty_and_spa': {'amenity': 'spa'}, 'beauty_salon': {'shop': 'beauty'}, 'barber': {'shop': 'hairdresser'}, 'health_spa': {'amenity': 'spa'}, 'massage': {'shop': 'massage'}, 'tattoo_and_piercing': {'shop': 'tattoo', 'piercing': 'yes'}, 'piercing': {'shop': 'tattoo', 'piercing': 'yes'}, 'tattoo': {'shop': 'tattoo'}, 'spas': {'amenity': 'spa'}, 'medical_spa': {'amenity': 'spa'}, 'day_spa': {'amenity': 'spa'}, 'college_university': {'amenity': 'university', 'isced:level': '5'}, 'school': {'amenity': 'school'}, 'charter_school': {'amenity': 'school'}, 'elementary_school': {'amenity': 'school', 'isced:level': '1'}, 'high_school': {'amenity': 'school', 'isced:level': '3'}, 'middle_school': {'amenity': 'school', 'isced:level': '2'}, 'montessori_school': {'amenity': 'school'}, 'preschool': {'amenity': 'school', 'isced:level': '0'}, 'private_school': {'amenity': 'school'}, 'public_school': {'amenity': 'school'}, 'religious_school': {'amenity': 'school'}, 'waldorf_school': {'amenity': 'school'}, 'specialty_school': {'amenity': 'school'}, 'art_school': {'amenity': 'school', 'school': 'art'}, 'bartending_school': {'amenity': 'school', 'school': 'bartending'}, 'circus_school': {'amenity': 'school', 'school': 'circus'}, 'cooking_school': {'amenity': 'school', 'school': 'cooking'}, 'cosmetology_school': {'amenity': 'school', 'school': 'cosmetology'}, 'drama_school': {'amenity': 'school', 'school': 'drama'}, 'driving_school': {'amenity': 'driving_school'}, 'dui_school': {'amenity': 'school'}, 'flight_school': {'amenity': 'school'}, 'language_school': {'amenity': 'language_school'}, 'massage_school': {'amenity': 'school'}, 'medical_school': {'amenity': 'school'}, 'music_school': {'amenity': 'music_school'}, 'nursing_school': {'amenity': 'school'}, 'sports_school': {'amenity': 'school'}, 'traffic_school': {'amenity': 'school'}, 'vocational_and_technical_school': {'amenity': 'school'}, 'financial_service': {'office': 'financial'}, 'accountant': {'office': 'accountant'}, 'atms': {'amenity': 'atm'}, 'bank_credit_union': {'amenity': 'bank'}, 'banks': {'amenity': 'bank'}, 'credit_union': {'amenity': 'bank'}, 'business_brokers': {'office': 'financial_advisor'}, 'insurance_agency': {'office': 'insurance'}, 'auto_insurance': {'office': 'insurance', 'insurance': 'car'}, 'farm_insurance': {'office': 'insurance', 'insurance': 'farm'}, 'home_and_rental_insurance': {'office': 'insurance', 'insurance': 'home'}, 'life_insurance': {'office': 'insurance', 'insurance': 'life'}, 'investing': {'office': 'financial_advisor'}, 'tax_services': {'office': 'tax_advisor'}, 'trusts': {'office': 'accountant'}, 'private_establishments_and_corporates': {'office': 'company'}, 'retail': {'shop': 'yes'}, 'bagel_shop': {'amenity': 'cafe', 'cuisine': 'bagel'}, 'bakery': {'shop': 'bakery'}, 'flatbread': {'shop': 'bakery'}, 'beer_wine_and_spirits': {'shop': 'alcohol'}, 'patisserie_cake_shop': {'shop': 'pastry'}, 'cupcake_shop': {'shop': 'pastry'}, 'custom_cakes_shop': {'shop': 'pastry'}, 'coffee_and_tea_supplies': {'shop': 'coffee'}, 'health_food_store': {'shop': 'herbalist'}, 'ice_cream_and_frozen_yoghurt': {'amenity': 'ice_cream'}, 'gelato': {'amenity': 'ice_cream'}, 'ice_cream_shop': {'amenity': 'ice_cream'}, 'frozen_yoghurt_shop': {'amenity': 'ice_cream'}, 'liquor_store': {'shop': 'alcohol'}, 'mulled_wine': {'shop': 'wine'}, 'sandwich_shop': {'amenity': 'fast_food', 'cuisine': 'sandwich'}, 'delicatessen': {'shop': 'deli'}, 'winery': {'craft': 'winery'}, 'wine_tasting_room': {'craft': 'winery'}, 'auto_parts_and_supply_store': {'shop': 'car_parts'}, 'beverage_store': {'shop': 'alcohol'}, 'butcher_shop': {'shop': 'butcher'}, 'candy_store': {'shop': 'confectionery'}, 'japanese_confectionery_shop': {'shop': 'confectionery'}, 'carpet_store': {'shop': 'carpet'}, 'cheese_shop': {'shop': 'cheese'}, 'chocolatier': {'shop': 'chocolate'}, 'distillery': {'craft': 'distillery'}, 'flooring_store': {'shop': 'flooring'}, 'meat_shop': {'shop': 'butcher'}, 'pharmacy': {'amenity': 'pharmacy'}, 'water_store': {'shop': 'water'}, 'shopping': {'shop': 'yes'}, 'arts_and_crafts': {'shop': 'craft'}, 'art_supply_store': {'shop': 'craft'}, 'costume_store': {'shop': 'costume'}, 'craft_shop': {'shop': 'craft'}, 'embroidery_and_crochet': {'shop': 'sewing'}, 'fabric_store': {'shop': 'fabric'}, 'framing_store': {'shop': 'frame'}, 'handicraft_shop': {'shop': 'craft'}, 'bookstore': {'shop': 'books'}, 'fashion': {'shop': 'clothes', 'clothes': 'fashion'}, 'clothing_store': {'shop': 'clothes'}, "children's_clothing_store": {'shop': 'clothes', 'clothes': 'children'}, 'denim_wear_store': {'shop': 'clothes', 'clothes': 'denim'}, "men's_clothing_store": {'shop': 'clothes', 'clothes': 'men'}, "women's_clothing_store": {'shop': 'clothes', 'clothes': 'women'}, 'fashion_accessories_store': {'shop': 'fashion_accessories'}, 'hat_shop': {'shop': 'clothes', 'clothes': 'hats'}, 'shoe_store': {'shop': 'shoes'}, 'orthopedic_shoe_store': {'shop': 'shoes', 'shoes': 'orthopaedic'}, 'eyewear_and_optician': {'shop': 'optician'}, 'flowers_and_gifts_shop': {'shop': 'flowers'}, 'florist': {'shop': 'florist'}, 'gift_shop': {'shop': 'gift'}, 'grocery_store': {'shop': 'convenience'}, 'specialty_grocery_store': {'shop': 'supermarket'}, 'asian_grocery_store': {'shop': 'supermarket', 'cuisine': 'asian'}, 'indian_grocery_store': {'shop': 'supermarket', 'cuisine': 'indian'}, 'japanese_grocery_store': {'shop': 'supermarket', 'cuisine': 'japanese'}, 'korean_grocery_store': {'shop': 'supermarket', 'cuisine': 'korean'}, 'kosher_grocery_store': {'shop': 'supermarket', 'cuisine': 'kosher'}, 'mexican_grocery_store': {'shop': 'supermarket', 'cuisine': 'mexican'}, 'organic_grocery_store': {'shop': 'supermarket', 'organic': 'yes'}, 'russian_grocery_store': {'shop': 'supermarket', 'cuisine': 'russian'}, 'home_and_garden': {'shop': 'hardware'}, 'hardware_store': {'shop': 'hardware'}, 'appliance_store': {'shop': 'appliance'}, 'candle_store': {'shop': 'candles'}, 'furniture_accessory_store': {'shop': 'furniture'}, 'furniture_store': {'shop': 'furniture'}, 'home_improvement_store': {'shop': 'doityourself'}, 'mattress_store': {'shop': 'bed'}, 'paint_store': {'shop': 'paint'}, 'medical_supply': {'shop': 'medical_supply'}, 'hearing_aids': {'shop': 'hearing_aids'}, 'pet_store': {'shop': 'pet'}, 'computer_store': {'shop': 'computer'}, 'convenience_store': {'shop': 'convenience'}, 'department_store': {'shop': 'department_store'}, 'discount_store': {'shop': 'discount'}, 'do_it_yourself_store': {'shop': 'doityourself'}, 'electronics': {'shop': 'electronics'}, 'jewelry_store': {'shop': 'jewelry'}, 'mobile_phone_store': {'shop': 'mobile_phone'}, 'shopping_center': {'shop': 'mall'}, 'supermarket': {'shop': 'supermarket'}, 'superstore': {'shop': 'supermarket'}, 'tobacco_shop': {'shop': 'tobacco'}, 'toy_store': {'shop': 'toys'}, 'used_bookstore': {'shop': 'books', 'second_hand': 'only'}, 'e_cigarette_store': {'shop': 'tobacco'}, 'watch_store': {'shop': 'watches'}, 'wholesale_store': {'shop': 'wholesale'}, 'bicycle_shop': {'shop': 'bicycle'}, 'swimwear_store': {'shop': 'clothes', 'clothes': 'swimwear'}, 'health_and_medical': {'healthcare': 'yes'}, 'counseling_and_mental_health': {'healthcare': 'psychotherapist'}, 'family_counselor': {'healthcare': 'counselling', 'healthcare:counselling': 'family'}, 'psychotherapist': {'healthcare': 'psychotherapist'}, 'dentist': {'amenity': 'dentist'}, 'doctor': {'amenity': 'doctor'}, 'audiologist': {'healthcare': 'audiologist'}, 'dermatologist': {'healthcare:speciality': 'dermatology'}, 'fertility': {'amenity': 'clinic', 'healthcare': 'clinic', 'healthcare:speciality': 'fertility'}, 'gastroenterologist': {'healthcare:speciality': 'gastroenterology'}, 'geneticist': {'healthcare:speciality': 'genetics'}, 'gerontologist': {'healthcare:speciality': 'gerontology'}, 'hepatologist': {'healthcare:speciality': 'hepatology'}, 'neurologist': {'healthcare:speciality': 'neurology'}, 'obstetrician_and_gynecologist': {'healthcare:speciality': 'gynaecology'}, 'oncologist': {'healthcare:speciality': 'oncology'}, 'podiatrist': {'healthcare': 'podiatrist'}, 'acupuncture': {'healthcare': 'alternative', 'healthcare:speciality': 'acupuncture'}, 'ayurveda': {'healthcare': 'alternative', 'healthcare:speciality': 'ayurveda'}, 'chiropractor': {'healthcare': 'alternative', 'healthcare:specialty': 'chiropractic'}, 'float_spa': {'amenity': 'spa'}, 'halotherapy': {'healthcare:speciality': 'halotherapy'}, 'hospice': {'healthcare': 'hospice'}, 'hospital': {'amenity': 'hospital'}, 'massage_therapy': {'shop': 'massage'}, 'midwife': {'healthcare': 'midwife'}, 'optometrist': {'healthcare': 'optometrist'}, 'physical_therapy': {'healthcare': 'physiotherapist'}, 'podiatry': {'amenity': 'doctors', 'healthcare:speciality': 'podiatry'}, 'sauna': {'leisure': 'sauna'}, 'speech_therapist': {'healthcare': 'speech_therapist'}, 'internal_medicine': {'healthcare': 'doctor', 'healthcare:speciality': 'internal'}, 'psychiatrist': {'amenity': 'doctors', 'healthcare:speciality': 'psychiatry'}, 'traditional_chinese_medicine': {'healthcare': 'alternative', 'healthcare:speciality': 'traditional_chinese_medicine'}, 'pet_groomer': {'shop': 'pet_grooming'}, 'animal_shelter': {'amenity': 'animal_shelter'}, 'veterinarian': {'amenity': 'veterinary'}, 'business_to_business': {'office': 'yes'}, 'research_institute': {'amenity': 'research_institute'}, 'coworking_space': {'amenity': 'coworking_space'}, 'information_technology_company': {'office': 'it'}, 'telecommunications_company': {'office': 'telecommunication'}, 'mining': {'industrial': 'mine'}, 'coal_and_coke': {'industrial': 'mine'}, 'oil_refiners': {'industrial': 'refinery'}, 'public_service_and_government': {'office': 'yes'}, 'non_governmental_association': {'office': 'ngo'}, 'public_and_government_association': {'office': 'yes'}, 'charity_organization': {'office': 'charity'}, 'food_banks': {'amenity': 'social_facility', 'social_facility': 'food_bank'}, 'homeless_shelter': {'amenity': 'social_facility', 'social_facility': 'shelter', 'social_facility:for': 'homeless'}, 'community_services_non_profits': {'amenity': 'community_centre'}, 'jail_and_prison': {'amenity': 'prison'}, 'juvenile_detention_center': {'amenity': 'prison'}, 'post_office': {'amenity': 'post_office'}, 'public_toilet': {'amenity': 'toilets', 'access': 'yes'}, 'community_center': {'amenity': 'community_centre'}, 'courthouse': {'amenity': 'courthouse'}, 'embassy': {'office': 'diplomatic', 'diplomatic': 'embassy'}, 'fire_department': {'amenity': 'fire_station'}, 'library': {'amenity': 'library'}, 'police_department': {'amenity': 'police'}, 'retirement_home': {'amenity': 'social_facility', 'social_facility': 'assisted_living'}, 'town_hall': {'amenity': 'townhall'}, 'religious_organization': {'amenity': 'place_of_worship'}, 'church_cathedral': {'amenity': 'place_of_worship', 'religion': 'christian'}, 'anglican_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'anglican'}, 'baptist_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'baptist'}, 'catholic_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'catholic'}, 'episcopal_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'episcopal'}, 'evangelical_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'evangelical'}, 'pentecostal_church': {'amenity': 'place_of_worship', 'religion': 'christian', 'denomination': 'pentecostal'}, 'buddhist_temple': {'amenity': 'place_of_worship', 'religion': 'buddhist'}, 'hindu_temple': {'amenity': 'place_of_worship', 'religion': 'hindu'}, 'mosque': {'amenity': 'place_of_worship', 'religion': 'muslim'}, 'religious_destination': {'amenity': 'place_of_worship'}, 'shinto_shrines': {'amenity': 'place_of_worship', 'religion': 'shinto'}, 'sikh_temple': {'amenity': 'place_of_worship', 'religion': 'sikh'}, 'synagogue': {'amenity': 'place_of_worship', 'religion': 'jewish'}, 'temple': {'building': 'temple', 'amenity': 'place_of_worship'}, 'real_estate': {'office': 'estate_agent'}, 'real_estate_investment': {'office': 'estate_agent'}, 'apartments': {'building': 'apartments'}, 'condominium': {'building': 'apartments'}, 'property_management': {'office': 'property_management'}, 'real_estate_agent': {'office': 'estate_agent'}, 'rental_services': {'shop': 'rental'}, 'airport': {'aeroway': 'aerodrome'}, 'airport_terminal': {'aeroway': 'terminal'}, 'domestic_airports': {'aeroway': 'aerodrome', 'aerodrome:type': 'regional'}, 'heliports': {'aeroway': 'heliport'}, 'major_airports': {'aeroway': 'aerodrome', 'aerodrome:type': 'international'}, 'travel_agents': {'shop': 'travel_agency'}, 'visitor_center': {'tourism': 'information', 'information': 'visitor_centre'}, 'rest_areas': {'highway': 'services'}, 'toll_stations': {'barrier': 'toll_booth'}, 'train_station': {'railway': 'station', 'public_transport': 'station'}, 'bicycle_sharing_location': {'amenity': 'bicycle_rental'}, 'bike_parking': {'amenity': 'bicycle_parking'}, 'bike_sharing': {'amenity': 'bicycle_rental'}, 'bus_station': {'amenity': 'bus_station', 'public_transport': 'station'}, 'car_sharing': {'amenity': 'car_sharing'}, 'light_rail_and_subway_stations': {'railway': 'station', 'public_transport': 'station'}, 'metro_station': {'railway': 'station', 'public_transport': 'station'}, 'motorcycle_parking': {'amenity': 'motorcycle_parking'}, 'parking': {'amenity': 'parking'}, 'rental_service': {'shop': 'rental'}, 'car_rental_agency': {'amenity': 'car_rental'}, 'motorcycle_rentals': {'shop': 'rental', 'rental': 'motorcycle'}, 'rv_rentals': {'shop': 'rental', 'rental': 'rv'}, 'trailer_rentals': {'shop': 'rental', 'rental': 'trailer'}, 'truck_rentals': {'shop': 'rental', 'rental': 'truck'}, 'rest_stop': {'highway': 'services'}, 'broadcasting_media_production': {'office': 'media'}, 'home_service': {'craft': 'yes'}, 'roofing': {'craft': 'roofer'}, 'chimney_service': {'craft': 'chimney_sweeper'}, 'chimney_sweep': {'craft': 'chimney_sweeper'}, 'flooring_contractors': {'craft': 'floorer'}, 'carpenter': {'craft': 'carpenter'}, 'electrician': {'craft': 'electrician'}, 'insulation_installation': {'craft': 'insulation'}, 'key_and_locksmith': {'shop': 'locksmith'}, 'painting': {'craft': 'painter'}, 'plasterer': {'craft': 'plasterer'}, 'tiling': {'craft': 'tiler'}, 'landscaping': {'craft': 'gardener'}, 'gardener': {'craft': 'gardener'}, 'landscape_architect': {'craft': 'gardener'}, 'lawn_service': {'craft': 'gardener'}, 'tree_services': {'craft': 'arborist'}, 'professional_services': {'craft': 'yes'}, 'welders': {'craft': 'welder'}, 'stone_and_masonry': {'craft': 'stonemason'}, 'masonry_contractors': {'craft': 'stonemason'}, 'lawyer': {'office': 'lawyer'}, 'estate_planning_law': {'office': 'lawyer', 'lawyer': 'estate_planning'}, 'bankruptcy_law': {'office': 'lawyer', 'lawyer': 'bankruptcy'}, 'business_law': {'office': 'lawyer', 'lawyer': 'business'}, 'contract_law': {'office': 'lawyer', 'lawyer': 'contract'}, 'criminal_defense_law': {'office': 'lawyer', 'lawyer': 'criminal_defense'}, 'disability_law': {'office': 'lawyer', 'lawyer': 'disability'}, 'divorce_and_family_law': {'office': 'lawyer', 'lawyer': 'divorce_and_family'}, 'dui_law': {'office': 'lawyer', 'lawyer': 'dui'}, 'employment_law': {'office': 'lawyer', 'lawyer': 'employment'}, 'entertainment_law': {'office': 'lawyer', 'lawyer': 'entertainment'}, 'immigration_law': {'office': 'lawyer', 'lawyer': 'immigration'}, 'ip_and_internet_law': {'office': 'lawyer', 'lawyer': 'ip_and_internet'}, 'medical_law': {'office': 'lawyer', 'lawyer': 'medical'}, 'personal_injury_law': {'office': 'lawyer', 'lawyer': 'personal_injury'}, 'real_estate_law': {'office': 'lawyer', 'lawyer': 'real_estate'}, 'social_security_law': {'office': 'lawyer', 'lawyer': 'social_security'}, 'tax_law': {'office': 'tax_advisor'}, 'traffic_ticketing_law': {'office': 'lawyer', 'lawyer': 'traffic_ticketing'}, 'workers_compensation_law': {'office': 'lawyer', 'lawyer': 'workers_compensation'}, 'caterer': {'craft': 'caterer'}, 'photographer': {'craft': 'photographer'}, 'session_photography': {'craft': 'photographer'}, 'laundry_services': {'shop': 'laundry'}, 'dry_cleaning': {'shop': 'laundry', 'dry_cleaning': 'yes'}, 'laundromat': {'shop': 'laundry'}, 'advertising_agency': {'office': 'advertising_agency'}, 'architect': {'office': 'architect'}, 'architectural_designer': {'office': 'architect'}, 'bail_bonds_service': {'office': 'bail_bond_agent'}, 'car_broker': {'shop': 'car'}, 'day_care_preschool': {'amenity': 'school'}, 'computer_hardware_company': {'shop': 'computer'}, 'electronics_repair_shop': {'craft': 'electronics_repair'}, 'junkyard': {'industrial': 'scrap_yard'}, 'machine_and_tool_rentals': {'shop': 'rental', 'rental': 'machines'}, 'notary_public': {'office': 'lawyer', 'lawyer': 'notary'}, 'patent_law': {'office': 'lawyer', 'lawyer': 'patent'}, 'shoe_repair': {'shop': 'shoe_repair'}, 'software_development': {'office': 'software'}, 'tenant_and_eviction_law': {'office': 'lawyer', 'lawyer': 'tenant_and_eviction'}, 'self_storage_facility': {'shop': 'storage_rental'}, 'public_phones': {'amenity': 'telephone'}, 'public_restrooms': {'amenity': 'toilets', 'access': 'yes'}, 'structure_and_geography': {'place': 'yes'}, 'bridge': {'man_made': 'bridge'}, 'canal': {'waterway': 'canal'}, 'dam': {'waterway': 'dam'}, 'desert': {'natural': 'desert'}, 'forest': {'natural': 'wood'}, 'island': {'place': 'island'}, 'mountain': {'natural': 'peak'}, 'nature_reserve': {'leisure': 'nature_reserve'}, 'pier': {'man_made': 'pier'}, 'public_plaza': {'place': 'square'}, 'quay': {'man_made': 'quay'}, 'river': {'waterway': 'river'}, 'skyscraper': {'building': 'yes'}, 'tower': {'man_made': 'tower'}, 'weir': {'waterway': 'weir'}}"}, {"fullname": "overturetoosm.utils", "modulename": "overturetoosm.utils", "kind": "module", "doc": "

    Useful functions for the project.

    \n"}, {"fullname": "overturetoosm.utils.source_statement", "modulename": "overturetoosm.utils", "qualname": "source_statement", "kind": "function", "doc": "

    Return a source statement from a list of sources.

    \n", "signature": "(source: List[overturetoosm.objects.Sources]) -> str:", "funcdef": "def"}, {"fullname": "overturetoosm.utils.process_geojson", "modulename": "overturetoosm.utils", "qualname": "process_geojson", "kind": "function", "doc": "

    Convert an Overture place GeoJSON to one that follows OSM's schema.

    \n\n

    Example usage:

    \n\n
    \n
    import json\nfrom overturetoosm import process_geojson\n\nwith open("overture.geojson", "r", encoding="utf-8") as f:\n    contents: dict = json.load(f)\n    geojson = process_geojson(contents, fx=process_building)\n\nwith open("overture_out.geojson", "w+", encoding="utf-8") as x:\n    json.dump(geojson, x, indent=4)\n
    \n
    \n\n
    Arguments:
    \n\n
      \n
    • geojson (dict): The dictionary representation of the Overture GeoJSON.
    • \n
    • fx (Callable): The function to apply to each feature.
    • \n
    • confidence (float, optional): The minimum confidence level. Defaults to 0.0.
    • \n
    • options (dict, optional): Function-specific options to pass as arguments to\nthe fx function.
    • \n
    \n\n
    Returns:
    \n\n
    \n

    dict: The dictionary representation of the GeoJSON that follows OSM's schema.

    \n
    \n", "signature": "(\tgeojson: dict,\tfx: Callable,\tconfidence: float = 0.0,\toptions: Optional[dict] = None) -> dict:", "funcdef": "def"}]; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. diff --git a/src/overturetoosm/__init__.py b/src/overturetoosm/__init__.py index 266bb11..7f35596 100644 --- a/src/overturetoosm/__init__.py +++ b/src/overturetoosm/__init__.py @@ -14,6 +14,7 @@ from .utils import process_geojson from . import places from . import buildings +from . import addresses from . import objects from . import utils from . import resources @@ -25,6 +26,7 @@ "process_geojson", "places", "buildings", + "addresses", "objects", "utils", "resources",