[Python-modules-commits] [python-iso3166] 01/02: import upstream version 0.8.git20170319

Wolfgang Borgert debacle at moszumanska.debian.org
Thu May 25 12:22:42 UTC 2017


This is an automated email from the git hooks/post-receive script.

debacle pushed a commit to branch master
in repository python-iso3166.

commit a67ac17044ae6f962b7eaa7d54ce1c49beb046cb
Author: W. Martin Borgert <debacle at debian.org>
Date:   Thu May 25 13:51:42 2017 +0200

    import upstream version 0.8.git20170319
---
 .gitignore             |  14 ++
 CHANGES                |  83 +++++++++++
 LICENSE.txt            |  19 +++
 MANIFEST.in            |   3 +
 README.rst             |  82 +++++++++++
 ez_setup.py            | 284 ++++++++++++++++++++++++++++++++++++
 iso3166/__init__.py    | 379 +++++++++++++++++++++++++++++++++++++++++++++++++
 setup.cfg              |   5 +
 setup.py               |  36 +++++
 tests/test_listings.py |  41 ++++++
 tests/test_lookup.py   |  71 +++++++++
 tox.ini                |   6 +
 12 files changed, 1023 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a9c3a9c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+.DS_Store
+.*.swp
+*~
+
+*.pyc
+
+/dist/
+/build/
+*.egg-info
+.coverage
+/cover
+docs/_build/
+.tox/
+pyvenv.cfg
diff --git a/CHANGES b/CHANGES
new file mode 100644
index 0000000..092f041
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,83 @@
+=======
+Changes
+=======
+
+0.8 - February 5, 2017
+-----------------------
+* Updated entries
+   - Czechia (changed 2016-09)
+   - United Kingdom of Great Britain and Northern Ireland (changed
+     2014-12)
+
+0.7 - February 13, 2015
+-----------------------
+
+* Added new attribute ``apolitical_name`` to Country. This field
+  reflects the ISO short name but has unnecessarily inflammatory
+  modifiers removed.
+
+  Specifically: "Taiwan, Province of China" maps to "Taiwan" and
+  "Palestine, State of" maps to "Palestine."
+
+* Updated entries
+   - Holy See (changed in 2014-12)
+
+* CountryLookup now raises KeyError when passed an unknown integer
+  rather than AttributeError. (thanks unsignedint!)
+
+0.6 - September 28, 2014
+------------------------
+
+* Updated entries
+   - Cabo Verde (changed in 2013-11)
+
+* Documented the dictionaries used for looking up countries by alpha2,
+  etc. (thanks brunetton!)
+
+0.5 - February 13, 2014
+-----------------------
+
+* Added ``__contains__`` to CountryLookup (thanks tomako!)
+* Current through ISO newsletter VI-16
+    - No changes needed
+
+0.4 - February 14, 2013
+-----------------------
+
+* Current through ISO newsletter VI-14
+* Updated entries
+    - Palestine
+
+0.3 - September 4, 2012
+-----------------------
+
+* Current through ISO newsletter VI-13
+* Fix changes from 0.2 (thanks vincentfretin!):
+    - Venezuela
+    - Saint Helena
+    - Bolivia
+
+0.2 - March 26, 2012
+--------------------
+
+* Current through ISO newsletter VI-12
+* Added missing entry for Afghanistan
+* Updated entries
+    - Bolivia (ISO Newsletter VI-6)
+    - Libya (VI-11)
+    - Saint Helena (VI-7)
+    - Sudan (VI-10)
+    - Venezuela (VI-5)
+* New entries:
+    - Bonaire, Sint Eustatius and Saba (VI-8)
+    - Curaçao (VI-8)
+    - Sint Maarten (Dutch part) (VI-8)
+    - South Sudan (VI-10)
+* Deleted entries:
+    - Netherlands Antilles (VI-8)
+
+
+0.1 - December 14, 2010
+-----------------------
+
+- Initial release
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..c499705
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2010, 2011, 2012, 2013, 2014 Mike Spindel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..02d46e0
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,3 @@
+include LICENSE.txt
+include README.rst
+include CHANGES
\ No newline at end of file
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..00b2261
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,82 @@
+============================================================
+ python-iso3166 - Standalone ISO 3166-1 country definitions
+============================================================
+
+:Authors:
+        Mike Spindel
+:Version: 0.8
+
+
+ISO 3166-1 defines two-letter, three-letter, and three-digit country
+codes.  `python-iso3166` is a self-contained module that converts
+between these codes and the corresponding country name.
+
+
+Installation
+============
+
+::
+
+  $ pip install iso3166
+
+
+Usage
+=====
+
+
+Country details
+---------------
+
+::
+
+  >>> from iso3166 import countries
+  >>>
+  >>> countries.get('us')
+  Country(name=u'United States', alpha2='US', alpha3='USA', numeric='840')
+  >>> countries.get('ala')
+  Country(name=u'\xc5land Islands', alpha2='AX', alpha3='ALA', numeric='248')
+  >>> countries.get(8)
+  Country(name=u'Albania', alpha2='AL', alpha3='ALB', numeric='008')
+
+
+Country lists and indexes
+-------------------------
+
+::
+
+  >>> from iso3166 import countries
+
+  >>> for c in countries:
+         print c
+  >>> Country(name=u'Afghanistan', alpha2='AF', alpha3='AFG', numeric='004')
+  Country(name=u'\xc5land Islands', alpha2='AX', alpha3='ALA', numeric='248')
+  Country(name=u'Albania', alpha2='AL', alpha3='ALB', numeric='008')
+  Country(name=u'Algeria', alpha2='DZ', alpha3='DZA', numeric='012')
+
+::
+
+  >>> import iso3166
+
+  >>> iso3166.countries_by_name
+  >>> {u'AFGHANISTAN': Country(name=u'Afghanistan', alpha2='AF', alpha3='AFG', numeric='004'),
+  u'ALBANIA': Country(name=u'Albania', alpha2='AL', alpha3='ALB', numeric='008'),
+  u'ALGERIA': Country(name=u'Algeria', alpha2='DZ', alpha3='DZA', numeric='012'),
+  ...
+
+  >>> iso3166.countries_by_numeric
+  >>> {'004': Country(name=u'Afghanistan', alpha2='AF', alpha3='AFG', numeric='004'),
+  '008': Country(name=u'Albania', alpha2='AL', alpha3='ALB', numeric='008'),
+  '010': Country(name=u'Antarctica', alpha2='AQ', alpha3='ATA', numeric='010'),
+  ...
+
+  >>> iso3166.countries_by_alpha2
+  >>> {'AD': Country(name=u'Andorra', alpha2='AD', alpha3='AND', numeric='020'),
+  'AE': Country(name=u'United Arab Emirates', alpha2='AE', alpha3='ARE', numeric='784'),
+  'AF': Country(name=u'Afghanistan', alpha2='AF', alpha3='AFG', numeric='004'),
+  ...
+
+  >>> iso3166.countries_by_alpha3
+  >>> {'ABW': Country(name=u'Aruba', alpha2='AW', alpha3='ABW', numeric='533'),
+  'AFG': Country(name=u'Afghanistan', alpha2='AF', alpha3='AFG', numeric='004'),
+  'AGO': Country(name=u'Angola', alpha2='AO', alpha3='AGO', numeric='024'),
+  ...
diff --git a/ez_setup.py b/ez_setup.py
new file mode 100644
index 0000000..1ff1d3e
--- /dev/null
+++ b/ez_setup.py
@@ -0,0 +1,284 @@
+#!python
+"""Bootstrap setuptools installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+    from ez_setup import use_setuptools
+    use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import sys
+DEFAULT_VERSION = "0.6c11"
+DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
+
+md5_data = {
+    'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
+    'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
+    'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
+    'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
+    'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
+    'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
+    'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
+    'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
+    'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
+    'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
+    'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
+    'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
+    'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
+    'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
+    'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
+    'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
+    'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
+    'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
+    'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
+    'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
+    'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
+    'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
+    'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
+    'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
+    'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
+    'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
+    'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
+    'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
+    'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
+    'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
+    'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
+    'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
+    'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
+    'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
+    'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
+    'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
+    'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
+    'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
+    'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
+    'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
+    'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
+    'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
+}
+
+import sys, os
+try: from hashlib import md5
+except ImportError: from md5 import md5
+
+def _validate_md5(egg_name, data):
+    if egg_name in md5_data:
+        digest = md5(data).hexdigest()
+        if digest != md5_data[egg_name]:
+            print >>sys.stderr, (
+                "md5 validation of %s failed!  (Possible download problem?)"
+                % egg_name
+            )
+            sys.exit(2)
+    return data
+
+def use_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    download_delay=15
+):
+    """Automatically find/download setuptools and make it available on sys.path
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end with
+    a '/').  `to_dir` is the directory where setuptools will be downloaded, if
+    it is not already available.  If `download_delay` is specified, it should
+    be the number of seconds that will be paused before initiating a download,
+    should one be required.  If an older version of setuptools is installed,
+    this routine will print a message to ``sys.stderr`` and raise SystemExit in
+    an attempt to abort the calling script.
+    """
+    was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
+    def do_download():
+        egg = download_setuptools(version, download_base, to_dir, download_delay)
+        sys.path.insert(0, egg)
+        import setuptools; setuptools.bootstrap_install_from = egg
+    try:
+        import pkg_resources
+    except ImportError:
+        return do_download()       
+    try:
+        pkg_resources.require("setuptools>="+version); return
+    except pkg_resources.VersionConflict, e:
+        if was_imported:
+            print >>sys.stderr, (
+            "The required version of setuptools (>=%s) is not available, and\n"
+            "can't be installed while this script is running. Please install\n"
+            " a more recent version first, using 'easy_install -U setuptools'."
+            "\n\n(Currently using %r)"
+            ) % (version, e.args[0])
+            sys.exit(2)
+        else:
+            del pkg_resources, sys.modules['pkg_resources']    # reload ok
+            return do_download()
+    except pkg_resources.DistributionNotFound:
+        return do_download()
+
+def download_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    delay = 15
+):
+    """Download setuptools from a specified location and return its filename
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end
+    with a '/'). `to_dir` is the directory where the egg will be downloaded.
+    `delay` is the number of seconds to pause before an actual download attempt.
+    """
+    import urllib2, shutil
+    egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
+    url = download_base + egg_name
+    saveto = os.path.join(to_dir, egg_name)
+    src = dst = None
+    if not os.path.exists(saveto):  # Avoid repeated downloads
+        try:
+            from distutils import log
+            if delay:
+                log.warn("""
+---------------------------------------------------------------------------
+This script requires setuptools version %s to run (even to display
+help).  I will attempt to download it for you (from
+%s), but
+you may need to enable firewall access for this script first.
+I will start the download in %d seconds.
+
+(Note: if this machine does not have network access, please obtain the file
+
+   %s
+
+and place it in this directory before rerunning this script.)
+---------------------------------------------------------------------------""",
+                    version, download_base, delay, url
+                ); from time import sleep; sleep(delay)
+            log.warn("Downloading %s", url)
+            src = urllib2.urlopen(url)
+            # Read/write all in one block, so we don't create a corrupt file
+            # if the download is interrupted.
+            data = _validate_md5(egg_name, src.read())
+            dst = open(saveto,"wb"); dst.write(data)
+        finally:
+            if src: src.close()
+            if dst: dst.close()
+    return os.path.realpath(saveto)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def main(argv, version=DEFAULT_VERSION):
+    """Install or upgrade setuptools and EasyInstall"""
+    try:
+        import setuptools
+    except ImportError:
+        egg = None
+        try:
+            egg = download_setuptools(version, delay=0)
+            sys.path.insert(0,egg)
+            from setuptools.command.easy_install import main
+            return main(list(argv)+[egg])   # we're done here
+        finally:
+            if egg and os.path.exists(egg):
+                os.unlink(egg)
+    else:
+        if setuptools.__version__ == '0.0.1':
+            print >>sys.stderr, (
+            "You have an obsolete version of setuptools installed.  Please\n"
+            "remove it from your system entirely before rerunning this script."
+            )
+            sys.exit(2)
+
+    req = "setuptools>="+version
+    import pkg_resources
+    try:
+        pkg_resources.require(req)
+    except pkg_resources.VersionConflict:
+        try:
+            from setuptools.command.easy_install import main
+        except ImportError:
+            from easy_install import main
+        main(list(argv)+[download_setuptools(delay=0)])
+        sys.exit(0) # try to force an exit
+    else:
+        if argv:
+            from setuptools.command.easy_install import main
+            main(argv)
+        else:
+            print "Setuptools version",version,"or greater has been installed."
+            print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
+
+def update_md5(filenames):
+    """Update our built-in md5 registry"""
+
+    import re
+
+    for name in filenames:
+        base = os.path.basename(name)
+        f = open(name,'rb')
+        md5_data[base] = md5(f.read()).hexdigest()
+        f.close()
+
+    data = ["    %r: %r,\n" % it for it in md5_data.items()]
+    data.sort()
+    repl = "".join(data)
+
+    import inspect
+    srcfile = inspect.getsourcefile(sys.modules[__name__])
+    f = open(srcfile, 'rb'); src = f.read(); f.close()
+
+    match = re.search("\nmd5_data = {\n([^}]+)}", src)
+    if not match:
+        print >>sys.stderr, "Internal error!"
+        sys.exit(2)
+
+    src = src[:match.start(1)] + repl + src[match.end(1):]
+    f = open(srcfile,'w')
+    f.write(src)
+    f.close()
+
+
+if __name__=='__main__':
+    if len(sys.argv)>2 and sys.argv[1]=='--md5update':
+        update_md5(sys.argv[2:])
+    else:
+        main(sys.argv[1:])
+
+
+
+
+
+
diff --git a/iso3166/__init__.py b/iso3166/__init__.py
new file mode 100644
index 0000000..5c562d5
--- /dev/null
+++ b/iso3166/__init__.py
@@ -0,0 +1,379 @@
+# -*- coding: utf-8 -*-
+
+import re
+from numbers import Integral
+from collections import namedtuple
+
+__all__ = ["countries"]
+
+try:
+    basestring
+except NameError:
+    basestring = str
+
+Country = namedtuple('Country',
+                     'name alpha2 alpha3 numeric apolitical_name')
+
+_records = [
+    Country(u"Afghanistan", "AF", "AFG", "004", u"Afghanistan"),
+    Country(u"Åland Islands", "AX", "ALA", "248", u"Åland Islands"),
+    Country(u"Albania", "AL", "ALB", "008", u"Albania"),
+    Country(u"Algeria", "DZ", "DZA", "012", u"Algeria"),
+    Country(u"American Samoa", "AS", "ASM", "016", u"American Samoa"),
+    Country(u"Andorra", "AD", "AND", "020", u"Andorra"),
+    Country(u"Angola", "AO", "AGO", "024", u"Angola"),
+    Country(u"Anguilla", "AI", "AIA", "660", u"Anguilla"),
+    Country(u"Antarctica", "AQ", "ATA", "010", u"Antarctica"),
+    Country(u"Antigua and Barbuda", "AG", "ATG", "028",
+            u"Antigua and Barbuda"),
+    Country(u"Argentina", "AR", "ARG", "032", u"Argentina"),
+    Country(u"Armenia", "AM", "ARM", "051", u"Armenia"),
+    Country(u"Aruba", "AW", "ABW", "533", u"Aruba"),
+    Country(u"Australia", "AU", "AUS", "036", u"Australia"),
+    Country(u"Austria", "AT", "AUT", "040", u"Austria"),
+    Country(u"Azerbaijan", "AZ", "AZE", "031", u"Azerbaijan"),
+    Country(u"Bahamas", "BS", "BHS", "044", u"Bahamas"),
+    Country(u"Bahrain", "BH", "BHR", "048", u"Bahrain"),
+    Country(u"Bangladesh", "BD", "BGD", "050", u"Bangladesh"),
+    Country(u"Barbados", "BB", "BRB", "052", u"Barbados"),
+    Country(u"Belarus", "BY", "BLR", "112", u"Belarus"),
+    Country(u"Belgium", "BE", "BEL", "056", u"Belgium"),
+    Country(u"Belize", "BZ", "BLZ", "084", u"Belize"),
+    Country(u"Benin", "BJ", "BEN", "204", u"Benin"),
+    Country(u"Bermuda", "BM", "BMU", "060", u"Bermuda"),
+    Country(u"Bhutan", "BT", "BTN", "064", u"Bhutan"),
+    Country(u"Bolivia, Plurinational State of", "BO", "BOL", "068",
+            u"Bolivia, Plurinational State of"),
+    Country(u"Bonaire, Sint Eustatius and Saba", "BQ", "BES", "535",
+            u"Bonaire, Sint Eustatius and Saba"),
+    Country(u"Bosnia and Herzegovina", "BA", "BIH", "070",
+            u"Bosnia and Herzegovina"),
+    Country(u"Botswana", "BW", "BWA", "072", u"Botswana"),
+    Country(u"Bouvet Island", "BV", "BVT", "074", u"Bouvet Island"),
+    Country(u"Brazil", "BR", "BRA", "076", u"Brazil"),
+    Country(u"British Indian Ocean Territory", "IO", "IOT", "086",
+            u"British Indian Ocean Territory"),
+    Country(u"Brunei Darussalam", "BN", "BRN", "096",
+            u"Brunei Darussalam"),
+    Country(u"Bulgaria", "BG", "BGR", "100", u"Bulgaria"),
+    Country(u"Burkina Faso", "BF", "BFA", "854", u"Burkina Faso"),
+    Country(u"Burundi", "BI", "BDI", "108", u"Burundi"),
+    Country(u"Cambodia", "KH", "KHM", "116", u"Cambodia"),
+    Country(u"Cameroon", "CM", "CMR", "120", u"Cameroon"),
+    Country(u"Canada", "CA", "CAN", "124", u"Canada"),
+    Country(u"Cabo Verde", "CV", "CPV", "132", u"Cabo Verde"),
+    Country(u"Cayman Islands", "KY", "CYM", "136", u"Cayman Islands"),
+    Country(u"Central African Republic", "CF", "CAF", "140",
+            u"Central African Republic"),
+    Country(u"Chad", "TD", "TCD", "148", u"Chad"),
+    Country(u"Chile", "CL", "CHL", "152", u"Chile"),
+    Country(u"China", "CN", "CHN", "156", u"China"),
+    Country(u"Christmas Island", "CX", "CXR", "162", u"Christmas Island"),
+    Country(u"Cocos (Keeling) Islands", "CC", "CCK", "166",
+            u"Cocos (Keeling) Islands"),
+    Country(u"Colombia", "CO", "COL", "170", u"Colombia"),
+    Country(u"Comoros", "KM", "COM", "174", u"Comoros"),
+    Country(u"Congo", "CG", "COG", "178", u"Congo"),
+    Country(u"Congo, Democratic Republic of the", "CD", "COD", "180",
+            u"Congo, Democratic Republic of the"),
+    Country(u"Cook Islands", "CK", "COK", "184", u"Cook Islands"),
+    Country(u"Costa Rica", "CR", "CRI", "188", u"Costa Rica"),
+    Country(u"Côte d'Ivoire", "CI", "CIV", "384", u"Côte d'Ivoire"),
+    Country(u"Croatia", "HR", "HRV", "191", u"Croatia"),
+    Country(u"Cuba", "CU", "CUB", "192", u"Cuba"),
+    Country(u"Curaçao", "CW", "CUW", "531", u"Curaçao"),
+    Country(u"Cyprus", "CY", "CYP", "196", u"Cyprus"),
+    Country(u"Czechia", "CZ", "CZE", "203", u"Czechia"),
+    Country(u"Denmark", "DK", "DNK", "208", u"Denmark"),
+    Country(u"Djibouti", "DJ", "DJI", "262", u"Djibouti"),
+    Country(u"Dominica", "DM", "DMA", "212", u"Dominica"),
+    Country(u"Dominican Republic", "DO", "DOM", "214", u"Dominican Republic"),
+    Country(u"Ecuador", "EC", "ECU", "218", u"Ecuador"),
+    Country(u"Egypt", "EG", "EGY", "818", u"Egypt"),
+    Country(u"El Salvador", "SV", "SLV", "222", u"El Salvador"),
+    Country(u"Equatorial Guinea", "GQ", "GNQ", "226", u"Equatorial Guinea"),
+    Country(u"Eritrea", "ER", "ERI", "232", u"Eritrea"),
+    Country(u"Estonia", "EE", "EST", "233", u"Estonia"),
+    Country(u"Ethiopia", "ET", "ETH", "231", u"Ethiopia"),
+    Country(u"Falkland Islands (Malvinas)", "FK", "FLK", "238",
+            u"Falkland Islands (Malvinas)"),
+    Country(u"Faroe Islands", "FO", "FRO", "234", u"Faroe Islands"),
+    Country(u"Fiji", "FJ", "FJI", "242", u"Fiji"),
+    Country(u"Finland", "FI", "FIN", "246", u"Finland"),
+    Country(u"France", "FR", "FRA", "250", u"France"),
+    Country(u"French Guiana", "GF", "GUF", "254", u"French Guiana"),
+    Country(u"French Polynesia", "PF", "PYF", "258", u"French Polynesia"),
+    Country(u"French Southern Territories", "TF", "ATF", "260",
+            u"French Southern Territories"),
+    Country(u"Gabon", "GA", "GAB", "266", u"Gabon"),
+    Country(u"Gambia", "GM", "GMB", "270", u"Gambia"),
+    Country(u"Georgia", "GE", "GEO", "268", u"Georgia"),
+    Country(u"Germany", "DE", "DEU", "276", u"Germany"),
+    Country(u"Ghana", "GH", "GHA", "288", u"Ghana"),
+    Country(u"Gibraltar", "GI", "GIB", "292", u"Gibraltar"),
+    Country(u"Greece", "GR", "GRC", "300", u"Greece"),
+    Country(u"Greenland", "GL", "GRL", "304", u"Greenland"),
+    Country(u"Grenada", "GD", "GRD", "308", u"Grenada"),
+    Country(u"Guadeloupe", "GP", "GLP", "312", u"Guadeloupe"),
+    Country(u"Guam", "GU", "GUM", "316", u"Guam"),
+    Country(u"Guatemala", "GT", "GTM", "320", u"Guatemala"),
+    Country(u"Guernsey", "GG", "GGY", "831", u"Guernsey"),
+    Country(u"Guinea", "GN", "GIN", "324", u"Guinea"),
+    Country(u"Guinea-Bissau", "GW", "GNB", "624", u"Guinea-Bissau"),
+    Country(u"Guyana", "GY", "GUY", "328", u"Guyana"),
+    Country(u"Haiti", "HT", "HTI", "332", u"Haiti"),
+    Country(u"Heard Island and McDonald Islands", "HM", "HMD", "334",
+            u"Heard Island and McDonald Islands"),
+    Country(u"Holy See", "VA", "VAT", "336", u"Holy See"),
+    Country(u"Honduras", "HN", "HND", "340", u"Honduras"),
+    Country(u"Hong Kong", "HK", "HKG", "344", u"Hong Kong"),
+    Country(u"Hungary", "HU", "HUN", "348", u"Hungary"),
+    Country(u"Iceland", "IS", "ISL", "352", u"Iceland"),
+    Country(u"India", "IN", "IND", "356", u"India"),
+    Country(u"Indonesia", "ID", "IDN", "360", u"Indonesia"),
+    Country(u"Iran, Islamic Republic of", "IR", "IRN", "364",
+            u"Iran, Islamic Republic of"),
+    Country(u"Iraq", "IQ", "IRQ", "368", u"Iraq"),
+    Country(u"Ireland", "IE", "IRL", "372", u"Ireland"),
+    Country(u"Isle of Man", "IM", "IMN", "833", u"Isle of Man"),
+    Country(u"Israel", "IL", "ISR", "376", u"Israel"),
+    Country(u"Italy", "IT", "ITA", "380", u"Italy"),
+    Country(u"Jamaica", "JM", "JAM", "388", u"Jamaica"),
+    Country(u"Japan", "JP", "JPN", "392", u"Japan"),
+    Country(u"Jersey", "JE", "JEY", "832", u"Jersey"),
+    Country(u"Jordan", "JO", "JOR", "400", u"Jordan"),
+    Country(u"Kazakhstan", "KZ", "KAZ", "398", u"Kazakhstan"),
+    Country(u"Kenya", "KE", "KEN", "404", u"Kenya"),
+    Country(u"Kiribati", "KI", "KIR", "296", u"Kiribati"),
+    Country(u"Korea, Democratic People's Republic of", "KP", "PRK", "408",
+            u"Korea, Democratic People's Republic of"),
+    Country(u"Korea, Republic of", "KR", "KOR", "410", u"Korea, Republic of"),
+    Country(u"Kuwait", "KW", "KWT", "414", u"Kuwait"),
+    Country(u"Kyrgyzstan", "KG", "KGZ", "417", u"Kyrgyzstan"),
+    Country(u"Lao People's Democratic Republic", "LA", "LAO", "418",
+            u"Lao People's Democratic Republic"),
+    Country(u"Latvia", "LV", "LVA", "428", u"Latvia"),
+    Country(u"Lebanon", "LB", "LBN", "422", u"Lebanon"),
+    Country(u"Lesotho", "LS", "LSO", "426", u"Lesotho"),
+    Country(u"Liberia", "LR", "LBR", "430", u"Liberia"),
+    Country(u"Libya", "LY", "LBY", "434", u"Libya"),
+    Country(u"Liechtenstein", "LI", "LIE", "438", u"Liechtenstein"),
+    Country(u"Lithuania", "LT", "LTU", "440", u"Lithuania"),
+    Country(u"Luxembourg", "LU", "LUX", "442", u"Luxembourg"),
+    Country(u"Macao", "MO", "MAC", "446", u"Macao"),
+    Country(u"Macedonia, the former Yugoslav Republic of", "MK", "MKD", "807",
+            u"Macedonia, the former Yugoslav Republic of"),
+    Country(u"Madagascar", "MG", "MDG", "450", u"Madagascar"),
+    Country(u"Malawi", "MW", "MWI", "454", u"Malawi"),
+    Country(u"Malaysia", "MY", "MYS", "458", u"Malaysia"),
+    Country(u"Maldives", "MV", "MDV", "462", u"Maldives"),
+    Country(u"Mali", "ML", "MLI", "466", u"Mali"),
+    Country(u"Malta", "MT", "MLT", "470", u"Malta"),
+    Country(u"Marshall Islands", "MH", "MHL", "584", u"Marshall Islands"),
+    Country(u"Martinique", "MQ", "MTQ", "474", u"Martinique"),
+    Country(u"Mauritania", "MR", "MRT", "478", u"Mauritania"),
+    Country(u"Mauritius", "MU", "MUS", "480", u"Mauritius"),
+    Country(u"Mayotte", "YT", "MYT", "175", u"Mayotte"),
+    Country(u"Mexico", "MX", "MEX", "484", u"Mexico"),
+    Country(u"Micronesia, Federated States of", "FM", "FSM", "583",
+            u"Micronesia, Federated States of"),
+    Country(u"Moldova, Republic of", "MD", "MDA", "498",
+            u"Moldova, Republic of"),
+    Country(u"Monaco", "MC", "MCO", "492", u"Monaco"),
+    Country(u"Mongolia", "MN", "MNG", "496", u"Mongolia"),
+    Country(u"Montenegro", "ME", "MNE", "499", u"Montenegro"),
+    Country(u"Montserrat", "MS", "MSR", "500", u"Montserrat"),
+    Country(u"Morocco", "MA", "MAR", "504", u"Morocco"),
+    Country(u"Mozambique", "MZ", "MOZ", "508", u"Mozambique"),
+    Country(u"Myanmar", "MM", "MMR", "104", u"Myanmar"),
+    Country(u"Namibia", "NA", "NAM", "516", u"Namibia"),
+    Country(u"Nauru", "NR", "NRU", "520", u"Nauru"),
+    Country(u"Nepal", "NP", "NPL", "524", u"Nepal"),
+    Country(u"Netherlands", "NL", "NLD", "528", u"Netherlands"),
+    Country(u"New Caledonia", "NC", "NCL", "540", u"New Caledonia"),
+    Country(u"New Zealand", "NZ", "NZL", "554", u"New Zealand"),
+    Country(u"Nicaragua", "NI", "NIC", "558", u"Nicaragua"),
+    Country(u"Niger", "NE", "NER", "562", u"Niger"),
+    Country(u"Nigeria", "NG", "NGA", "566", u"Nigeria"),
+    Country(u"Niue", "NU", "NIU", "570", u"Niue"),
+    Country(u"Norfolk Island", "NF", "NFK", "574", u"Norfolk Island"),
+    Country(u"Northern Mariana Islands", "MP", "MNP", "580",
+            u"Northern Mariana Islands"),
+    Country(u"Norway", "NO", "NOR", "578", u"Norway"),
+    Country(u"Oman", "OM", "OMN", "512", u"Oman"),
+    Country(u"Pakistan", "PK", "PAK", "586", u"Pakistan"),
+    Country(u"Palau", "PW", "PLW", "585", u"Palau"),
+    Country(u"Palestine, State of", "PS", "PSE", "275",
+            u"Palestine"),
+    Country(u"Panama", "PA", "PAN", "591", u"Panama"),
+    Country(u"Papua New Guinea", "PG", "PNG", "598",
+            u"Papua New Guinea"),
+    Country(u"Paraguay", "PY", "PRY", "600", u"Paraguay"),
+    Country(u"Peru", "PE", "PER", "604", u"Peru"),
+    Country(u"Philippines", "PH", "PHL", "608", u"Philippines"),
+    Country(u"Pitcairn", "PN", "PCN", "612", u"Pitcairn"),
+    Country(u"Poland", "PL", "POL", "616", u"Poland"),
+    Country(u"Portugal", "PT", "PRT", "620", u"Portugal"),
+    Country(u"Puerto Rico", "PR", "PRI", "630", u"Puerto Rico"),
+    Country(u"Qatar", "QA", "QAT", "634", u"Qatar"),
+    Country(u"Réunion", "RE", "REU", "638", u"Réunion"),
+    Country(u"Romania", "RO", "ROU", "642", u"Romania"),
+    Country(u"Russian Federation", "RU", "RUS", "643",
+            u"Russian Federation"),
+    Country(u"Rwanda", "RW", "RWA", "646", u"Rwanda"),
+    Country(u"Saint Barthélemy", "BL", "BLM", "652",
+            u"Saint Barthélemy"),
+    Country(u"Saint Helena, Ascension and Tristan da Cunha",
+            "SH", "SHN", "654",
+            u"Saint Helena, Ascension and Tristan da Cunha"),
+    Country(u"Saint Kitts and Nevis", "KN", "KNA", "659",
+            u"Saint Kitts and Nevis"),
+    Country(u"Saint Lucia", "LC", "LCA", "662", u"Saint Lucia"),
+    Country(u"Saint Martin (French part)", "MF", "MAF", "663",
+            u"Saint Martin (French part)"),
+    Country(u"Saint Pierre and Miquelon", "PM", "SPM", "666",
+            u"Saint Pierre and Miquelon"),
+    Country(u"Saint Vincent and the Grenadines", "VC", "VCT", "670",
+            u"Saint Vincent and the Grenadines"),
+    Country(u"Samoa", "WS", "WSM", "882", u"Samoa"),
+    Country(u"San Marino", "SM", "SMR", "674", u"San Marino"),
+    Country(u"Sao Tome and Principe", "ST", "STP", "678",
+            u"Sao Tome and Principe"),
+    Country(u"Saudi Arabia", "SA", "SAU", "682", u"Saudi Arabia"),
+    Country(u"Senegal", "SN", "SEN", "686", u"Senegal"),
+    Country(u"Serbia", "RS", "SRB", "688", u"Serbia"),
+    Country(u"Seychelles", "SC", "SYC", "690", u"Seychelles"),
+    Country(u"Sierra Leone", "SL", "SLE", "694", u"Sierra Leone"),
+    Country(u"Singapore", "SG", "SGP", "702", u"Singapore"),
+    Country(u"Sint Maarten (Dutch part)", "SX", "SXM", "534",
+            u"Sint Maarten (Dutch part)"),
+    Country(u"Slovakia", "SK", "SVK", "703", u"Slovakia"),
+    Country(u"Slovenia", "SI", "SVN", "705", u"Slovenia"),
+    Country(u"Solomon Islands", "SB", "SLB", "090", u"Solomon Islands"),
+    Country(u"Somalia", "SO", "SOM", "706", u"Somalia"),
+    Country(u"South Africa", "ZA", "ZAF", "710", u"South Africa"),
+    Country(u"South Georgia and the South Sandwich Islands",
+            "GS", "SGS", "239",
+            u"South Georgia and the South Sandwich Islands",),
+    Country(u"South Sudan", "SS", "SSD", "728", u"South Sudan"),
+    Country(u"Spain", "ES", "ESP", "724", u"Spain"),
+    Country(u"Sri Lanka", "LK", "LKA", "144", u"Sri Lanka"),
+    Country(u"Sudan", "SD", "SDN", "729", u"Sudan"),
+    Country(u"Suriname", "SR", "SUR", "740", u"Suriname"),
+    Country(u"Svalbard and Jan Mayen", "SJ", "SJM", "744",
+            u"Svalbard and Jan Mayen"),
+    Country(u"Swaziland", "SZ", "SWZ", "748", u"Swaziland"),
+    Country(u"Sweden", "SE", "SWE", "752", u"Sweden"),
+    Country(u"Switzerland", "CH", "CHE", "756", u"Switzerland"),
+    Country(u"Syrian Arab Republic", "SY", "SYR", "760",
+            u"Syrian Arab Republic"),
+    Country(u"Taiwan, Province of China", "TW", "TWN", "158",
+            u"Taiwan"),
+    Country(u"Tajikistan", "TJ", "TJK", "762", u"Tajikistan"),
+    Country(u"Tanzania, United Republic of", "TZ", "TZA", "834",
+            u"Tanzania, United Republic of"),
+    Country(u"Thailand", "TH", "THA", "764", u"Thailand"),
+    Country(u"Timor-Leste", "TL", "TLS", "626", u"Timor-Leste"),
+    Country(u"Togo", "TG", "TGO", "768", u"Togo"),
+    Country(u"Tokelau", "TK", "TKL", "772", u"Tokelau"),
+    Country(u"Tonga", "TO", "TON", "776", u"Tonga"),
+    Country(u"Trinidad and Tobago", "TT", "TTO", "780",
+            u"Trinidad and Tobago"),
+    Country(u"Tunisia", "TN", "TUN", "788", u"Tunisia"),
+    Country(u"Turkey", "TR", "TUR", "792", u"Turkey"),
+    Country(u"Turkmenistan", "TM", "TKM", "795", u"Turkmenistan"),
+    Country(u"Turks and Caicos Islands", "TC", "TCA", "796",
+            u"Turks and Caicos Islands"),
+    Country(u"Tuvalu", "TV", "TUV", "798", u"Tuvalu"),
+    Country(u"Uganda", "UG", "UGA", "800", u"Uganda"),
+    Country(u"Ukraine", "UA", "UKR", "804", u"Ukraine"),
+    Country(u"United Arab Emirates", "AE", "ARE", "784",
+            u"United Arab Emirates"),
+    Country(u"United Kingdom of Great Britain and Northern Ireland",
+            "GB", "GBR", "826",
+            u"United Kingdom of Great Britain and Northern Ireland"),
+    Country(u"United States of America", "US", "USA", "840",
+            u"United States of America"),
+    Country(u"United States Minor Outlying Islands", "UM", "UMI", "581",
+            u"United States Minor Outlying Islands"),
+    Country(u"Uruguay", "UY", "URY", "858", u"Uruguay"),
+    Country(u"Uzbekistan", "UZ", "UZB", "860", u"Uzbekistan"),
+    Country(u"Vanuatu", "VU", "VUT", "548", u"Vanuatu"),
+    Country(u"Venezuela, Bolivarian Republic of", "VE", "VEN", "862",
+            u"Venezuela, Bolivarian Republic of"),
+    Country(u"Viet Nam", "VN", "VNM", "704", u"Viet Nam"),
+    Country(u"Virgin Islands, British", "VG", "VGB", "092",
+            u"Virgin Islands, British"),
+    Country(u"Virgin Islands, U.S.", "VI", "VIR", "850",
+            u"Virgin Islands, U.S."),
+    Country(u"Wallis and Futuna", "WF", "WLF", "876", u"Wallis and Futuna"),
+    Country(u"Western Sahara", "EH", "ESH", "732", u"Western Sahara"),
+    Country(u"Yemen", "YE", "YEM", "887", u"Yemen"),
+    Country(u"Zambia", "ZM", "ZMB", "894", u"Zambia"),
+    Country(u"Zimbabwe", "ZW", "ZWE", "716", u"Zimbabwe")]
+
+
+def _build_index(idx):
+    return dict((r[idx].upper(), r) for r in _records)
+
+
+# Internal country indexes
+_by_alpha2 = _build_index(1)
+_by_alpha3 = _build_index(2)
+_by_numeric = _build_index(3)
+_by_name = _build_index(0)
+_by_apolitical_name = _build_index(4)
+
+
+# Documented accessors for the country indexes
+countries_by_alpha2 = _by_alpha2
+countries_by_alpha3 = _by_alpha3
+countries_by_numeric = _by_numeric
+countries_by_name = _by_name
+countries_by_apolitical_name = _by_apolitical_name
+
+
+NOT_FOUND = object()
+
+
+class _CountryLookup(object):
+
+    def get(self, key, default=NOT_FOUND):
+        if isinstance(key, Integral):
+            r = _by_numeric.get("%03d" % key, default)
+        elif isinstance(key, basestring):
+            k = key.upper()
+            if len(k) == 2:
+                r = _by_alpha2.get(k, default)
+            elif len(k) == 3 and re.match(r"[0-9]{3}", k):
+                r = _by_numeric.get(k, default)
+            elif len(k) == 3:
+                r = _by_alpha3.get(k, default)
+            elif k in _by_name:
+                r = _by_name.get(k, default)
+            else:
+                r = _by_apolitical_name.get(k, default)
+        else:
+            r = default
+
+        if r == NOT_FOUND:
+            raise KeyError(key)
+
+        return r
+
+    __getitem__ = get
+
+    def __len__(self):
+        return len(_records)
+
+    def __iter__(self):
+        return iter(_records)
+
+    def __contains__(self, item):
+        try:
+            self.get(item)
+            return True
+        except KeyError:
+            return False
+
+countries = _CountryLookup()
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..2e9053c
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[bdist_wheel]
+universal = 1
+
+[metadata]
+license_file = LICENSE.txt
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..797d138
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,36 @@
+import os.path
+
+try:
+    from setuptools import setup, find_packages
+except ImportError:
+    from ez_setup import use_setuptools
+    use_setuptools()
+    from setuptools import setup, find_packages
+
+
+def read(fname):
+    return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
+
+setup(name='iso3166',
+      version="0.8",
+      author="Mike Spindel",
+      author_email="mike at spindel.is",
+      license="MIT",
+      keywords="iso 3166-1 country codes",
+      url="http://github.com/deactivated/python-iso3166",
+      description='Self-contained ISO 3166-1 country definitions.',
+      packages=find_packages(exclude=['ez_setup']),
+      long_description=read('README.rst'),
+      zip_safe=False,
+      classifiers=[
+          "Development Status :: 5 - Production/Stable",
+          "License :: OSI Approved :: MIT License",
+          "Intended Audience :: Developers",
+          "Natural Language :: English",
+          "Programming Language :: Python",
+          "Programming Language :: Python :: 2",
+          "Programming Language :: Python :: 2.7",
+          "Programming Language :: Python :: 3",
+          "Programming Language :: Python :: 3.4",
+      ])
diff --git a/tests/test_listings.py b/tests/test_listings.py
new file mode 100644
index 0000000..dfe64e3
--- /dev/null
+++ b/tests/test_listings.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+
+import pytest
+import iso3166
+
+
+def test_country_list():
+    country_list = iso3166.countries
+    assert len(country_list) > 100
+    assert all(isinstance(c, iso3166.Country) for c in country_list)
+
+
+def test_by_name():
+    table = iso3166.countries_by_name
... 116 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-iso3166.git



More information about the Python-modules-commits mailing list