Skip to main content

Philippines Standard Geographic Code (PSGC) 2026 Python package, Fuzzy Search, JSON, and YAML.

Project description

🇵🇭 barangay

PyPI version PyPI Downloads License: MIT Release Visit the Docs zread

Philippine Standard Geographic Code (PSGC) Python package with fuzzy search for barangays, municipalities, cities, provinces, and regions. Based on the official April 2026 PSGC masterlist. Offline access to all 42,011 barangays — no API calls or database needed.


Quick Start

pip install barangay
from barangay import search

# Find barangays with fuzzy matching
results = search("Tongmageng, Tawi-Tawi")
print(results[0]['barangay'])  # Tongmageng

Features

Feature Description
🔍 Fuzzy Search Fast, customizable matching for unstandardized addresses
📅 Historical Data Access previous PSGC releases by date
👩‍💻 Command Line Interface Easy-to-use command line interface
📚 Multiple Data Models Choose the structure that fits your use case
💾 Smart Caching Automatic caching for faster subsequent loads
📦 Ready-to-Use JSON, YAML, and Python dictionary formats included
🧩 Plug-in System Enrich PSGC data with custom extensions via plug-ins

Installation

pip install barangay

Requirements: Python 3.13+


CLI

# Search for barangays
barangay search "Tongmageng, Tawi-Tawi"

# Export data
barangay export --model flat --format json --output data.json

# Show information
barangay info version
barangay info stats

# Work with historical data
barangay history list-dates
barangay history search-history "Tongmageng" --as-of "2025-07-08"

# Manage cache
barangay cache info
barangay cache clear

# Search with plugin enrichment
barangay search "Tongmageng" --plugin psgc-aux-data --format json

# Export with plugin enrichment
barangay export --model flat --plugin psgc-aux-data --format json --output enriched.json

# Batch operations
barangay batch batch-search queries.txt --limit 5 --output results.json
barangay batch validate barangay_names.txt

📖 Full CLI Reference: docs/cli.md 📖 Plugin Guide: docs/plugins/index.md


Python API

Fuzzy Search

from barangay import search

# Simple search
results = search("Tongmageng, Tawi-Tawi")

# Custom search
search(
    "Tongmagen, Tawi-Tawi",
    n=4,                    # Number of results
    match_hooks=["municipality", "barangay"],  # Match levels
    threshold=70.0,         # Minimum similarity (0-100)
)

# Historical data
search("Tongmageng", as_of="2025-07-08")

Data Access

from barangay import barangay, barangay_flat, barangay_extended

# Basic nested model (simple lookups)
ncr_cities = list(barangay["National Capital Region (NCR)"].keys())

# Extended model (recursive with metadata)
for region in barangay_extended.components:
    print(f"{region.name} ({region.type})")

# Flat model (search & filtering)
brgy = [loc for loc in barangay_flat if loc.name == "Marayos"][0]

Utilities

from barangay import sanitize_input, resolve_date, get_available_dates

# Sanitize strings
cleaned = sanitize_input("City of San Jose", exclude=["city of "])
# Result: "san jose"

# Resolve to closest available date
resolved_date, status = resolve_date("2025-07-01", get_available_dates(), "2026-04-13")
# Result: '2025-07-08'

# Get all available dates
dates = get_available_dates()
# ['2026-04-13', '2026-01-13', '2025-08-29', '2025-10-13', '2025-07-08']

📖 Full API Reference: docs/api.md


Configuration

Configure via environment variables:

export BARANGAY_AS_OF="2025-07-08"      # Default dataset date
export BARANGAY_VERBOSE="true"          # Enable verbose logging
export BARANGAY_CACHE_DIR="/custom/path" # Custom cache directory

Or set programmatically:

import barangay
barangay.as_of = "2025-07-08"

Priority: Function parameter → Module attribute → Environment variable → Default (latest)

📖 Full Configuration Guide: docs/configuration.md


Data Models

Three data structures are available. Choose based on your use case:

Model Use Case Structure
barangay Simple lookups Nested dictionary (region → city → barangay)
barangay_extended Complex hierarchies Recursive with rich metadata
barangay_flat Search & filtering Flat list with parent references

Note: Pydantic models (barangay, barangay_extended, barangay_flat) are recommended. Dict versions (BARANGAY, BARANGAY_EXTENDED, BARANGAY_FLAT) are available for backward compatibility.


Historical Data

Access previous PSGC releases by date. Data is automatically cached after first download.

Current Data Version: 2026-04-13 (April 13 2026 PSGC masterlist)

Available Dates:

  • Current: 2026-04-13 (bundled)
  • Historical: 2026-01-13, 2025-07-08, 2025-08-29, 2025-10-13
import barangay
print(barangay.current)           # '2026-04-13'
print(barangay.available_dates)   # ['2026-04-13', '2026-01-13', '2025-08-29', '2025-10-13', '2025-07-08']

Performance

Fuzzy search is optimized for speed:

Configuration Performance
Default (3 hooks) ~80ms per search
Optimized (2 hooks) ~25ms per search

Use fewer match_hooks for better performance when appropriate.


Resources


Contributing

Contributions are welcome! See our Contributing Guide and Code of Conduct.


License

MIT © bendlikeabamboo

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

barangay-2026.4.13.1.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

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

barangay-2026.4.13.1-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file barangay-2026.4.13.1.tar.gz.

File metadata

  • Download URL: barangay-2026.4.13.1.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barangay-2026.4.13.1.tar.gz
Algorithm Hash digest
SHA256 7363b3688d1e730893bc2a508cc1fc63a4401a6282030b0ced2a3eb9c816e24d
MD5 fc05a432f44b2bbd4bcfbb3ca1fd9173
BLAKE2b-256 79d8d75e1f1f168c6ea60dc87778db3e40c166505e468d2490a3272faef65da0

See more details on using hashes here.

Provenance

The following attestation bundles were made for barangay-2026.4.13.1.tar.gz:

Publisher: publish.yaml on bendlikeabamboo/barangay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file barangay-2026.4.13.1-py3-none-any.whl.

File metadata

  • Download URL: barangay-2026.4.13.1-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barangay-2026.4.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb2f25bd43f79d3058f302fad80a72b7391ee5fffdb158ddcdd40b4fd9ac2f08
MD5 aeb557dacf7d06871c078aa4a0cf9be3
BLAKE2b-256 0865ea270a0ed097dae5b4ddd5e7dc1473fb2adb4716102128115e4d7939fa97

See more details on using hashes here.

Provenance

The following attestation bundles were made for barangay-2026.4.13.1-py3-none-any.whl:

Publisher: publish.yaml on bendlikeabamboo/barangay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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