The commondata namespace package
Note: we are discussing whether this package is meaningful. See http://lino-framework.org/tickets/109.html
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
commondata.be : Common knowledge about Belgium
commondata.ee: Common knowledge about Estonia
commondata.eg: Common knowledge about Egypt
Features
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.
Installation
The easiest way is to type:
pip install commondata.ee commondata.be
Alternatively you might prefer to use the development version:
$ git clone https://github.com/lsaffre/commondata.git $ git clone https://github.com/lsaffre/commondata-ee.git $ git clone https://github.com/lsaffre/commondata-be.git $ pip install -e commondata $ pip install -e commondata.ee $ pip install -e commondata.be
Online version of this document on https://github.com/lsaffre/commondata
Utilities
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 self.name >>> 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)
مصر
Metadata
Release files for commondata 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| commondata-0.0.2.tar.gz | 4.1 kB | Details |
Release files / commondata-0.0.2.tar.gz
| Download URL | commondata-0.0.2.tar.gz |
|---|---|
| Size | 4.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
249d22e288532fb3364648b7b389b267d73b5867149ebc2fae1b03bc241f658a
|
|
BLAKE2b-256 checksum How to use checksums |
0d625bc9340f4043be75f0c9dc18b1efa54eab6b7c717e19141bf2b08038a9a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |