Skip to main content

A simpler wrapper around qoi (https://github.com/phoboslab/qoi)

Project description

PyPI version fury.io

QOI

A simple Python wrapper around qoi, the "Quite OK Image" image format. It's

  • Lossless with comparable compression to PNG, but fast! It encodes 10x faster and decodes around 5x faster than PNG in OpenCV or PIL.
  • You can make it lossy with a simple trick, and then you can get similar compression to JPEG but a whole lot faster. (These number vary a lot depending on how "lossy" you make JPEG or QOI). That's cool.
  • Multi-threaded - no GIL hold-ups here.

Install

pip install qoi

Example

import numpy as np
import qoi

# Get your image as a numpy array (OpenCV, Pillow, etc. but here we just create a bunch of noise). Note: HWC ordering
rgb = np.random.randint(low=0, high=255, size=(224, 244, 3)).astype(np.uint8)

# Write it:
_ = qoi.write("/tmp/img.qoi", rgb)

# Read it and check it matches (it should, as we're lossless)
rgb_read = qoi.read("/tmp/img.qoi")
assert np.array_equal(rgb, rgb_read)

# Likewise for encode/decode to/from bytes:
bites = qoi.encode(rgb)
rgb_decoded = qoi.decode(bites)
assert np.array_equal(rgb, rgb_decoded)

# Benchmarking
from qoi.benchmark import benchmark
benchmark()  # Check out the arguments if you're interested

If you want to really max out your CPU:

from concurrent.futures import ThreadPoolExecutor, wait
import numpy as np
import qoi

RGB = np.random.randint(low=0, high=255, size=(224, 244, 3)).astype(np.uint8)

def worker():
    bites = bytearray(qoi.encode(RGB))
    img_decoded = qoi.decode(bites)

print("Go watch your CPU utilization ...")
with ThreadPoolExecutor(8) as pool:
    futures = [pool.submit(worker) for _ in range(10000)]
    wait(futures)

(Single-threaded) Benchmarks

If we consider lossless, then we're generally comparing with PNG. Yup, there are others, but they're not as common. Benchmarks:

Test image Method Format Input (kb) Encode (ms) Encode (kb) Decode (ms) SSIM
all black ('best' case) PIL png 6075.0 37.75 6.0 16.04 1.00
all black ('best' case) opencv png 6075.0 23.82 7.7 17.93 1.00
all black ('best' case) qoi qoi 6075.0 4.13 32.7 2.67 1.00
koi photo PIL png 6075.0 849.07 2821.5 85.46 1.00
koi photo opencv png 6075.0 95.24 3121.5 44.34 1.00
koi photo qoi qoi 6075.0 28.37 3489.0 17.19 1.00
random noise (worst case) PIL png 6075.0 300.37 6084.5 46.30 1.00
random noise (worst case) opencv png 6075.0 63.72 6086.9 14.01 1.00
random noise (worst case) qoi qoi 6075.0 16.16 8096.1 7.67 1.00

So qoi isn't far off PNG in terms of compression, but 4x-20x faster to encode and 1.5x-6x faster to decode.

NB:

  1. There's additional overhead here with PIL images being converted back to an array as the return type, to be consistent. In some sense, this isn't fair, as PIL will be faster if you're dealing with PIL images. On the other hand, if your common use case involves arrays (e.g. for computer vision) then it's reasonable.
  2. Produced with python src/qoi/benchmark.py --implementations=qoi,opencv,pil --formats=png,qoi on an i7-9750H. Not going to the point of optimised OpenCV/PIL (e.g. SIMD, or pillow-simd) as the results are clear enough for this 'normal' scenario. If you want to dig further, go for it! You can easily run these tests yourself.

If we consider lossy compression, again, JPEG is usually what we're comparing with. Normally, it'd be unfair to compare QOI with JPEG as QOI is lossless, however we can do a slight trick to make QOI lossy - downscale the image, then encode it, then upsample it by the same amount after decoding. You can see we've implemented that below with a downscaling to 40% and JPEG quality of 80 (which results in them having the same visual compression i.e. SSIM). So, results (only on koi photo as the rest are less meaningful/fair for lossy):

Test image Method Format Input (kb) Encode (ms) Encode (kb) Decode (ms) SSIM
koi photo PIL jpg @ 80 6075.0 47.67 275.2 24.01 0.94
koi photo opencv jpg @ 80 6075.0 24.03 275.3 19.58 0.94
koi photo qoi qoi 6075.0 23.17 3489.0 12.94 1.00
koi photo qoi-lossy-0.40x0.40 qoi 6075.0 4.38 667.5 2.96 0.94

Here we see that lossless qoi is losing out considerably in compression, as expected for lossy vs lossless. Also, qoi is only 1x-2x faster of encoding, and 1.5x-2x faster for decoding. However, it's important to note that this varies a lot depending on the jpeg quality specified - here it's 80 but the default for OpenCV is actually 95 which is 3x worse compression and a bit slower.

However, that's still lossy vs lossless! If you look at qoi-lossy-0.40x0.40 where we downscale as above, you can see that it can perform really well. The compression ratio is now only 3x that of JPEG (and 5x better than lossless QOI, and also the same as the default OpenCV JPEG encoding at a quality of 95), but it's so fast - 5x-10x faster encoding, and 7x-8x faster decoding.

Anyway, there are definitely use cases where qoi may still make sense over JPEG. Even lossless QOI can be worth it if size isn't an issue, as it's a bit faster. But if you use the "lossy" QOI, you're getting "comparable" (depending on JPEG quality) compression but much faster.

NB:

  1. See above re additional PIL overhead.
  2. Produced with python src/qoi/benchmark.py --images=koi --implementations=qoi,qoi-lossy,opencv,pil --formats=jpg,qoi --qoi-lossy-scale=0.4 --jpeg-quality=0.8 on an i7-9750H. Not going to the point of optimised OpenCV/PIL (e.g. SIMD, or pillow-simd, libjpeg-turbo, different JPEG qualities, etc.) as the results are clear enough for this 'normal' scenario. If you want to dig further, go for it! You can easily run these tests yourself.

Developing

git clone --recursive https://github.com/kodonnell/qoi/
USE_CYTHON=1 pip install -e .[dev]
pytest .

We use cibuildwheel to build all the wheels, which runs in a Github action. If you want to check this succeeds locally, you can try (untested):

cibuildwheel --platform linux .

Finally, when you're happy, submit a PR.

Publishing

When you're on main on your local, git tag vX.X.X then git push origin vX.X.X. This pushes the tag which triggers the full GitHub Action and:

  • Builds source distribution and wheels (for various platforms)
  • Pushes to PyPI
  • Creates a new release with the appropriate artifacts attached.

TODO

  • Make benchmark.py a CLI in setup.py
  • Create a qoi CLI
  • Benchmarks - add real images, and also compare performance with QOI to see overhead of python wrapper.
  • setuptools_scm_git_archive?
  • Code completion?

Discussion

Wrap or rewrite?

For now, this is just a simple wrapper. We'll leave the original project to do all the hard work on performance etc., and also maintaining (or not) compatibility or adding new features etc. We make no claims to do any more than that - we're basically just porting that C functionality to (C)Python.

On the name

For now, let's rock with qoi because

  • We're already in python, and the py in pyqoi seems redundant. For what it's worth, 3 < 5.
  • pyqoi seems like a good name for a python-only version of QOI (useful for pypy etc.), which this isn't.
  • qoi is generally new so let's not overthink it for now. We can always rename later if needed.

What's up with ./src?

See here and here. I didn't read all of it, but yeh, import qoi is annoying when there's also a folder called qoi.

USE_CYTHON=1?

See here. Fair point.

Project details


Download files

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

Source Distribution

qoi-0.7.2.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

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

qoi-0.7.2-cp313-cp313-win_amd64.whl (90.6 kB view details)

Uploaded CPython 3.13Windows x86-64

qoi-0.7.2-cp313-cp313-win32.whl (77.9 kB view details)

Uploaded CPython 3.13Windows x86

qoi-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (510.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

qoi-0.7.2-cp313-cp313-macosx_11_0_arm64.whl (91.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

qoi-0.7.2-cp313-cp313-macosx_10_13_x86_64.whl (98.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

qoi-0.7.2-cp312-cp312-win_amd64.whl (91.1 kB view details)

Uploaded CPython 3.12Windows x86-64

qoi-0.7.2-cp312-cp312-win32.whl (78.2 kB view details)

Uploaded CPython 3.12Windows x86

qoi-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (514.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

qoi-0.7.2-cp312-cp312-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

qoi-0.7.2-cp312-cp312-macosx_10_13_x86_64.whl (99.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

qoi-0.7.2-cp311-cp311-win_amd64.whl (90.4 kB view details)

Uploaded CPython 3.11Windows x86-64

qoi-0.7.2-cp311-cp311-win32.whl (78.0 kB view details)

Uploaded CPython 3.11Windows x86

qoi-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

qoi-0.7.2-cp311-cp311-macosx_11_0_arm64.whl (92.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

qoi-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl (98.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

qoi-0.7.2-cp310-cp310-win_amd64.whl (90.2 kB view details)

Uploaded CPython 3.10Windows x86-64

qoi-0.7.2-cp310-cp310-win32.whl (78.2 kB view details)

Uploaded CPython 3.10Windows x86

qoi-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (483.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

qoi-0.7.2-cp310-cp310-macosx_11_0_arm64.whl (92.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

qoi-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl (98.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

qoi-0.7.2-cp39-cp39-win_amd64.whl (90.8 kB view details)

Uploaded CPython 3.9Windows x86-64

qoi-0.7.2-cp39-cp39-win32.whl (78.8 kB view details)

Uploaded CPython 3.9Windows x86

qoi-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (486.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

qoi-0.7.2-cp39-cp39-macosx_11_0_arm64.whl (92.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

qoi-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl (98.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file qoi-0.7.2.tar.gz.

File metadata

  • Download URL: qoi-0.7.2.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2.tar.gz
Algorithm Hash digest
SHA256 26194b0e97ce345ca6d23f90154c95f05403b7ec0e053c54f26bc5b19e4f062f
MD5 10ada01ae9a3af78ca93ce0094fe0cb7
BLAKE2b-256 113493392cbb9208b88914ce73e614627d620ea912a759bd42886f6b91c3dbc5

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 90.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5e63d13795df37adfb850b2d6d131cb935b3af01353085be8b77cdf694ef760c
MD5 e48a67b439912d967e71af8b05800af4
BLAKE2b-256 da2ee12f5e21c778bafac2eb1f6813ccfb8f27c0ba969fcf3e2e0b1fd1e229e0

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: qoi-0.7.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 77.9 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9507d68f8b6747a1faaa7fb627d0e3a1765dc3ad8a643bfac0c0009650b69840
MD5 a6cca7a8d35fa41e0ec1763dd5f71baf
BLAKE2b-256 29295a1afcafd2e726ef12723c5fe271927194de53606de09bd7de4a2a99c7b6

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c73b04e16c590775542f39621ed6ac7c5729a1d7d98b8557fccecb5736dfeee
MD5 c6d94a8f3abc9a0118a6946fc56acd1b
BLAKE2b-256 9b4e0507c6155f8f255a2ac8b6d2ec10289b81a6944291e46da899c1a558ec91

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 91.7 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f85df99ea39b45618ae6d2003d110cc765b0aa03e967335041568ff78b77d998
MD5 48a90147b129435c94d919930a97fac7
BLAKE2b-256 e9426270949608a5c9afdb207c984aa04a9e19e053c50d859a4de79ce6289f45

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 311a0088a00d16d1f55e9dbc362067afd915d10a98d3539b0b729c47bd984640
MD5 ebeea632ac6523f954dbeed6eb403604
BLAKE2b-256 a548b6dee0ee2733f3627443e146137aa43593b05e45b4e814625e175581c36d

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 91.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dd664dade8dc920c1c283a980609ac0affadf7e5e7f16baca73b1da0b9e067d6
MD5 c4459b808924eed113d4e21f76d3e459
BLAKE2b-256 9eb35cc2c45a96c57274030c0aaa19fb7abfc736972f75309afc4d4994a8bc15

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: qoi-0.7.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 64d454654795db581715e7aafe851a7f4cf5b258997ffe257347cb1154e8f0bb
MD5 3aed831c4bdfc4380107935e6470f05e
BLAKE2b-256 da95ec720affd59679b807d43c2779c194423a3f3c48b46d7c1f1a8997f64d5c

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 516dd5ac76887d6232147315ac98b2f5c9785d6f5e31aede0a03d6d24bdda353
MD5 8e119b46aa34919085babd0b8af48591
BLAKE2b-256 5574f5a1f297e9e5b4ff76ff798c21f7c7ed37289d3571ae55f8d0af791d736e

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 92.9 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 320e2eadf06bdaec0fbd6d915b28ccc9b6b7119c0ae525399d4154649b759e03
MD5 6b9f8ae30517ea71d3b87472cbd7b9ca
BLAKE2b-256 c9324ac3b393972aff7a10c4d48a76db32c5e9678c02e83098b4c8cdf786c71e

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4521ea1d7a6ec73c4c2c9d931ff2fa91dfcbc173518d97ec0802a2fd6e71bf8b
MD5 da2ee0992de8f7c7f61f2957f2dc1e5d
BLAKE2b-256 a6cb320fdb3f9111d09490b8d2c1dbaea6cd3844c3eaac5cad7724919dc5c984

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 90.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 41cf2a13e594b04d19426ee2c98fd80a84ae52f12fd8f8a6fc12b9307c836f2d
MD5 22aa551dfcc7d1a661a79e29f194ae62
BLAKE2b-256 0e0805ebe357b17ae5dfeaecbe684e11c0abec88394163fbfadb4470f0760551

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: qoi-0.7.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 78.0 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ffc94b1b42454bf533e37722d652e67d1c32e41e2b075217081a646ea496f4b1
MD5 a53cf2aa47683f4460abd66a01eda7f3
BLAKE2b-256 7d91c36927ebdd5f7533180164d2f49a50d03e4b57a89b2e5d1983a6a228ee06

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0b7b93dcfb02f8c0ac9c6130470b31e3f077e4a75d63a07680ebcf0872bab57
MD5 51443311cdf77000b1d01028299be27a
BLAKE2b-256 40e5ec4092f4041ca0aec98c08dbc6c182a384611ef1b014e14cc8be13026683

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 92.0 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4ad7478f9118bf27d8838c4723c5bbc3314081c3ba77647aa49436b3b507a70
MD5 37a92b7040ca829b9320eecec480c0d6
BLAKE2b-256 9f32f92f7c4b906affafdd33c7f7fca2e0d7ce2b13d56e83e022cd10626a6a33

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f599816d35cf76be283a2b8ebf7d53e3d1d27e422eee86779a43bbbcbef089fd
MD5 e9903c77c83ed393ef1051c6c93698ec
BLAKE2b-256 840b26cb0320311f6cc919fe4aecb9c6cdc53ddb56ed625628f5e409e718b293

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 90.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7e0808217ff4ace3552002d52abda11a4a4a329de0b8f016d3c2f436fc4a43af
MD5 fc921eb5c9294cb30c806c1673032f73
BLAKE2b-256 a1e76427afcbe643ea0dd653e0ad25251d15d2215ecf2e9b2453150ee292035f

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: qoi-0.7.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 093d195d300a15d3d0ba9af2f5ec0c5366e998267216b7ba72a574a666c3e442
MD5 7088c8931e5042a9bfd8a8aa243a659c
BLAKE2b-256 0f218075cfa10c4f27d8f173cf9f8fec167dc9e3d68daa1a1836f98e7b96422f

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7f7965e510e57743b3fbb96e54cb9147152fc084db37ac5ee62e32e9d7daa90
MD5 39a2dcc68da90c079725fafcfdca38c3
BLAKE2b-256 e63511c51693a130947edef2a41f938e5bc6b1802a043888e7e03419d33abd21

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 92.1 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f40fa296726c6cd4cafb06de2f25ad44af05be50a223baa8e4b20971ff73f498
MD5 e70293dd7876111ead7292c036fd0ba9
BLAKE2b-256 e9fb7cec567bde6a256421a64c77145e529d7681c091edfc41769616c8b032dd

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f65e9b7f8423c8adbeb83dac992400971b777ca5a263075e929c5db0f4bc3de
MD5 71a9ed59b9365d98963ea71a3faf036e
BLAKE2b-256 920a5506186fdac2557b6d92d86dfe17ebc81f4875dd8ae945ddeaf80c32da1b

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 90.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a06c78b3a58cef0096efa229098a7259ef4dc88d455cc3d9cf3336bcb1d0ec5b
MD5 5ea161874f78ab6111980528b7afabd9
BLAKE2b-256 2bb0af5b88a1308a94189b690f2f3f9b8b0ff46be0595afc9843e381b116a80b

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp39-cp39-win32.whl.

File metadata

  • Download URL: qoi-0.7.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 78.8 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e607e299d85fc9d384870c6eec08f4b376907465b1fa06fab0f35957004226a8
MD5 8a6c57ad3992e18f2d4864b5201b238b
BLAKE2b-256 ad3214461b4c800544cd55fbb5bfe6b0cc73f59e774d1d1f79b5f706d74964a9

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bd4b0654933ba219348f0ce15242c6a3d0a67afe88ef4ea363221ec71efbf7d
MD5 332f04676adec4f20aa2b7ed35921259
BLAKE2b-256 69141f419347aa60593424c457eda902b8fe881cf56cbb35b4142f465ed8ac36

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 92.7 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37a2db3827b11725776339469df8f9df86adcb30699cc0f9fa3460ce9df323cc
MD5 07a8f75d835b99594f412fce17bf6063
BLAKE2b-256 7cc31aa563fad603cb1dbb36e8440d88427783fb31e1923623970e14eca18618

See more details on using hashes here.

File details

Details for the file qoi-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: qoi-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 98.5 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.8

File hashes

Hashes for qoi-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ed46ea00e92a1083ce9390f62ea0bdbd6c42873b30cb9ac74f4f707f33afbfe2
MD5 3d20551a12d40f8f30449f3aa0f1d3d4
BLAKE2b-256 e6912d629def08ec1f5f7b081973ed81bd3272b1c6c6a48dc7c6f34553ec21e8

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