dripostal
A tiny API client for the Pelias Libpostal REST service.
Documentation: https://dribia.github.io/dripostal
Source Code: https://github.com/dribia/dripostal
Libpostal is a widely known C library for parsing and normalizing street addresses around the world.
Despite having its own Python bindings, getting to install the library can be quite hard and time-consuming. A common workaround is then to use a dockerized service exposing Libpostal as a REST API, e.g. Pelias' Libpostal REST service.
Dripostal aims to provide a Python interface with such API, both in the synchronous and the asynchronous ways.
Key features🔗
- Query Libpostal's
parse
andexpand
methods. - Return results as Pydantic models.
- Provides a mirror async client enabling asynchronous queries to the Libpostal REST service.
Example🔗
In order to successfully run the following example, a Libpostal service should be running locally:
docker run -d -p 4400:4400 pelias/libpostal-service
Info
The command above will be pulling the libpostal-service
Docker image from Pelias and
running a container that will serve the Libpostal REST service through its port 4400.
- With option
-p 4400:4400
we are mapping port4400
in the docker container to port4400
in the docker host, i.e. your computer. You could map it to another port of the host, e.g. the8080
, changing4400:4400
for8080:4400
. - With option
-d
we are running the docker container in detached mode, i.e. in the background.
Now we should be able to run the following code:
from dripostal import DriPostal
dripostal = DriPostal(url="http://0.0.0.0:4400")
dripostal.parse("Planta 3 mòdul 303, Carrer de la Llacuna, 162, 08018 Barcelona")
"""
Address(
house='mòdul 303',
house_number='162',
road='carrer de la llacuna',
level='planta 3',
postcode='08018',
city='barcelona',
country=None,
...
)
"""