Skip to main content

Python interface to the ecCodes GRIB and BUFR decoder/encoder

Project description

https://img.shields.io/pypi/v/eccodes.svg

Python 3 interface to decode and encode GRIB and BUFR files via the ECMWF ecCodes library.

Features:

  • reads and writes GRIB 1 and 2 files,

  • reads and writes BUFR 3 and 4 files,

  • supports all modern versions of Python and PyPy3,

  • works on most Linux distributions and MacOS, the ecCodes C-library is the only system dependency,

  • PyPI package can be installed without compiling, at the cost of being twice as slow as the original ecCodes module,

  • an optional compile step makes the code as fast as the original module but it needs the recommended (the most up-to-date) version of ecCodes.

Limitations:

  • Microsoft Windows support is untested.

Installation

From version 2.37.0, the ecCodes Python bindings on PyPi additionally provide the ecCodes binary library, and will follow the version numbering of the ecCodes binary library. See below for details.

Installation from PyPI

The package can be installed from PyPI with:

$ pip install eccodes

This installation will, by default, include the ecCodes binary library (as of version 2.37.0), meaning that no external ecCodes binary library is required. If you have an external ecCodes binary library that you wish to use, set the following environment variable before you import eccodes:

$ export ECCODES_PYTHON_USE_FINDLIBS=1

If this is set, the ecCodes’ Python bindings will use the findlibs package to locate the binary library (findlibs was the only mechanism used before version 2.37.0).

You may also install a version of ecCodes’ Python interface that does not include a binary library at all, in which case the findlibs mechanism will be used as before:

$ pip install eccodes --no-binary eccodes

See also ‘Debugging the library search’, below.

Installation from conda

ecCodes’ Python bindings can be installed from the conda-forge channel with:

$ conda install -c conda-forge python-eccodes

This will install the Python bindings (python-eccodes) and also the ecCodes binary library (eccodes) on which they depend.

System dependencies

The Python module depends on the ECMWF ecCodes binary library. From version 2.37.0, this library is supplied with the Python module on both PyPi and conda, as described above. If you wish to install and use a separate binary library (see above), it must be installed on the system and accessible as a shared library.

On a MacOS with HomeBrew use:

$ brew install eccodes

Or if you manage binary packages with Conda but use Python bindings from elsewhere, use:

$ conda install -c conda-forge eccodes

As an alternative you may install the official source distribution by following the instructions at https://confluence.ecmwf.int/display/ECC/ecCodes+installation

You may run a simple selfcheck command to ensure that your system is set up correctly:

$ python -m eccodes selfcheck
Found: ecCodes v2.39.0.
Your system is ready.

Usage

Refer to the ecCodes documentation pages for usage.

Experimental features

Fast bindings

To test the much faster CFFI API level, out-of-line mode you need the ecCodes header files. Then you need to clone the repo in the same folder as your ecCodes source tree, make a pip development install and custom compile the binary bindings:

$ git clone https://github.com/ecmwf/eccodes-python
$ cd eccodes-python
$ pip install -e .
$ python builder.py

To revert back to ABI level, in-line mode just remove the compiled bindings:

$ rm gribapi/_bindings.*

Project resources

Development

https://github.com/ecmwf/eccodes-python

Download

https://pypi.org/project/eccodes

Contributing

The main repository is hosted on GitHub, testing, bug reports and contributions are highly welcomed and appreciated:

https://github.com/ecmwf/eccodes-python

Please see the CONTRIBUTING.rst document for the best way to help.

Maintainers:

Contributors:

See also the list of other contributors who participated in this project.

License

© Copyright 2017- ECMWF.

This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.

In applying this licence, ECMWF does not waive the privileges and immunities granted to it by virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.

Changelog for eccodes-python

2.40.1 (2025-03-17)

  • Update version to be the same as the ecCodes library

2.40.0 (2025-02-12)

  • Update version to be the same as the ecCodes library

2.39.2 (2025-01-27)

  • GitHub pull request #109: Allow setting of array in highlevel.Message.set

  • Add support for Python version 3.13

2.39.1 (2024-12-10)

  • Build wheel with thread-safety enabled

2.39.0 (2024-11-25)

  • ECC-1972: Support Windows with binary wheel

  • Update to artifact actions v4

2.38.3 (2024-10-17)

  • Update version to be the same as the ecCodes library

2.38.1 (2024-09-26)

  • ECC-1923: ecCodes binary wheel can affect floating-point computations in Python

2.38.0 (2024-09-25)

  • ECC-1790: Add codes_get_offset

  • ECC-1899: API function to allow setting debug level

  • Function to query library features

2.37.0 (2024-09-09)

  • bundle ecCodes binary library with the PyPi distribution, for Linux and MacOS

1.7.1 (2024-06-19)

  • np.Infinity was removed in the NumPy 2.0 release

1.7.0 (2024-02-26)

  • ECC-1761: Add function to extract message offsets and sizes

  • ECC-1742: Add function to clone only the meta-data of a message

1.6.1 (2023-10-02)

  • ECC-1693: Update minimum recommended version

  • Fix flake8 warning E721

1.6.0 (2023-07-11)

  • ECC-1630: Get API version as an integer

  • ECC-1622: Drop Python version 3.7

  • ECC-1601: GRIB: Support data values array decoded in single-precision

  • ECC-1611: Add function to determine if a BUFR key is a coordinate descriptor

1.5.2 (2023-04-04)

  • Add support for Python versions 3.10 and 3.11

  • ECC-1555: 2D numpy array incorrectly handled

  • ECC-1539: Use the ‘warnings’ library for selfcheck

  • ECC-1538: Add support for CODES_TYPE_BYTES

  • ECC-1524: Check values in High-level Message.set function should retrieve based on value type

  • ECC-1527: Handle floats in high-level Message.set function check values

1.5.1 (2023-01-25)

  • ECC-1446: Data file era5-levels-members.grib not included in released tar file

  • ECC-1460: Cannot import eccodes on M1 MacBook Pro

  • ECC-1505: High-level Message.set function should allow dictionary and check result

1.5.0 (2022-08-25)

  • ECC-1404: Add the grib_get_gaussian_latitudes() function

  • ECC-1405: Add new function: codes_any_new_from_samples

  • ECC-1415: Implement a higher-level Python interface (still experimental)

  • ECC-1429: Remove the file ‘eccodes/messages.py’

  • GitHub pull request #62: add pypi badge

1.4.2 (2022-05-20)

  • ECC-1389: Drop Python version 3.5 and 3.6

  • ECC-1390: NameError: name ‘GribInternalError’ is not defined

  • Add test for GRIB bitmap

1.4.1 (2022-03-03)

  • ECC-1351: Support numpy.int64 in codes_set() and codes_set_long()

  • ECC-1317: Data file tiggelam_cnmc_sfc.grib2 not included in released tar file

1.4.0 (2021-12-03)

  • ECC-1234: Remove the experimental high-level interface

  • ECC-1282: Add codes_dump()

1.3.4 (2021-08-27)

  • Update documentation

1.3.3 (2021-06-21)

  • ECC-1246: UnicodeDecodeError when parsing BUFR file

1.3.2 (2021-04-16)

  • Restore the experimental high-level interface

1.3.1 (2021-04-16)

  • Fix the recommended version

1.3.0 (2021-04-09)

  • ECC-1231: Remove the experimental high-level interface

  • Added the “findlibs” module

  • Fix tests/test_high_level_api.py when MEMFS enabled

  • ECC-1226: Python3 bindings: Typo causes AttributeError when calling codes_index_get_double

1.2.0 (2021-03-23)

  • Added test for multi-field GRIBs

  • Fix deprecation warning: np.float is a deprecated alias for the builtin float

  • Experimental feature: grib_nearest_find

1.1.0 (2021-01-20)

  • ECC-1171: Performance: Python bindings: remove assert statements

  • ECC-1161: Python3 bindings: Do not raise exception on first failed attempt

  • ECC-1176: Python3 bindings: float32 recognised as int instead of float

  • GitHub pull request #41: Remove the apparent support for Python 2

  • GitHub pull request #44: Fix CFFI crash on windows

  • GitHub pull request #42: Add unit testing with GitHub actions (linux, macos and windows)

1.0.0 (2020-10-14)

  • ECC-1143: CMake: Migration to ecbuild v3.4

  • ECC-1133: C API: Propagate const char* for codes_index_new_from_file and codes_index_select_string

0.9.9 (2020-08-04)

  • Support for ecmwflibs. An additional way to find ECMWF libraries (if available)

  • ECC-1140: Segfault from invalid pointer reference in grib_set_double_array()

