ckanext-dataset-series
A fast and simple implementation of Dataset Series.
Dataset Series are loosely defined as collections of datasets that share some common characteristics. These can be related to the nature of the data, scope, publishing process, etc. For instance:
- Budget data release monthly or yearly
- Data split by country / region
- Data big in size split into smaller chunks
- Geospatial data distributed in grids
Dataset Series can be ordered or unordered.
How does it work?
This extension uses a custom dataset type (dataset_series) to define the parent series entities. These are
just datasets and can have any of the standard dataset fields defined.
If the series is ordered, the only mandatory fields they need are the following (shown in the ckanext-scheming schema file definition):
scheming_version: 2
dataset_type: dataset_series
dataset_fields:
# [...]
# Series fields
- field_name: series_order_field
preset: dataset_series_order
- field_name: series_order_type
preset: dataset_series_order_type
At the dataset level, the series membership is defined with the in_series field. Datasets can belong to multiple series:
scheming_version: 2
dataset_type: dataset
dataset_fields:
# [...]
# Series fields
- field_name: in_series
preset: dataset_series_in_series
Once these are in place, datasets can be assigned to a series by setting the in_series field via the API or the UI form.
API
If a dataset belongs to a series, a new series_navigation key is added to the response of the package_show action, showing details of the series it belongs to:
{
"name": "test-dataset-in-series",
"type": "dataset",
"series_navigation": [
{
"id": "20f41df2-0b50-4b6b-9a75-44eb39411dca",
"name": "test-dataset-series",
"title": "Test Dataset series",
}
]
}
If that series is ordered, it will include links to the previous and next dataset on the series (or None if they don't exist):
{
"name": "test-series-member-2",
"type": "dataset",
"series_navigation": [
{
"id": "20f41df2-0b50-4b6b-9a75-44eb39411dca",
"name": "test-dataset-series",
"title": "Test Dataset series",
"next": {
"id": "ce8fb09a-f285-4ba8-952e-46dbde08c509",
"name": "test-series-member-3",
"title": "Test series member 3"
"type": "dataset"
},
"previous": {
"id": "826bd499-40e5-4d92-bfa1-f777775f0d76",
"name": "test-series-member-1",
"title": "Test series member 1",
"type": "dataset"
}
}
]
}
Querying the series dataset will also return a series_navigation link if ordered, in this case linking to the first and last members:
{
"name": "test-dataset-series",
"type": "dataset_series",
"series_navigation": {
"count": 4,
"first": {
"id": "826bd499-40e5-4d92-bfa1-f777775f0d76",
"name": "test-series-member-1",
"title": "Test series member 1",
"type": "dataset"
},
"last": {
"id": "ce8fb09a-f285-4ba8-952e-46dbde08c509",
"name": "test-series-member-3",
"title": "Test series member 3",
"type": "dataset"
}
}
}
UI
The extension includes a series_navigation.html snippet that adds a series navigation to the dataset page, with links to the previous and next datasets in the series. The snippet is left deliberately unstyled so sites can tweak it to fit their own design.
For example, you can adjust your package/read.html template to include the snippet in the following way:
{% ckan_extends %}
{% block package_description %}
{% snippet "package/snippets/series_navigation.html", package=pkg %}
{{ super() }}
{% endblock %}
- Series page showing a navigation of the member datasets
Requirements
If your extension works across different versions you can add the following table:
Compatibility with core CKAN versions:
| CKAN version | Compatible? |
|---|---|
| 2.9 | not tested |
| 2.10 | yes |
| 2.11 | yes |
Installation
To install ckanext-dataset-series:
-
Activate your CKAN virtual environment, for example:
. /usr/lib/ckan/default/bin/activate -
Clone the source and install it on the virtualenv
git clone https://github.com/ckan/ckanext-dataset-series.git cd ckanext-dataset-series pip install -e . pip install -r requirements.txt
-
Add
dataset_seriesto theckan.pluginssetting in your CKAN config file (by default the config file is located at/etc/ckan/default/ckan.ini). -
Restart CKAN.
Developer installation
To install ckanext-dataset-series for development, activate your CKAN virtualenv and do:
git clone https://github.com//ckanext-dataset-series.git
cd ckanext-dataset-series
pip install -e .
pip install -r dev-requirements.txt
Tests
To run the tests, do:
pytest --ckan-ini=test.ini
License
Release files for ckanext-dataset-series 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ckanext_dataset_series-0.1.1.tar.gz | 27.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ckanext_dataset_series-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.6 kB
Release files / ckanext_dataset_series-0.1.1.tar.gz
| Download URL | ckanext_dataset_series-0.1.1.tar.gz |
|---|---|
| Size | 27.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
20321404ece70bb464b46b8780cc204a174097d17cf91ddd2c62567b40fa35a1
|
|
BLAKE2b-256 checksum How to use checksums |
5c493c43cac1e929ad8b72be4214141174a2d3c409b20fea6cdc10dc48286582
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 20, 2025.
Transparency logRelease files / ckanext_dataset_series-0.1.1-py3-none-any.whl
| Download URL | ckanext_dataset_series-0.1.1-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5e08b2dbc2f46605892a7b6e1be68d6fa1fbd6356fb0e7aaa3aad216835ac4fb
|
|
BLAKE2b-256 checksum How to use checksums |
9e118170be87406abdc231684bc0fe4751c32adbf7f698c6f9286c5dabf75834
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 20, 2025.
Transparency log