Skip to main content

Population lookup via ISO 3166 country codes

Project description

CalVer schema Python versions Flake8 & friends Last commit

pypopulation

Lightweight population lookup using ISO 3166 alpha-1/2 country codes for Python 3.6.1 and higher.

>>> import pypopulation
>>> 
>>> pypopulation.get_population("DE")  # Germany
83132799

The aim is to provide a minimalist package with no dependencies that does one thing only, as best as possible. Population figures are read from a JSON file into Python dictionaries at import time. The API then only exposes the dictionaries.

The given figures are estimates at best. Read below for more details on the data source.

Interface

The API is formed by 3 functions:

  • get_population_a2: population for a 2-letter country code
  • get_population_a3: population for a 3-letter country code
  • get_population: population for either a 2-letter or a 3-letter country code

All functions return None if no country is found for the given country code. Lookup is case insensitive, i.e. "DE" and "de" give same results.

Lookups using country names are difficult & not currently supported, but the source JSON file does contain them. This is to make the source file more comprehensible. If all you have to work with is a country name, consider using pycountry to resolve your names to ISO 3166 codes first.

If you would like to build your own wrapper around the source JSON, you can do:

countries: t.List[t.Dict] = pypopulation._load_file()

Installation

With pip from PyPI:

pip install pypopulation

Development

I'm using Poetry to maintain development dependencies. These dependencies are only used to assure code quality. They are not necessary to use the package, and are not installed in a production environment.

Replicate the development environment:

poetry install

Run lint, tests and produce a .coverage file:

poetry run flake8
poetry run coverage run -m unittest

These commands run in CI (GH Actions) on pull requests against master. Tests are ran on all supported Python versions. Refer to the Checks workflow for more information. New releases trigger the Publish workflow, which builds a distribution and pushes it to PyPI.

Data source

The population figures were sourced from The World Bank (2020-07-01). This dataset provides the country name, alpha-3 code, and population figures found in the resource JSON file. The data was enriched with alpha-2 country codes for each row. Rows not corresponding to political countries were removed, e.g. "Middle East & North Africa (excluding high income)". Some country names were adjusted for readability, e.g. expanded abbreviations. No adjustments were made to the population figures. Please refer to the linked page for a more detailed description of the dataset.

This projects aims to expose the linked data to Python code. It does not guarantee correctness of the provided figures.

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

pypopulation-2020.3.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

pypopulation-2020.3-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file pypopulation-2020.3.tar.gz.

File metadata

  • Download URL: pypopulation-2020.3.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for pypopulation-2020.3.tar.gz
Algorithm Hash digest
SHA256 1fe80b99020803fe7b1083ddb5a0ed395325e04a5614650f0e7cd8cb7a2c6371
MD5 bda13e6ba1b96fbeb7f8a058a1d159b4
BLAKE2b-256 9e0b1ec110bf0192827c1c7e1157739f1841bf8ee2a854f143055a0bfb0d20d8

See more details on using hashes here.

File details

Details for the file pypopulation-2020.3-py3-none-any.whl.

File metadata

  • Download URL: pypopulation-2020.3-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for pypopulation-2020.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d1648d502ca87a01f7cf3a4c0be6cb5b76ba4a8320560024cf7e661c94354edf
MD5 797495edbd372e195dd2a7ebc1f342ca
BLAKE2b-256 4efc95d23d3ca48a123f5b50a963ba8fbfe1f7135ef3b308ea3d0daffea09187

See more details on using hashes here.

Supported by

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