dcp-tools
Manage and load data to Data Commons Platform instances
A Data Commons Platform instance takes
your data as CSVs in a fixed variable-per-row shape, plus a config.json that maps each CSV's
columns onto the Data Commons schema. If you're defining your own statistical variables,
entities, or properties rather than reusing existing ones, you also need MCF (Meta Content
Framework) files describing them. dcp-tools builds and validates that bundle in Python (or from
the CLI) and uploads it to Cloud Storage to trigger the platform's ingestion workflow.
This package was published as bblocks-datacommons-tools until version 0.1.1, and imported as
bblocks.datacommons_tools. Installing the old distribution now pulls in dcp-tools and
redirects those imports with a DeprecationWarning, so existing code keeps working. Update
imports to dcp_tools when convenient.
Install
pip install dcp-tools
Or from GitHub:
pip install git+https://github.com/ONEcampaign/dcp-tools
Quickstart
This builds a config and MCF for a source, a provenance, one input file, and one statistical variable, then exports the bundle to disk.
from pathlib import Path
import pandas as pd
from dcp_tools import CustomDataManager
manager = CustomDataManager()
manager.add_source(dcid="ONEData", url="https://data.one.org")
manager.add_provenance(
dcid="ONEClimateFinance",
url="https://datacommons.one.org/data/climate-finance-files",
source="ONEData",
)
data = pd.DataFrame({
"country": ["Kenya", "Kenya", "Vietnam"],
"year": [2022, 2023, 2023],
"variable": ["climateFinanceProvidedCommitments"] * 3,
"value": [12.4, 15.1, 8.7],
})
manager.add_input_file(
file_name="climate_finance/one_cf_provider_commitments.csv",
provenance="ONEClimateFinance",
data=data,
column_mappings={
"observationAbout": "country",
"date": "year",
"variable": "variable",
"value": "value",
},
observation_properties={"unit": "USDollar"},
)
manager.add_variable_to_mcf(
dcid="climateFinanceProvidedCommitments",
name="Climate finance commitments (bilateral)",
description="Funding committed for climate adaptation and mitigation projects",
stat_type="dcid:measuredValue",
)
manager.add_mcf_file("*.mcf", provenance="ONEClimateFinance")
out_dir = Path("export/climate_finance")
out_dir.mkdir(parents=True, exist_ok=True)
manager.export_all(out_dir)
export_all writes config.json, the CSV, and both MCF files under out_dir. Since we
never called set_import_name, config.json defaults importName to the export directory's
name, and column mappings and the provenance name are resolved to full dcids:
{
"importName": "climate_finance",
"inputFiles": [
{
"filename": "climate_finance/one_cf_provider_commitments.csv",
"provenance": "dcid:provenance/ONEClimateFinance",
"columnMappings": {
"dcid:variableMeasured": "variable",
"dcid:observationDate": "year",
"dcid:value": "value",
"dcid:observationAbout": "country"
},
"observationProperties": {"unit": "USDollar"},
"format": "variablePerRow"
},
{
"pattern": "*.mcf",
"provenance": "dcid:provenance/ONEClimateFinance"
}
]
}
Loading it
Once you have a bundle on disk, dcp_tools.gcp_utilities uploads it and triggers ingestion:
from dcp_tools.gcp_utilities import (
get_kg_settings,
run_ingestion_workflow,
upload_to_cloud_storage,
)
settings = get_kg_settings(source="env", env_file="customDC.env")
upload_to_cloud_storage(settings=settings, directory="export/climate_finance")
run_ingestion_workflow(settings=settings)
run_ingestion_workflow triggers the DCP (Data Commons Platform) ingestion workflow, which
ingests the new data and serves it. dcp-tools 1.0.x pairs with DCP stacks up to 1.1.5, and
dcp-tools 1.1.x with DCP 1.1.6. Starting an ingestion uses Application Default Credentials, or
impersonates ingestion_service_account, and ignores gcp_credentials. See the
loading-data docs for the
full settings reference, and the dcp-tools CLI (upload, ingest, pipeline), which wraps
this same flow.
Contributing
Contributions are welcome! See CONTRIBUTING for how to get started, report bugs, and submit changes.
Metadata
Release files for dcp-tools 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dcp_tools-1.1.0.tar.gz | 49.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dcp_tools-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 109.8 kB
Release files / dcp_tools-1.1.0.tar.gz
| Download URL | dcp_tools-1.1.0.tar.gz |
|---|---|
| Size | 49.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
782f6233d6b9d1e7a090846f654f83286500cf5989ec5023f3860a0d4864b241
|
|
BLAKE2b-256 checksum How to use checksums |
25649d85d2c297a2d0c18a8d7ca2cb209f70c052c56e725fee82995567e36d32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dcp_tools-1.1.0-py3-none-any.whl
| Download URL | dcp_tools-1.1.0-py3-none-any.whl |
|---|---|
| Size | 60.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03aee7bcc5e5191be55c97949ee5250342fbba3539dd69f8be4593d0cffede0f
|
|
BLAKE2b-256 checksum How to use checksums |
5b2a0e3e580ef6b775f640646a2d4ab45943ccef0ef906d141681528540bff5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for dcp-tools 1.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.