This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

pycountry provides the ISO databases for the standards:

639
Languages
3166
Countries
3166-2
Subdivisions of countries
4217
Currencies
15924
Scripts

The package includes a copy from Debian’s pkg-isocodes and makes the data accessible through a Python API.

Translation files for the various strings are included as well.

Build status

pycountry

Countries (ISO 3166)

Countries are accessible through a database object that is already configured upon import of pycountry and works as an iterable:

>>> import pycountry
>>> len(pycountry.countries)
249
>>> list(pycountry.countries)[0]
<pycountry.db.Country object at 0x...>

Specific countries can be looked up by their various codes and provide the information included in the standard as attributes:

>>> germany = pycountry.countries.get(alpha2='DE')
>>> germany
<pycountry.db.Country object at 0x...>
>>> germany.alpha2
u'DE'
>>> germany.alpha3
u'DEU'
>>> germany.numeric
u'276'
>>> germany.name
u'Germany'
>>> germany.official_name
u'Federal Republic of Germany'

Note that historic countries, defined by the ISO 3166-3 sub-standard are not included in this list.

Country subdivisions (ISO 3166-2)

The country subdivisions are a little more complex than the countries itself because they provide a nested and typed structure.

All subdivisons can be accessed directly:

>>> len(pycountry.subdivisions)
4847
>>> list(pycountry.subdivisions)[0]
<pycountry.db.Subdivision object at 0x...>

Subdivisions can be accessed using their unique code and provide at least their code, name and type:

>>> de_st= pycountry.subdivisions.get(code='DE-ST')
>>> de_st.code
u'DE-ST'
>>> de_st.name
u'Sachsen-Anhalt'
>>> de_st.type
u'State'
>>> de_st.country
<pycountry.db.Country object at 0x...>

Some subdivisions specify another subdivision as a parent:

>>> al_br = pycountry.subdivisions.get(code='AL-BU')
>>> al_br.code
u'AL-BU'
>>> al_br.name
u'Bulqiz\xeb'
>>> al_br.type
u'District'
>>> al_br.parent_code
u'AL-09'
>>> al_br.parent
<pycountry.db.Subdivision object at 0x...>
>>> al_br.parent.name
u'Dib\xebr'

The divisions of a single country can be queried using the country_code index:

>>> len(pycountry.subdivisions.get(country_code='DE'))
16
>>> len(pycountry.subdivisions.get(country_code='US'))
57

Scripts (ISO 15924)

Scripts are available from a database similar to the countries:

>>> len(pycountry.scripts)
163
>>> list(pycountry.scripts)[0]
<pycountry.db.Script object at 0x...>
>>> latin = pycountry.scripts.get(name='Latin')
>>> latin
<pycountry.db.Script object at 0x...>
>>> latin.alpha4
u'Latn'
>>> latin.name
u'Latin'
>>> latin.numeric
u'215'

Currencies (ISO 4217)

The currencies database is, again, similar to the ones before:

>>> len(pycountry.currencies)
182
>>> list(pycountry.currencies)[0]
<pycountry.db.Currency object at 0x...>
>>> argentine_peso = pycountry.currencies.get(letter='ARS')
>>> argentine_peso
<pycountry.db.Currency object at 0x...>
>>> argentine_peso.letter
u'ARS'
>>> argentine_peso.name
u'Argentine Peso'
>>> argentine_peso.numeric
u'032'

Languages (ISO 639)

The languages database is similar too:

>>> len(pycountry.languages)
487
>>> list(pycountry.languages)[0]
<pycountry.db.Language object at 0x...>
>>> aragonese = pycountry.languages.get(alpha2='an')
>>> aragonese.alpha2
u'an'
>>> aragonese.bibliographic
u'arg'
>>> aragonese.terminology
u'arg'
>>> aragonese.name
u'Aragonese'
>>> bengali = pycountry.languages.get(alpha2='bn')
>>> bengali.name
u'Bengali'
>>> bengali.common_name
u'Bangla'

Locales

Locales are available in the pycountry.LOCALES_DIR subdirectory of this package. The translation domains are called isoXXX according to the standard they provide translations for. The directory is structured in a way compatible to Python’s gettext module.

Here is an example translating language names:

>>> import gettext
>>> german = gettext.translation('iso3166', pycountry.LOCALES_DIR,
...                              languages=['de'])
>>> german.install()
>>> _('Germany')
'Deutschland'

Changes

0.16 (unreleased)

  • Nothing changed yet.

0.15 (2013-06-22)

  • Update to iso-codes 3.43.
  • Switch testing to pytest.
  • Make Python 3 compatible.

0.14.8 (2013-02-25)

  • Update to iso-codes 3.41.

0.14.7 (2012-11-03)

  • Update to iso-codes 3.40.
  • Adapt Language objects to include common_name attribute added in iso-codes 3.40.

0.14.6 (2012-10-02)

  • Update to iso-codes 3.39.

0.14.5 (2012-09-14)

  • Re-add the patch that should have been 0.14.4. Migrating to mercurial caused me to miss it.

0.14.4 (2012-09-14)

  • Explicitly unlink DOM tree to support (faster) memory deallocation. Thanks to Romuald Brunet.

0.14.3 (2012-09-04)

  • Update data to iso-codes 3.38.

0.14.2 (2012-07-18)

  • Update data to iso-codes 3.37.

0.14.1 (2011-07-15)

  • Nothing changed yet.

0.14 (2011-07-06)

  • Update data to iso-codes 3.26.

0.13 (2010-04-23)

  • Applied patch from Pedro Araujo which removes the somewhat superfluous dependency on lxml to the builtin minidom. This seems to consistently turn all strings into unicode even if they only contain ASCII characters.

0.12.1 (2010-04-21)

  • Remedy brown-bag release 0.12 which was missing all data files due to a bad interaction between the build system for the data and zest.releaeser’s full-release script.

0.12 (2010-04-20)

  • Follow Debian repository to git.
  • Upgrade data to revision 770fa9cd603f90f9fb982b32fe6f45d253f1d33e as requested by #5488 and others.
  • Reflect subdivision changes with how they reference their parents in the XML (they used to use space as a separator but now use a hyphen).
  • Refactor index building structures a bit.
  • Remove superfluous ‘code’ index from subdivision database. (Together with the data upgrade this also gets rid of all the annoying warnings as described in #6667).
  • Some light PEP 8 improvements.

0.11 (2009-03-03)

  • Updated Debian repository to r1752.

0.10 (2008-06-26)

  • Added support for country subdivisions (ISO 3166-2).

0.9

  • Initial release
Release History

Release History

0.16.dev0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pycountry-nopytest-0.16.dev0.tar.gz (7.4 MB) Copy SHA256 Checksum SHA256 Source Jul 10, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting