Skip to main content

A Python client for the Canada Post AddressComplete API

Project description

AddressComplete

PyPI version Python Version License: GPL v3 Downloads GitHub stars

A clean, Pythonic client for the Canada Post AddressComplete API. Simplify address autocomplete and validation in your applications with type-safe error handling and an intuitive interface.

Quick Start

pip install addresscomplete
from addresscomplete import AddressComplete

client = AddressComplete("your-api-key-here")
results = client.find("123 Main St, Toronto")

Features

  • Fast Address Search - Get instant address suggestions with customizable parameters
  • Detailed Address Retrieval - Fetch complete address information using unique IDs
  • Robust Error Handling - Specific exception types for every API error scenario
  • Zero Configuration - Works out of the box with sensible defaults

Installation

pip install addresscomplete

Or install from source:

git clone https://github.com/dellwood546/AddressComplete.git
cd AddressComplete
pip install .

Requirements: Python 3.7+ and the requests library (installed automatically).

Getting Started

Get your free API key from Canada Post AddressComplete, then start using the library immediately.

Basic Usage

from addresscomplete import AddressComplete

# Initialize the client with your API key
client = AddressComplete("your-api-key-here")

# Search for addresses
results = client.find("123 Main St, Toronto")
print(results)

# Retrieve detailed address information
address_id = "CA|CP|ENG|3X1-R2J"
details = client.retrieve(address_id)
print(details)

Advanced Usage

from addresscomplete import AddressComplete, FindError, RetrieveError

client = AddressComplete("your-api-key-here")

try:
    # Search with custom parameters
    results = client.find(
        search_term="123 Main Street",
        country="CAN",
        max_suggestions=5,
        language_preference="en"
    )
    
    # Process and enrich results
    for item in results.get("Items", []):
        print(f"{item.get('Description')} (ID: {item.get('Id')})")
        
        # Retrieve complete address details
        try:
            details = client.retrieve(item["Id"])
            print(f"Complete address: {details}")
        except RetrieveError as e:
            print(f"Retrieval failed: {e}")
            
except FindError as e:
    print(f"Search error: {e}")

API Reference

AddressComplete(api_key)

Creates a new client instance.

Parameters:

  • api_key (str): Your Canada Post AddressComplete API key

find(search_term, country="CAN", max_suggestions=10, language_preference="en")

Searches for address suggestions matching the search term.

Parameters:

  • search_term (str): The address search term
  • country (str, optional): Country code, defaults to "CAN"
  • max_suggestions (int, optional): Maximum results to return, defaults to 10
  • language_preference (str, optional): Language code (2 or 4 digits), defaults to "en"

Returns: dict - JSON response with address suggestions

Raises: FindError - When the API returns an error

retrieve(id)

Fetches complete address details for the given ID.

Parameters:

  • id (str): Unique address identifier from find() results

Returns: dict - Complete address information

Raises: RetrieveError - When the API returns an error

Error Handling

The library maps API error codes to specific exception types, making error handling straightforward and explicit.

  • FindError - Raised when address search fails
  • RetrieveError - Raised when address retrieval fails

Both exceptions automatically map error codes to specific exception classes (e.g., InvalidSearchTermError, AccountSuspendedError, UnknownKeyError) for granular error handling.

License

Licensed under the GNU General Public License v3.0 (GPL-3.0). See LICENSE for details.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.

Support

Found a bug or have a question? Open an issue on GitHub.


Author: Darian Elwood (dellwood546@gmail.com)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

addresscomplete-1.0.2.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

addresscomplete-1.0.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file addresscomplete-1.0.2.tar.gz.

File metadata

  • Download URL: addresscomplete-1.0.2.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for addresscomplete-1.0.2.tar.gz
Algorithm Hash digest
SHA256 aa93d930646ab58ea11142c68e538bad5f21b473d5189af5be5f37481bce5ee9
MD5 d1314ae983d0313760348b4a2a149804
BLAKE2b-256 5c9f9675a532d88b130ed8a48cb83646198dd1417db54a97163d5fd24f8093b4

See more details on using hashes here.

File details

Details for the file addresscomplete-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for addresscomplete-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d44582fd61f4aaf0764365c9d0606aca080dbccc6cc9a6ce42fb6f5e49de6d4b
MD5 cf7f67edf5b75e9061a1678602d2ed67
BLAKE2b-256 b253c2f54b075373119b94d3d8ca8686c43e4ad915bcddbcd5de0d05e7591a94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page