Postal Codes Dataset for Angola, AO

172
Updated:
Files:1
Size:13.4 kB
Rows:326
Formats:csv

Postal Codes Dataset for Angola, AO including name of the city, town, or place, various administrative divisions and alternative city names.

Part of a Data Solution

  • Postal Codes Solution

    Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.

    Explore →

API Access

Access dataset files directly from scripts, code, or AI agents.

Browse dataset files
Dataset Files

Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.

/logistics/postal-codes-ao/
https://datahub.io/logistics/postal-codes-ao/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-ao/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-ao/_r/-/README.md
https://datahub.io/logistics/postal-codes-ao/_r/-/datapackage.yaml
Key Files

Start with these files — they give you everything you need to understand and access the dataset.

datapackage.yaml— metadata & schema
https://datahub.io/logistics/postal-codes-ao/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-ao/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yaml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yaml
  3. 3. Read README.md for full context

Data Files

Explore with AI

postal-codes-ao


About this dataset

Angola (AO): migration notes

Internal record of the P6 migration from the old builder to the producer: the discrepancies found, their causes, and who decided what. This is a dated record (2026-10-05), so the numbers are as of the migration and not kept current. It is not shipped.

  • Issue: pc-28e.8.2
  • Parity verdict: format-only against the live public CSV https://postal.datahub.io/ao/ao.csv (gate: pass)
  • Producer: custom, refresh disabled, postal_code_required: false

Sources

InputURLNotes
Lei n.º 14/24 (Lei da Divisão Político-Administrativa), full texthttps://angolex.com/paginas/leis/lei-da-divisao-politico-administrativa-14a-24a.htmlThe page the old builder and ATTRIBUTION cite. Unversioned: the fetch date and sha256 in ao.inputs.json identify the copy used
  • The old builder read a local snapshot of the FedEx-side countries/AGO/data/Angola.csv, built by scrape_admin.py from the same law text. That intermediate is gone, so per plan D1 the producer parses the law itself (a port, not a new pipeline).
  • The FedEx scrape_admin.py isn't available locally. The producer's parsing was written against the law text and checked against the live CSV.

Parity against the live public CSV (2026-10-05)

Rows: 326 live and 326 fresh, none only on one side, 0 changed cells. The only difference is line endings (CRLF→LF), pre-approved by the standing sign-off.

Decisions

DecisionByBasis
ao is not licence-restricted; it gets a producerUser, 2026-10-05 (pc-uzp)Lei 15/14 Art. 24.º excludes laws from copyright
Parse each province's composition article ("A Província de X, com sede no Município de Y, compreende os Municípios …"), dropping the leading de/do/da/dos/dasAgent: port choiceReproduces the live names exactly, e.g. "do Belize" → Belize, "do Lóvua do Zambeze" → Lóvua do Zambeze
Accept "Municipio" without the accentAgent: port choiceThe law text spells it both ways (Lunda-Norte, Moxico)
Hardcoded ISO 3166-2:AO table for the 17 coded provinces; the 4 new ones are listed as having no codeAgent: port choiceSame values as the old CSV's stateCode; an unknown province stops the build
licenses: custom:angola-official-text-uncopyrightableAgent, from the old builder's licence_status.licence_idbuild.py requires licenses once a dataset has pipeline:
Types: latitude/longitude number (all empty); PK [admin_name1, admin_name2]AgentOld builder's primary key; unique in the produced CSV

Fixes and transforms carried over

  • place_name = admin_name2 = municipality; admin_name1 = province, spelled as in the law.
  • admin_code1 = ISO 3166-2:AO without the "AO-" prefix; empty for Icolo e Bengo, Cuando, Cubango and Moxico Leste (no ISO code yet).
  • postal_code, admin_code2, admin tier 3, coordinates, accuracy and alternative_city_name empty, as before.
  • Sorted by (admin_name1, admin_name2).
  • Old asserts → ProducerError: unique (province, municipality); the exact 326-row assert is replaced by structural checks (every known province has exactly one article, no unknown province, each seat is in its own roster, names look like names).

Doc changes

  • Descriptor description and README: removed row counts, the "complete dataset (326 rows)" note, the "36 of 326" count, ATTRIBUTION.txt references (free datasets ship none), the stale datapackage.yml usage line and the sales footer. Added that coordinates are empty. Admin-unit counts (21 provinces, ~378 communes) kept.

Not ported

  • publish_r2.py and the zip/ATTRIBUTION/datapackage.json generation: build.py and the shared publish path replace them.

Open questions

  • Resolved (user, 2026-10-05): README edits confirmed.