Skip to main content

mailwoman-client (Python)

Typed Python clients for Mailwoman's HTTP surfaces — generated from their published OpenAPI specs and bundled under one distributable:

Subpackage Surface Endpoints
mailwoman_client.photon Photon drop-in /api, /reverse
mailwoman_client.nominatim Nominatim drop-in /search, /reverse, /lookup, /status
mailwoman_client.libpostal libpostal drop-in /parse, /expand
mailwoman_client.mailwoman Native surface /v1/parse, /v1/geocode, /v1/batch, /v1/resolve, /v1/format

The four subpackages are generated verbatim by openapi-python-client (it runs its own ruff pass) and are overwritten on regen — do not hand-edit them. The only hand-written code is the thin ergonomics layer in mailwoman_client/__init__.py: PhotonClient / NominatimClient / LibpostalClient / MailwomanClient, each with a sensible default base_url. Regenerate with mailwoman clients generate (see the repo's docs/articles/api.mdx "Client libraries" section) — nothing here is hand-maintained.

Not yet published. This package is built and verified on every mailwoman clients generate run; publishing to PyPI happens from the gated CI job once the operator provisions a PyPI account (see the repo's RELEASING.md).

Install

pip install mailwoman-client

Requires Python 3.10+. The only runtime dependencies are httpx and attrs.

Usage

Forward-geocode against the hosted Photon trial endpoint (https://photon.sister.software, no local server needed):

from mailwoman_client import PhotonClient
from mailwoman_client.photon.api.geocoding import search

client = PhotonClient.hosted()  # or PhotonClient(base_url="http://127.0.0.1:2322") to self-host
result = search.sync(client=client, q="berlin", limit=3)

for feature in result.features:
    lon, lat = feature.geometry.coordinates
    props = feature.properties
    print(f"{props.name} ({props.type_}) — {lat:.4f}, {lon:.4f} [{props.country or '?'}]")

Self-hosting

PhotonClient(), NominatimClient(), LibpostalClient(), and MailwomanClient() default to their local serve ports (2322 / 8080 / 8081 / 3000), so they work out of the box against a self-hosted server (npx @mailwoman/photon serve, mailwoman serve, etc.). Only Photon has a hosted public trial endpoint. Point anywhere with base_url=.

Async

Every endpoint module also exposes an asyncio coroutine alongside sync:

result = await search.asyncio(client=client, q="berlin", limit=3)

License

AGPL-3.0-only OR LicenseRef-Commercial (see the repository).

Metadata

Release files for mailwoman-client 6.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailwoman-client 6.0.0
File Size Uploaded
mailwoman_client-6.0.0.tar.gz 58.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailwoman-client 6.0.0
File Interpreter ABI Platform
mailwoman_client-6.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 178.5 kB

Release files / mailwoman_client-6.0.0.tar.gz

Download URL mailwoman_client-6.0.0.tar.gz
Size 58.9 kB
Tags Source
SHA-256 checksum
How to use checksums
98af6f278be87a8fe26918d4fb5bbc39c39f69c6a0962909a3a92f2a5949238d
BLAKE2b-256 checksum
How to use checksums
431b28001fb8212a2d8d90999a045b1690bc957a70f96ee4b9431f02d4f49850
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mailwoman_client-6.0.0-py3-none-any.whl

Download URL mailwoman_client-6.0.0-py3-none-any.whl
Size 119.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ee79cd3486186a3dce02bb66a98702241c6384ba1955192d8cc9e88271c964c
BLAKE2b-256 checksum
How to use checksums
c8645254f6ed6fe67a188d1b449e3ed05ef2ab813b9b22867f14a24dfa4dd616
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

6.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page