Skip to main content

python-exiv2 is a low level interface (or binding) to the exiv2 C++ library. It is built using SWIG to automatically generate the interface code. The intention is to give direct access to all of the top-level classes in libexiv2, but with additional “Pythonic” helpers where necessary. Not everything in libexiv2 is available in the Python interface. If you need something that’s not there, please let me know.

Introduction

There are several other ways to access libexiv2 from within Python. The first one I used was pyexiv2 (old). After its development ceased I moved on to using gexiv2 and PyGObject. This works well, providing a Metadata object with high level functions such as set_tag_string and set_tag_multiple to get and set metadata values.

A more recent development is pyexiv2 (new). This new project is potentially very useful, providing a simple interface with functions to read and modify metadata using Python dict parameters.

For more complicated metadata operations I think a lower level interface is required, which is where this project comes in. Here is an example of its use:

Python 3.6.12 (default, Dec 02 2020, 09:44:23) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import exiv2
>>> image = exiv2.ImageFactory.open('IMG_0211.JPG')
>>> image.readMetadata()
>>> data = image.exifData()
>>> data['Exif.Image.Artist']._print()
'Jim Easterbrook'
>>>

Documentation

The libexiv2 library is well documented for C++ users, in Doxygen format. Recent versions of SWIG can convert this documentation to pydoc format in the Python interface:

$ pydoc3 exiv2.Image.exifData

Help on method_descriptor in exiv2.Image:

exiv2.Image.exifData = exifData(...)
    Returns an ExifData instance containing currently buffered
        Exif data.

    The contained Exif data may have been read from the image by
    a previous call to readMetadata() or added directly. The Exif
    data in the returned instance will be written to the image when
    writeMetadata() is called.

    :rtype: :py:class:`ExifData`
    :return: modifiable ExifData instance containing Exif values

Assignment

libexiv2 stores metadata values in a generalised container whose type can be set by the type of a value assigned to it, for example:

// C or C++
exifData["Exif.Image.SamplesPerPixel"] = uint16_t(162);

This forces the Exif.Image.SamplesPerPixel value to be an unsigned short. Python doesn’t have such specific integer types, so if you want to set the type you need to create an exiv2 value of the appropriate type and assign that:

# Python
exifData["Exif.Image.SamplesPerPixel"] = exiv2.UShortValue(162)

This allows you to set the value to any type, just like in C++, but the Python interface warns you if you set a type that isn’t the default for that tag. Alternatively you can use any Python object and let libexiv2 convert the string representation of that object to the appropriate type:

# Python
exifData["Exif.Image.SamplesPerPixel"] = 162

Iterators

Several libexiv2 classes use C++ iterators to expose private data, for example the ExifData class has a private member of std::list<Exifdatum> type. The classes have public begin and end methods that return std::list iterators. In C++ you can dereference one of these iterators to access the Exifdatum object, but Python doesn’t have a dereference operator.

This Python interface converts the std::list iterator to a Python object that has access to all the Exifdatum object’s methods. For example:

Python 3.6.12 (default, Dec 02 2020, 09:44:23) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import exiv2
>>> image = exiv2.ImageFactory.open('IMG_0211.JPG')
>>> image.readMetadata()
>>> data = image.exifData()
>>> b = data.begin()
>>> b.key()
'Exif.Image.ProcessingSoftware'
>>>

The Python objects can be used to iterate over the data in a very C++ like style:

>>> data = image.exifData()
>>> b = data.begin()
>>> e = data.end()
>>> while b != e:
...     b.key()
...     next(b)
...
'Exif.Image.ProcessingSoftware'
<Swig Object of type 'ExifDataIterator *' at 0x7f2cbf6c2fb8>
'Exif.Image.ImageDescription'
<Swig Object of type 'ExifDataIterator *' at 0x7f2cbf6c2fb8>
[skip 227 line pairs]
'Exif.Thumbnail.JPEGInterchangeFormat'
<Swig Object of type 'ExifDataIterator *' at 0x7f2cbf6c2fb8>
'Exif.Thumbnail.JPEGInterchangeFormatLength'
<Swig Object of type 'ExifDataIterator *' at 0x7f2cbf6c2fb8>
>>>

The <Swig Object of type 'ExifDataIterator *' at 0x7f2cbf6c2fb8> lines are the Python interpreter showing the return value of next(b). You can also iterate in a more Pythonic style:

