Skip to main content

tap-grib

tap-grib is a Singer tap for Grib files extractions. It has been tested on ERA5 datasets so far but could be extended to more use cases.

Built with the Meltano Tap SDK for Singer Taps.

Installation

Install from PyPI:

uv tool install tap-grib

Install from GitHub:

uv tool install git+https://github.com/ORG_NAME/tap-grib.git@main

Capabilities

  • catalog
  • discover

Supported Python Versions

  • 3.10
  • 3.11
  • 3.12
  • 3.13
  • 3.14

Configuration

Note: Use a tool like ECCODES to view the grib structure and associate proper configurations. E.g.

grib_ls ./data/test.grib  | less

Accepted Config Options

Settings

Setting Required Default Description
paths True None List of GRIB file path definitions (supports globs).
stream_maps False None Config object for stream maps capability. For more information check out Stream Maps.
stream_maps.else False None Currently, only setting this to __NULL__ is supported. This will remove all other streams.
stream_map_config False None User-defined config values to be used within map expressions.
faker_config False None Config for the Faker instance variable fake used within map expressions. Only applicable if the plugin specifies faker as an additional dependency (through the singer-sdk faker extra or directly).
faker_config.seed False None Value to seed the Faker generator for deterministic output: https://faker.readthedocs.io/en/master/#seeding-the-generator
faker_config.locale False None One or more LCID locale strings to produce localized output for: https://faker.readthedocs.io/en/master/#localization
flattening_enabled False None 'True' to enable schema flattening and automatically expand nested properties.
flattening_max_depth False None The max depth to flatten schemas.

A full list of supported settings and capabilities for this tap is available by running:

tap-grib --about --format=markdown

Examples

config:
  paths:
    # all values in a table
    - path: ./data/test.grib
      # optional bboxes filter, skip records outside the bbox
      # format for bbox is [north_lat, west_lon, south_lat, east_lon]
      bboxes: 
       - [7.0, 45.0, 12.0, 48.0]  # Western Europe
      # optional table name, defaults to file name
      table_name: my_table
      # skip the listed columns
      ignore_fields:
        - ensemble
        - grid_type
        - centre
        - edition
      # drop messages from the past
      skip_past: True
      # drop messages before this reference date, defaults to now
      # skip_past_reference: 2025-01-01

    # test with local docker compose (eg. docker compose up)
    - path: s3://local-data/test.grib
      table_name: s3_test
      ignore_fields:
        - ensemble
        - grid_type
        - centre
        - edition

To use an S3-based storage ensure to provide those envirnoment variables:

  • S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY access key/secret pair
  • S3_ENDPOINT_URL Custom S3 endpoint such as minio or compatible interface

Example:

S3_ACCESS_KEY_ID=minioadmin S3_SECRET_ACCESS_KEY=minioadmin S3_ENDPOINT_URL=http://localhost:19000 meltano run tap-grib target-jsonl

Configure using environment variables

This Singer tap will automatically import any environment variables within the working directory's .env if the --config=ENV is provided, such that config values will be considered if a matching environment variable is set either in the terminal context or in the .env file.

Usage

You can easily run tap-grib by itself or in a pipeline using Meltano.

Executing the Tap Directly

tap-grib --version
tap-grib --help
tap-grib --config CONFIG --discover > ./catalog.json

Developer Resources

Follow these instructions to contribute to this project.

Initialize your Development Environment

Prerequisites:

  • Python 3.10+
  • uv
uv sync

Create and Run Tests

Create tests within the tests subfolder and then run:

uv run pytest

You can also test the tap-grib CLI interface directly using uv run:

uv run tap-grib --help

Testing with Meltano

Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.

Next, install Meltano (if you haven't already) and any needed plugins:

# Install meltano
uv tool install meltano
# Initialize meltano within this directory
cd tap-grib
meltano install

Now you can test and orchestrate using Meltano:

# Test invocation:
meltano invoke tap-grib --version

# OR run a test ELT pipeline:
meltano run tap-grib target-jsonl

SDK Dev Guide

See the dev guide for more instructions on how to use the SDK to develop your own taps and targets.

Metadata

Release files for tap-grib 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tap-grib 1.5.0
File Size Uploaded Provenance
tap_grib-1.5.0.tar.gz 229.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tap-grib 1.5.0
File Interpreter ABI Platform
tap_grib-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 245.5 kB

Release files / tap_grib-1.5.0.tar.gz

Download URL tap_grib-1.5.0.tar.gz
Size 229.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3aab352f1e4a9024ec0a3d4deaedb82e57cae612978d45f045616cce0b05a134
BLAKE2b-256 checksum
How to use checksums
6b7c9a6d734452efecb3a8dc895d2d11c2d192a239a639bc04e02b94ed8a09f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Dec 25, 2025.

Transparency log

Release files / tap_grib-1.5.0-py3-none-any.whl

Download URL tap_grib-1.5.0-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4957237f6f0d8b461d9fd86047138132dc2d1ee5b6a20ea20a0cc6f9b114555
BLAKE2b-256 checksum
How to use checksums
cb5c6fa6805191e99939f29df291f65e35a8fb1a551b609a60a9a4f0bab9334b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Dec 25, 2025.

Transparency log

Security for tap-grib 1.5.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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tap_grib-1.5.0.tar.gz

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 Dec 25, 2025.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page