Skip to main content

A structured collection of common knowledge

Project description

Note: we are discussing whether this package is meaningful. See

This package is the heart of “common data”, a sustainable way of maintaining and sharing structured common knowledge. The Python package itself contains just some utilities and defines the commondata namespace. It is the base for packages like


Maintained in Python

The Python programming language brings together two qualities

  • a syntax which makes it easy (or at least possible) to be used by non-programmers
  • a powerful programming language working behind the scenes

Freely available under the GPL

Free software should not depend on non-free material.

Designed to be imported

The library does not provide much querying functionality. Just the basic minimum, used to write test cases. This is a design choice. This data is meant to be imported into existing systems which offer their own querying facilities.


  • The easiest way is to type:

    pip install
  • Alternatively you might prefer to use the development version:

    $ git clone
    $ git clone
    $ git clone
    $ pip install -e commondata
    $ pip install -e
    $ pip install -e

Online version of this document on


How to use the Place and PlaceGenerator classes.

You define a subclass of Place for each “type” of place:

>>> from commondata.utils import Place, PlaceGenerator
>>> class PlaceInFoo(Place):
...     def __str__(self):
...        return
>>> class Kingdom(PlaceInFoo):
...     value = 1
>>> class County(PlaceInFoo):
...     value = 2
>>> class Borough(PlaceInFoo):
...     value = 3
>>> class Village(PlaceInFoo):
...     value = 3

The PlaceGenerator is used to instantiate to populate

Part 1 : configuration:

>>> pg = PlaceGenerator()
>>> pg.install(Kingdom, County, Borough, Village)
>>> pg.set_args('name')

Part 2 : filling data

>>> root = pg.kingdom("Kwargia")
>>> def fill(pg):
...    pg.county("Kwargia")
...    pg.borough("Kwargia")
...    pg.village("Virts")
...    pg.village("Vinks")
...    pg.county("Gorgia")
...    pg.village("Girts")
...    pg.village("Ginks")
>>> fill(pg)

Part 3 : using the data

>>> [str(x) for x in root.children]
['Kwargia', 'Gorgia']
>>> kwargia = root.children[0]
>>> [str(x) for x in kwargia.children]
['Kwargia', 'Virts', 'Vinks']

Multilingual place names

You use the commondata.utils.PlaceGenerator.set_args() method to specify the names of the fields of subsequent places.

>>> pg = PlaceGenerator()
>>> pg.install(Kingdom, County, Borough, Village)
>>> pg.set_args('name name_ar')
>>> root = pg.kingdom("Egypt", u'\u0645\u0635\u0631')
>>> print(root.name_ar)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for commondata, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size commondata-0.0.2.tar.gz (4.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page