>>> data = image.exifData()
>>> for datum in data:
...     datum.key()
...
'Exif.Image.ProcessingSoftware'
'Exif.Image.ImageDescription'
[skip 227 lines]
'Exif.Thumbnail.JPEGInterchangeFormat'
'Exif.Thumbnail.JPEGInterchangeFormatLength'
>>>

Warning: segmentation faults

It is easy to crash python-exiv2 if you delete objects which contain data that another object is pointing to. For example, deleting an Image after extracting its metadata can cause a segfault when the metadata is accessed. Ideally the Python interface to libexiv2 would use Python objects’ reference counts to ensure this doesn’t happen, preventing the deletion of the Image object until all references to it have been deleted. Unfortunately I haven’t found a sensible way to do this in the Python interface, so some care is needed when using it.

Error handling

libexiv2 has a multilevel warning system a bit like Python’s standard logger. The Python interface redirects all Exiv2 messages to Python logging with an appropriate log level. The exiv2.LogMsg.setLevel function can be used to control what severity of messages are logged.

Installation

Python “wheels” are available for Windows (Python 3.5 to 3.10) and Linux & MacOS (Python 3.6 to 3.10). These include the libexiv2 library and should not need any other software to be installed. They can be installed with Python’s pip package. For example, on Windows:

C:\Users\Jim>pip install python-exiv2

or on Linux or MacOS:

$ sudo pip3 install python-exiv2

You can install for a single user with the --user option:

$ pip3 install --user python-exiv2

If the available wheels are not compatible with your operating system then pip will download the python-exiv2 source and attempt to compile it. For more information, and details of how to compile python-exiv2 and libexiv2, see INSTALL.rst.

Problems?

Please email jim@jim-easterbrook.me.uk if you find any problems (or solutions!).

Download files

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

Source Distribution

python-exiv2-0.7.0.zip (2.3 MB view details)

Uploaded Source

Built Distributions

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

python_exiv2-0.7.0-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

python_exiv2-0.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64

python_exiv2-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

python_exiv2-0.7.0-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9Windows x86-64

python_exiv2-0.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64

python_exiv2-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

python_exiv2-0.7.0-cp38-cp38-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.8Windows x86-64

python_exiv2-0.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

python_exiv2-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

python_exiv2-0.7.0-cp37-cp37m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.7mWindows x86-64

python_exiv2-0.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

python_exiv2-0.7.0-cp37-cp37m-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

python_exiv2-0.7.0-cp36-cp36m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.6mWindows x86-64

python_exiv2-0.7.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

python_exiv2-0.7.0-cp36-cp36m-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

python_exiv2-0.7.0-cp35-cp35m-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.5mWindows x86-64

File details

Details for the file python-exiv2-0.7.0.zip.

