A client for reading data from Open Registers provided by Government Digital Services
Project description
Usage
openregister_client.registers.OpenRegister is the base class that accesses a single register and ignores field data typing information. openregister_client.registers.Register and openregister_client.registers.AlphaRegister use the “register” register to discover available registers and the field data types their items should contain. Records, entries and items (the actual data contained in records) returned are dict subclasses that provide typed attributes to access the register data more easily.
Currently, only compatible with Python 3.6+.
Install using pip install openregister-client.
Usage samples:
# direct register usage; field types will not have correct types, but data can be loaded more simply
from openregister_client.registers import OpenRegister
country_register = OpenRegister(name='country')
country_record = country_register.get_record('GB')
print('The official name for GB is %s' % country_record.item.official_name)
if not country_record.item.is_current:
print('This country is not currently recognised')
# using register auto-discovery to process fields and datatypes
from openregister_client.registers import Register
register = Register()
territory_register = register.get_register('territory')
territory_items = sorted(map(lambda record: record.item, territory_register.get_records()), key=lambda item: item.territory)
for territory in territory_items:
print('The official name for territory %s is %s' % (territory.territory, territory.official_name))
# make a Django model class; works best when using auto-discovery
from openregister_client.django_compat.model_factory import ModelFactory
from openregister_client.registers import Register
country_register = Register().get_register('country')
with open('models.py', 'wt') as f:
f.write(ModelFactory(country_register).get_model_code())
Caching is not implemented. Users of the library can store results of queries or subclass OpenRegister.request to add caching.
Consuming non-json input formats is not supported and probably not necessary.
Development
Please report bugs and open pull requests on GitHub.
Use python setup.py test to run all tests.
Distribute a new version by updating the VERSION tuple in openregister_client/__init__.py and run python setup.py sdist bdist_wheel upload.
To-do
Do not paginate past the end since numbers of entries and records are known
Perhaps lower minimum Python version to 3.4 or 3.5; use typing module
References
Copyright
Copyright © 2017 HM Government (Ministry of Justice Digital Services). See LICENSE.txt for further details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for openregister-client-0.1rc1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c6a87f9d4baf52ccf570690bb3c1970a229177cb1590b52d8b79543f2e80ffc |
|
MD5 | 1fb3443b28f591f373206e46f25b907e |
|
BLAKE2b-256 | 8c5b80602ab0644e8b100389d1107533b777a539fc972e63089abd53bfa2c533 |
Hashes for openregister_client-0.1rc1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29447076ebc7d5864df26cd1203bda30c477110fda62fac0db1b99dd6e5b1360 |
|
MD5 | 718ac589db6e8f5e3991ffed8312f814 |
|
BLAKE2b-256 | 3b6f996d357b084cdb2d3c543002bac5e2b695d1a2fd19b595875c64050b928b |