0.9.8 (2020-06-26)

  • ECC-1110: Removed obsolete function codes_close_file()

  • Provide missing argument to exceptions

  • Fix codes_set_definitions_path() typo

  • Fix grib_get_double_element(). Missing last argument

  • Add more tests to increase coverage

  • GitHub pull request #15: Add .__next__() method to eccodes.CodesFile class

  • ECC-1113: Python3 bindings under Windows: codes_get_long_array returns incorrect values

  • ECC-1108: Python3 bindings under Windows: use of handle causes crash

  • ECC-1121: Segfault when closing GribFile if messages are closed manually

0.9.6 (2020-03-10)

  • Update Copyright notices

  • Function-argument type checks: Improve error message

  • Fix C function calls for codes_gribex_mode_on/codes_gribex_mode_off

0.9.5 (2020-01-15)

  • ECC-1029: Function-argument type-checking should be disabled by default.

    To enable these checks, export ECCODES_PYTHON_ENABLE_TYPE_CHECKS=1

  • ECC-1032: Added codes_samples_path() and codes_definition_path()

  • ECC-1042: Python3 interface writes integer arrays incorrectly

  • ECC-794: Python3 interface: Expose the grib_get_data function

0.9.4 (2019-11-27)

  • Added new function: codes_get_version_info

  • ECC-753: Expose the codes_grib_nearest_find_multiple function in Python

  • ECC-1007: Python3 interface for eccodes cannot write large arrays

0.9.3 (2019-10-04)

  • New exception added: FunctionalityNotEnabledError

  • BUFR decoding: support for multi-element constant arrays (ECC-428)

0.9.2 (2019-07-09)

  • All ecCodes tests now pass

  • Simplify the xx_new_from_file calls

  • Fix for grib_set_string_array

  • Use ECCODES_DIR to locate the library

  • Remove the new-style high-level interface. It is still available in cfgrib.

0.9.1 (2019-06-06)

  • codes_get_long_array and codes_get_double_array now return a np.ndarray. See: #3.

0.9.0 (2019-05-07)

  • Declare the project as Beta.

0.8.0 (2019-04-08)

  • First public release.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

eccodes-2.40.1-cp313-cp313-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.13 Windows x86-64

eccodes-2.40.1-cp313-cp313-macosx_13_0_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.13 macOS 13.0+ x86-64

eccodes-2.40.1-cp313-cp313-macosx_13_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.13 macOS 13.0+ ARM64

eccodes-2.40.1-cp312-cp312-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

eccodes-2.40.1-cp312-cp312-macosx_13_0_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

eccodes-2.40.1-cp312-cp312-macosx_13_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.12 macOS 13.0+ ARM64

eccodes-2.40.1-cp311-cp311-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

eccodes-2.40.1-cp311-cp311-macosx_13_0_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

eccodes-2.40.1-cp311-cp311-macosx_13_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.11 macOS 13.0+ ARM64

eccodes-2.40.1-cp310-cp310-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

eccodes-2.40.1-cp310-cp310-macosx_13_0_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

eccodes-2.40.1-cp310-cp310-macosx_13_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.10 macOS 13.0+ ARM64

eccodes-2.40.1-cp39-cp39-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

eccodes-2.40.1-cp39-cp39-macosx_13_0_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

eccodes-2.40.1-cp39-cp39-macosx_13_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.9 macOS 13.0+ ARM64

