datawrapper
A lightweight Python wrapper for the Datawrapper API
Features
- Create, get, update, export and delete charts, tables and maps
- Add data from a
pandas.DataFrameor a GeoJSON file with one simple call - Get, update and delete folders, users and teams.
- Retrieve lists of recently edited and updated charts
- Access metadata about your account
Installation
# With `uv` ...
uv add datawrapper
# or, if you prefer...
pip install datawrapper
Quick Start
Create beautiful charts with type-safe, object-oriented Python:
import pandas as pd
import datawrapper as dw
# Configure a bar chart
chart = dw.BarChart(
title="Top Programming Languages 2024",
data=pd.DataFrame(
{"Language": ["Python", "JavaScript", "Java"], "Users": [45.3, 38.2, 30.5]}
),
axis_label_format=dw.NumberFormat.ONE_DECIMAL,
)
# Create and publish (uses DATAWRAPPER_ACCESS_TOKEN environment variable)
chart.create()
chart.publish()
See the full documentation for comprehensive guides on all chart types.
Contributing
Clone the repository and install the locked development dependencies.
uv sync --frozen --all-extras
Install pre-commit to run a battery of automatic quick fixes against your work.
uv run pre-commit install
Run the canonical local checks before opening a pull request.
uv run ruff check ./datawrapper ./tests
uv run ruff format --check ./datawrapper ./tests
uv run mypy ./datawrapper --ignore-missing-imports
uv run pytest
uv build --sdist --wheel
See CONTRIBUTING.md for the full workflow. AI agents should also read AGENTS.md before changing files.
📈 Releases
You can see the list of available releases on the GitHub Releases page.
We follow Semantic Versions specification. When you're ready to make a new release, visit the releases page and create a new entry. Set the tags and press publish. That will trigger a GitHub Action that automatically deploys the code to the Python Package Index.
License
This project is licensed under the terms of the MIT license. See LICENSE for more details.
Citation
@misc{datawrapper,
author = {chekos},
title = {A light-weight python wrapper for the Datawrapper API (v3). While it is not developed by Datawrapper officially, you can use it with your API credentials from datawrapper.de},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/chekos/datawrapper}}
}
Release files for datawrapper 2.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 | |
|---|---|---|---|
| datawrapper-2.1.0.tar.gz | 600.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| datawrapper-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 707.5 kB
Release files / datawrapper-2.1.0.tar.gz
| Download URL | datawrapper-2.1.0.tar.gz |
|---|---|
| Size | 600.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d36e2a87e4dbe06783f60c4214b0126fcf4a78dbb21e6f80e1bcba11c9cfc53
|
|
BLAKE2b-256 checksum How to use checksums |
63c38a207223ffa6db8e1325ad63975bcf4b2dda1faa604cac6056dd9204131f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / datawrapper-2.1.0-py3-none-any.whl
| Download URL | datawrapper-2.1.0-py3-none-any.whl |
|---|---|
| Size | 107.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d52bf49dd28a3db9cf72859f12a0d0a4202deb8b06a7d1cc1b065089a52f2ed
|
|
BLAKE2b-256 checksum How to use checksums |
cde050731bd5bff748373caa1147d651638a05297ea0d2b683d7afb2ce0dce9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|