File metadata

  • Download URL: python-exiv2-0.7.0.zip
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python-exiv2-0.7.0.zip
Algorithm Hash digest
SHA256 86cd9c76e6dfae0f8933ce3f290b8885f5cc46ee82f345818fa98ef92eb54226
MD5 eecf1bd790c4123df493517fe61500dc
BLAKE2b-256 2d42e6b0ffb2a02ea95a136a92c9a00d52c5efbb5da9b5f50296edc721d2f572

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ad86976819a8fb0be0518eb583fe1f673ed0d697ec4efa285682216273f6cf4c
MD5 ff0a01bd6b57106dce4310edf7ed1b17
BLAKE2b-256 7fec79168d4265423f45336fc1cb34b422a916c858449f309c50d57874bdfe4b

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for python_exiv2-0.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6dc3962f73ee1d4e197d459b549989b5715d1ee8a6e9368c630333724f642aa1
MD5 bff4d38424ee4b1ca89f7887f5a56e0b
BLAKE2b-256 85fef28b812f9189d4fe43ec5a53c66b413635c6b740caa8e42a60b798e708ac

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6b19d7308e2b51b0b16f3de12316e831e7421e3ca865781e5aa612af4a745551
MD5 9b428a93badac9403bf07b6e4452c835
BLAKE2b-256 6f1be2c6d6906ae911d8d514bd84a1c8f66011059251fbea0d059d51ce051a89

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4b0e11ff97f339f5a401823acf729bdde2dd20ddf7eb5e7d66d2dda5c9c6f1d9
MD5 f498d6a3af2e3da3835ea7b6906d6561
BLAKE2b-256 1755a6cb9cda476afcf8db53cbe5bc5788c025369975e27c669bab25231905ac

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for python_exiv2-0.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6a5c411fd9ffc92f411e4e90564a80884f2fd7456b942aa06bf529995ba2684e
MD5 69b9f6232fcbf9fee5214fdd3c7d5b88
BLAKE2b-256 28c42af96464bff3b845e0258b09d09b1fc2fbeabd97a532db397d4bda89928e

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cb9b54386fd97f73f032a4890af94af9a4a2a79f6fa6212991553b96ee06f418
MD5 fd90edee0c4dd90ec7ec35b26c48edc5
BLAKE2b-256 22661be614024cc8b5848704c2b30c36c7e5271d9d9ba495c1934b626690abb6

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1993d4a8d02ca81beb0fa4efad495d948f7f23863d6d1727bba2260e28f0d863
MD5 89e9c421ffd19d0a40751ff3361c1d15
BLAKE2b-256 67a9e33b99b4a88f6e996ec3087036c0d78c859cf64c955d1a79a0e0e78acc54

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for python_exiv2-0.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 02b5a9e297136ab4840ca8cb02f243c983e7348a868939a038625e57de3d7ff2
MD5 a62dbc15b6af2fdecdcbcf35780610b6
BLAKE2b-256 9dfd3d5ebe34ccc2458eb0fd907a1f498431e006f8e2c35fcadc085a0b36ec87

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f992e77d9cf65d67b12b64713b8e7b0c237c223d9eb971a589b77b8fbeb92e14
MD5 bf5274e2c2927c1f9db7a7a65008214e
BLAKE2b-256 33f48197cc93984d27f09d8c0121f44c3a91dfc37c27db1361316e9a19e5b703

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 39982034847dd647272f1ce938db7a326c2bbd10f17e81c73c95803d6240750b
MD5 d595f064cb2880ee6453d3beb99f82e6
BLAKE2b-256 c32ff815f3d79e8b51d10bbe456e944345f93a2a97e2576b9c96e6afeb620017

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for python_exiv2-0.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0d472497d5048e8947918975cf5c762c3629e480eb895573ab4b762adf74b7ac
MD5 dc177339d1e23fa10bc626dacabca3aa
BLAKE2b-256 70aca56b1ebdfdf5c2cc8a6450d3de9f54aa19e1cdaa7ad91b323f3618b40c63

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d7e71bdac9e36b64256bc1bf418ec4918a695002aa1c4597e8e3458ff41052c2
MD5 40db80bc0b6af1b34a3c15076d4eb7b7
BLAKE2b-256 f15b35045aa6b23ab4e951566ad3967fe60b2cd0b8052620ee4069dcaa131b33

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 9a5208e9783bcfe2bb246ca372b12ed435cc8d039b35d360824013ebcafe15b0
MD5 7bd7a54a0f96e2f3acede44e7ceabe03
BLAKE2b-256 5ffb0b52bbd333a3a67cbe27d1544f9d49310fc867f8720d982cc26dbc69bebf

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for python_exiv2-0.7.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e7169d98cd1aca43240edcd0bf80b2eed5e1cd2526cf3f2834ff665f9f296e98
MD5 14821f721104ecea1cbd5ed4868f0758
BLAKE2b-256 03443699045c66d124d5eb4997e527461149aea3a666e149889f869834f87b6f

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a2aac2bca37701720b258760ac5d1ba7125dd56583696bf736e241ef3f1566e9
MD5 86263e90116340df15a4df924d1eea42
BLAKE2b-256 4b338b697a62334ad65a068aef4cfa166cdee8d2ca2725ca8421f577ca7ab3ad

See more details on using hashes here.

File details

Details for the file python_exiv2-0.7.0-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: python_exiv2-0.7.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.12

File hashes

Hashes for python_exiv2-0.7.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 9512902b7ae11240b145c57c01ff046e8e12833c6f5d81bd7f10c82017c14b02
MD5 0205e6d4c930a507b75205b429c949ce
BLAKE2b-256 af74846b6f55b4ed3b54ba6c3c9475326e16ea7b466f0e651c581b8b1b8b4046

See more details on using hashes here.

Supported by

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