eccodes-2.40.1-cp38-cp38-win_amd64.whl (6.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

File details

Details for the file eccodes-2.40.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0f4eaed3ea766ce6b1c3e0594fdd364e8bce21c29022725903de67e21dbf4777
MD5 50662b06842be4f66899f840c1c162e4
BLAKE2b-256 e7a536d4e865fcd484e44df63d9591a655533c54aefa981861bba3359f98f98d

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 733010f1c499dbcea541a12abe26d602815743611ca1fefccbe3b55fb3243508
MD5 2fdcf844793d159ccee3103849595eb8
BLAKE2b-256 e47fe16f0409afb9d9946239743ae6dafd1d474b9a3eb7a6348d88742a6df3c4

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 494b9a5e7f27b4f79518227a4cc0d85dfd95f152a0aa31bd1186341232b58f1b
MD5 7199b8fe4205632405ac706e105a9d6c
BLAKE2b-256 80a6a830c1d78f5672536a521a9156ecb289cb30de04d78a55f35f45c8baec11

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 617bb8c1a553c13876cb006d1c04781a04bbc4c35319b574ad3df2a77b4f58f5
MD5 54e31613d3a2a2cbd6f1730875dd2b9a
BLAKE2b-256 38c4ed3e13a90fe3f2bb88a6f12ee0c7b32b4e751beb36ea2b5472e55e5b3e3b

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 48da8ce8232c4d252f23807f6c68df4b8cd80c484edfc8bec17d30df7115bf0e
MD5 50c45d8fd88bffcb69a6e59ff44ab8ff
BLAKE2b-256 c135be0ae90fffd3f64216ce1ebee090c3f795442800ffec9f7cd0216b85a66f

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f8c21db46fb643810f873ecd4b9d16b1ec45c18533de0612a933173bdcf4d560
MD5 c087f2ec358d5a191ac3acf84a94f351
BLAKE2b-256 e98bacc2877a7ee3aa124313df491a9317f320f5b6e72dec3a488d69e2490d76

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: eccodes-2.40.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for eccodes-2.40.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6852894e2be4e4a4ceb731b5e967a6b17eb4643c4132d886f994a3e754d9b273
MD5 10383bbb7af3116553c5e44593bb2f3a
BLAKE2b-256 1974fd10cb4f119df3baf125592c431679add38434794bd003bee8bc134cb60d

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 c896496ee551f4cc7d301a4afe9f5d98b38d61e5284c6eec7c3c1386b0717055
MD5 c91066bfc54d0e0450e5c45bef6ae983
BLAKE2b-256 56bf4b7de25b99c39d1c902130ae4f442fa6a37115dbd99362411438a7c1604c

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f4c49baed3690f86ef90fb40f636f6534c4aa79e5bd9f9c69e7160e435a3a3de
MD5 765ca2eec649ded67ae7950d1586b193
BLAKE2b-256 cfce5e5733a8601c3a314511d23a9fde5ae75843a2499dfddf6c13b11052d47f

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: eccodes-2.40.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for eccodes-2.40.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6f233a2e4d7142929944c9461c32e1afc5371f502e70cffb7d0b8c893140a50b
MD5 00b49efe5b428fa9e830be4ee4dcdf33
BLAKE2b-256 8385bfa47bdb793ace73df20a9fe32c4dbf10b98f88331738bedf7f397a66f95

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 dd37376cb0b89576def80eede2d5c87fbd16611993d1ddbfde40496803e62c68
MD5 b3e0331b518df0a9800c6e379cd6cb29
BLAKE2b-256 d82b07a8f62aa05feb99f4153c3989b670ec81e15402ac428fee59203bf89b09

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 20ff79d0f72fb811ca7c57c722eae3eaee778e354a57c62bdb775ad709ba91b3
MD5 3bc76607f885181c0d0fd7e830a565fd
BLAKE2b-256 e90bbeccc32459c7829d45e943019f6925b4b71f1b793a4131a7e076a9a8bfd7

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: eccodes-2.40.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for eccodes-2.40.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b88923eac38e41db0e77728e399299ce8009900d13ec778b88845b114e6b8b18
MD5 fff7e40306422d87bddabee0f3a9f89f
BLAKE2b-256 2278fd83d343e157c47ee2d75756c736535f931ac32d3913368e4e71edee93f7

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 693070fa6d323ea3a8b29d0e2ec7ed3a83d6b5c7025e07b63eadd147058a39c3
MD5 384f60af5a531b628e8572d38ef789c3
BLAKE2b-256 19d42bec2ff1a8fa24ca48e21db798c5a9afd1fe87e0a66376deac464c97aa36

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for eccodes-2.40.1-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b07f05013bcad558f90f001bac24821fa521bf0b05706ca7ec7b993d7b7538a7
MD5 bc1e4d4b6a3584f9016d8808c1e9d770
BLAKE2b-256 78f858a19fa9c7ecd56f7ea88522321d9b93e78de4cd51f8b504f7748d1543c9

See more details on using hashes here.

File details

Details for the file eccodes-2.40.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: eccodes-2.40.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for eccodes-2.40.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e43cab408f87c00674d804b1606b914afbb9658bd3bfc1f56d81bf1cd871388b
MD5 67553bc450a91d6ae27c336d67799ac6
BLAKE2b-256 76a7801762ebef11cf7d52cba6591eaeafdd01bd2a0d531bb195376c42578661

See more details on using hashes here.

Supported by

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