Miscellaneous CKAN utility library


Keywords
c, k, a, n, u, t, i, l, s, ckan, data, library, open-data
License
MIT
Install
pip install ckanutils==0.14.7

Documentation

ckanutils

Introduction

ckanutils is a Python library for interacting with remote and local CKAN instances. It uses ckanapi under the hood, and is essentially a high level wrapper for it. A command line interface built on top of this library is available at ckanny.

With ckanutils, you can

  • Download a CKAN resource
  • Upload CSV/XLS/XLSX files into a CKAN DataStore
  • and much more...

Requirements

ckanutils has been tested on the following configuration:

  • MacOS X 10.9.5
  • Python 2.7.9

ckanutils requires the following in order to run properly:

Installation

(You are using a virtualenv, right?)

 sudo pip install ckanutils

Usage

ckanutils is intended to be used directly from Python.

Examples

Fetch a remote resource

from ckanutils import CKAN

ckan = CKAN(remote='http://demo.ckan.org')
resource_id = '36f33846-cb43-438e-95fd-f518104a32ed'
r, filepath = ckan.fetch_resource(resource_id, filepath='path/to/file.csv')
print(r.encoding)

Fetch a local resource

from ckanutils import CKAN

ckan = CKAN(api_key='mykey', remote=None)
resource_id = '36f33846-cb43-438e-95fd-f518104a32ed'
r, filepath = ckan.fetch_resource(resource_id, filepath='path/to/file.csv')
print r.encoding

show data

from ckanutils import CKAN

ckan = CKAN(api_key='mykey', remote=None)
resource_id = '36f33846-cb43-438e-95fd-f518104a32ed'
r = ckan.datastore_search(resource_id)
print r.next()

Configuration

ckanutils will use the following Environment Variables if set:

Environment Variable Description
CKAN_API_KEY Your CKAN API Key
CKAN_REMOTE_URL Your CKAN instance remote url
CKAN_USER_AGENT Your user agent

Hash Table

In order to support file hashing, ckanutils creates a hash table resource called hash_table.csv with the following schema:

field type
datastore_id text
hash text

By default the hash table resource will be placed in the package hash_table. ckanutils will create this package if it doesn't exist. Optionally, you can set the hash table package in the command line with the -H, --hash-table option, or in a Python file as the hash_table keyword argument to api.CKAN.

Example:

from ckanutils import api
ckan = api.CKAN(hash_table='custom_hash_table')
hash = ckan.get_hash('36f33846-cb43-438e-95fd-f518104a32ed')

Scripts

ckanutils comes with a built in task manager manage.py and a Makefile.

Setup

pip install -r dev-requirements.txt

Examples

Run python linter and nose tests

manage lint
manage test

Or if make is more your speed...

make lint
make test

Contributing

View CONTRIBUTING.rst

License

ckanutils is distributed under the MIT License, the same as ckanapi.