caeli-data
The Python client of the Caeli data repository API (https://data.caeli.space). One door for every producer and reader of datasets: the inventory platform, pipelines and colleagues all use this library; nothing writes to the tables or the buckets directly.
pip install caeli-data # caeli-data[aws] also brings boto3, for Repository.from_secret
from caeli_data import Repository, TableRejected, IngestFailed
repo = Repository() # CAELI_API_URL (default https://data.caeli.space) and CAELI_API_KEY
repo.whoami() # {"name": "tim", "role": "admin", ...}
# a pandas DataFrame with utc_time, latitude, longitude and the value columns: the platform derives the rest
# (pt_region, pt_tile, row_hash; the coordinates rounded to 5 decimals), splits per region and month, loads, waits
jobs = repo.load_dataframe(df, "cdse-sentinel-5p-l2-no2", software={"my-pipeline": "1.0"}, source_ref="download 4711")
print(jobs[0]["message"]) # "200000 rows appended in cdse_sentinel_5p_l2_no2, ... item N_EU__2026-09__v1 now ..."
# a source with its own row identity (a station id, an orbit with scanline and pixel) names it
jobs = repo.load_dataframe(df, "openaq-stations-no2", row_key="location_id")
# a prepared Parquet file with the six standard columns already in it, any regions and months
jobs = repo.load_file("prepared.parquet", "cdse-sentinel-5p-l2-no2", software={"my-pipeline": "1.0"})
A complete month delivered again is a new version of that month: mode="replace", reason="re-import of 2026-09".
A service takes its key from Secrets Manager: Repository.from_secret("caeli/data-platform/api-key-inventory-platform").
The rules a table must meet are in Caeli_data_repository_conventions (section 6); the library checks them before
uploading and says which rule is broken (TableRejected; for an extra column the message carries the schema change to
make). IngestFailed means the platform failed; the same data sent again is the same job, never a double load.
Python 3.9 and later.
Rasters, the read side (catalogue, versions, downloads) and the command line follow in the next versions.
Metadata
Release files for caeli-data 0.4.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 | |
|---|---|---|---|---|
| caeli_data-0.4.0.tar.gz | 27.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caeli_data-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.8 kB
Release files / caeli_data-0.4.0.tar.gz
| Download URL | caeli_data-0.4.0.tar.gz |
|---|---|
| Size | 27.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14039691df4d432436946a124e4e2d87ef0590d40de6e0107bbfd08d204e8ebc
|
|
BLAKE2b-256 checksum How to use checksums |
65dd459da4fecf6b9f7c992a3fd9fbc20b50db7c0762a981ec087156fc19004a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / caeli_data-0.4.0-py3-none-any.whl
| Download URL | caeli_data-0.4.0-py3-none-any.whl |
|---|---|
| Size | 20.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
029c2ca0e95b926dd38beb3ea5bd7d9b242381466759310d02659c0f644e8cad
|
|
BLAKE2b-256 checksum How to use checksums |
b9f27eede4cd2953a8e6c38af1dec81131ff31d7f97cb04a5ca291071a4d8492
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for caeli-data 0.4.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.