Skip to main content

Project logo

Published Docs Tests

Mozilla Data Collective Python Client Library

The official Python SDK for accessing and contributing to the Mozilla Data Collective platform.

[!WARNING] Our platform is evolving rapidly. Expect breaking changes while the Python SDK is on 0.X.X versions. Please ensure you are always on the latest version available.

Installation

pip install datacollective

Quick Start

IMPORTANT NOTE: Before trying to access any dataset, make sure you have thoroughly read and agreed to the specific dataset's conditions & licensing terms.

  1. Get your API key from the Mozilla Data Collective dashboard

  2. Set the API key in your environment variable:

Option A: Run this command in your terminal (replace your-api-key-here with your actual API key):

export MDC_API_KEY=your-api-key-here

Option B: Create a .env file in your project directory and add this line:

MDC_API_KEY=your-api-key-here
  1. Get your dataset ID and/or slug from the dataset's page at the MDC website.

[!TIP] You can find the dataset's ID and/or slug from its page on the MDC platform. Click the Download button and select API / Python Access, then switch to the Python Library tab on the pop-up modal. The Dataset ID and Dataset Slug appear at the bottom of the modal. Both can be used interchangeably in the Python library, but the slug is a more user-friendly identifier.

  1. Save a dataset locally:
from datacollective import download_dataset

dataset_path = download_dataset("your-dataset-id")

[!NOTE] download_dataset was previously called save_dataset_to_disk. The old name still works for backward compatibility, but it is deprecated and new code should use download_dataset.

[!TIP] Automatic Resume: If a download is interrupted (e.g., due to a network error or it gets stopped it manually), the next time you try download the same dataset at the same folder location, we will automatically resume from where the download left off!

[!TIP] Set enable_logging=True to emit detailed SDK logs to the console and a local log file at ~/.mozdata/datacollective.log with timestamped entries, a per-session id, and retention of 5 backup files at 10 MB each.

  1. Get information & metadata about a dataset:
from datacollective import get_dataset_details

details = get_dataset_details("your-dataset-id")
  1. Load the dataset into a pandas DataFrame (Alpha version: Only certain MDC datasets are supported right now):
from datacollective import load_dataset

dataset = load_dataset("your-dataset-id")
  1. Or load it as a HuggingFace Dataset object (requires the optional hf extra: pip install / uv add "datacollective[hf]"):
from datacollective import load_dataset

dataset = load_dataset("your-dataset-id", return_format="hf")

Returns a Dataset, or a DatasetDict keyed by split name for datasets with multiple splits. See our docs for more details, including how to lazily decode audio with the Audio() feature.

Programmatic submissions and uploads

[!ΝΟΤΕ] In order to be able to upload datasets in the MDC platform you will first need to Request Access to Upload by navigating to your profile under the Upload tab. Only the credentials (API keys) created after your request has been approved will be able to upload datasets. Any credentials created before your request was approved will not be able to upload datasets.

You can create dataset submissions and upload files with resumable uploads into the MDC platform programmatically using our Python SDK:

from datacollective import DatasetSubmission, License, Task, create_submission_with_upload

submission = DatasetSubmission(
    name="Dataset Name",
    longDescription="A detailed description of the dataset.",
    shortDescription="A brief description of the dataset.",
    locale="en-US",
    task=Task.ASR,
    format="TSV",
    licenseAbbreviation=License.CC_BY_4_0,
    other="This text should provide a detailed description of the dataset, "
          "including its contents, structure, and any relevant information "
          "that would help users understand what the dataset is about "
          "and how it can be used.",
    restrictions="Any restrictions you want to impose on the dataset",
    forbiddenUsage="Use cases that are not allowed with this dataset",
    additionalConditions="Any additional conditions for using the dataset",
    pointOfContactFullName="Jane Doe",
    pointOfContactEmail="jane@example.com",
    fundedByFullName="Funder Name",
    fundedByEmail="funder@example.com",
    legalContactFullName="Legal Name",
    legalContactEmail="legal@example.com",
    createdByFullName="Creator Name",
    createdByEmail="creator@example.com",
    intendedUsage="Describe the intended usage of the dataset, including "
                  "potential applications and use cases.",
    ethicalReviewProcess="Describe the ethical review process that was "
                         "followed for this dataset, including any approvals "
                         "or considerations related to data collection and usage.",
    isPaid=False,  # True = the dataset is compensated and requires `basePriceCents`,
                   # False (default) = the dataset is free to access
    exclusivityOptOut=False,  # True = This dataset is non-exclusive to Mozilla Data Collective, 
                              # False = Dataset is exclusively hosted in Mozilla Data Collective
    agreeToSubmit=True,  # True = You confirm that you have the right to submit this dataset and 
                         # that all information provided in the datasheet is accurate. 
                         # Required to be True to complete the submission process
)

response = create_submission_with_upload(
    file_path="/path/to/dataset.tar.gz",
    submission=submission
)

print(response)

For predefined licenses, pass licenseAbbreviation=License.<VALUE> and leave licenseUrl and license unset. For custom licenses, pass a custom string to license and optionally include licenseUrl and licenseAbbreviation.

To publish a compensated dataset, set isPaid=True and a basePriceCents price in USD cents (US Dollars), e.g. basePriceCents=100_000 for $1,000.00.

[!TIP] To also attach an optional sample of your dataset, pass sample_file_path="/path/to/dataset-sample.tar.gz" to create_submission_with_upload, or upload it separately with upload_sample_file(file_path=..., submission_id=...).

[!TIP] To upload a new .tar.gz version to an already approved dataset, call upload_dataset_file(file_path=..., submission_id=...) directly. Find the submission under Profile → Uploads, open the approved dataset, and copy the value after /profile/submissions/ in the URL. Note that this value is the submission ID, which is different from the public dataset ID.

For more details, visit our docs

License

This project is released under MPL (Mozilla Public License) 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datacollective-0.5.7.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datacollective-0.5.7-py3-none-any.whl (56.2 kB view details)

Uploaded Python 3

File details

Details for the file datacollective-0.5.7.tar.gz.

File metadata

  • Download URL: datacollective-0.5.7.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for datacollective-0.5.7.tar.gz
Algorithm Hash digest
SHA256 fa728b227900ef6b7e8a6ee8bfcc8496a9608d06dc0ec901ee9e63c8869c8a2d
MD5 3ed91454a7701b5f19d2791a251bc70e
BLAKE2b-256 180d48cfc5a2102e18748d7d973ee86057d24c1f3a19002b666a278c6ac0c656

See more details on using hashes here.

File details

Details for the file datacollective-0.5.7-py3-none-any.whl.

File metadata

  • Download URL: datacollective-0.5.7-py3-none-any.whl
  • Upload date:
  • Size: 56.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for datacollective-0.5.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a37d989122aff57e128aaaa3af1b54f7593ef4940215b42cd4b0b0daeee43dd6
MD5 e769e416e75527142639d0db4379e775
BLAKE2b-256 a0a52508b2863b06ce6e8da4d9053aca92592899b07f5b3bf98c2ff4adcec798

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.7 This release

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.27

2 files

0.0.23

2 files

0.0.16

2 files

0.0.11

2 files

0.0.8

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page