# pyoxipng
[![CI](https://github.com/nfrasser/pyoxipng/actions/workflows/CI.yml/badge.svg)](https://github.com/nfrasser/pyoxipng/actions/workflows/CI.yml)
[![PyPI](https://badgen.net/pypi/v/pyoxipng)](https://pypi.org/project/pyoxipng/)
Python wrapper for multithreaded .png image file optimizer
[oxipng](https://github.com/shssoichiro/oxipng) (written in Rust). Use
`pyoxipng` to reduce the file size of your PNG images.
Jump to a section
- [Installation](#installation)
- [API](#api)
- [optimize](#oxipngoptimizeinput-outputnone-kwargs)
- [optimize_from_memory](#oxipngoptimize_from_memorydata-kwargs)
- [RawImage](#oxipngrawimage)
- [Options](#options)
- [filter](#filter)
- [interlace](#interlace)
- [strip](#strip)
- [deflate](#deflate)
- [Development](#development)
- [License](#license)
## Installation
Install from PyPI:
```sh
pip install pyoxipng
```
Import in your Python code:
```py
import oxipng
```
## API
### oxipng.optimize(input, output=None, \*\*kwargs)
Optimize a file on disk.
**Parameters**:
- **input** _(str | bytes | PathLike)_ – path to input file to optimize
- **output** _(str | bytes | PathLike, optional)_ – path to optimized output result file. If not specified, overwrites input. Defaults to None
- **\*\*kwargs** – [Options](#options)
**Returns**
- None
**Raises**
- **oxipng.PngError** – optimization could not be completed
**Examples:**
Optimize a file on disk and overwrite
```py
oxipng.optimize("/path/to/image.png")
```
Optimize a file and save to a new location:
```py
oxipng.optimize("/path/to/image.png", "/path/to/image-optimized.png")
```
### oxipng.optimize_from_memory(data, \*\*kwargs)
Optimize raw data from a PNG file loaded in Python as a `bytes` object:
**Parameters**:
- **data** _(bytes)_ – raw PNG data to optimize
- **\*\*kwargs** – [Options](#options)
**Returns**
- _(bytes)_ – optimized raw PNG data
**Raises**
- **oxipng.PngError** – optimization could not be completed
**Examples:**
```py
data = ... # bytes of png data
optimized_data = oxipng.optimize_from_memory(data)
with open("/path/to/image-optimized.png", "wb") as f:
f.write(optimized_data)
```
### oxipng.RawImage
Create an optimized PNG file from raw image data:
```python
raw = oxipng.RawImage(data, width, height)
optimized_data = raw.create_optimized_png()
```
By default, assumes the input data is 8-bit, row-major RGBA, where every 4 bytes represents one pixel with Red-Green-Blue-Alpha channels. To interpret non-RGBA data, specify a `color_type` parameter with the `oxipng.ColorType` class:
| Method | Description |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| `oxipng.ColorType.grayscale(int \| None)` | Grayscale, with one color channel. Specify optional shade of gray that should be rendered as transparent. |
| `oxipng.ColorType.rgb(tuple[int, int, int])` | RGB, with three color channels. Specify optional color value that should be rendered as transparent. |
| `oxipng.ColorType.indexed(list[[tuple[int, int, int, int]])` | Indexed, with one byte per pixel representing a color from the palette. Specify palette containing the colors used, up to 256 entries. |
| `oxipng.ColorType.grayscale_alpha()` | Grayscale + Alpha, with two color channels. |
| `oxipng.ColorType.rgba()` | RGBA, with four color channels. |
**Parameters:**
- **data** _(bytes | bytearray)_ – Raw image data bytes. Format depends on `color_type` and `bit_depth` parameters
- **width** _(int)_ – Width of raw image, in pixels
- **height** _(int)_ – Height of raw image, in pixels
- **color_type** _([oxipng.ColorType, optional)_ – Descriptor for color type used to represent this image. Optional, defaults to `oxipng.ColorType.rgba()`
- **bit_depth** _(int, optional)_ – Bit depth of raw image. Optional, defaults to 8
**Examples:**
Save RGB image data from a JPEG file, interpreting black pixels as transparent.
```python
from PIL import Image
import numpy as np
# Load an image file with Pillow
jpg = Image.open("/path/to/image.jpg")
# Convert to RGB numpy array
rgb_array = np.array(jpg.convert("RGB"), dtype=np.uint8)
height, width, channels = rgb_array.shape
# Create raw image with sRGB color profile
data = rgb_array.tobytes()
color_type = oxipng.ColorType.rgb((0, 0, 0)) # black is transparent
raw = oxipng.RawImage(data, width, height, color_type=color_type)
raw.add_png_chunk(b"sRGB", b"\0")
# Optimize and save
optimized = raw.create_optimized_png(level=6)
with open("/path/to/image/optimized.png", "wb") as f:
f.write(optimized)
```
Save with data where bytes reference a color palette
```python
data = b"\0\1\2..." # get index data
palette = [[0, 0, 0, 255], [1, 23, 234, 255], ...]
color_type = oxipng.ColorType.indexed(palette)
raw = oxipng.RawImage(data, 100, 100, color_type=color_type)
optimized = raw.create_optimized_png()
```
**Methods:**
#### add_png_chunk(name, data)
Add a png chunk, such as `b"iTXt"`, to be included in the output
**Parameters:**
- **name** _(bytes)_ – PNG chunk identifier
- **data** _(bytes | bytarray)_
**Returns:**
- None
#### add_icc_profile(data)
Add an ICC profile for the image
**Parameters:**
- **data** _(bytes)_ – ICC profile data
**Returns:**
- None
#### create_optimized_png(\*\*kwargs)
Create an optimized png from the raw image data using the options provided
**Parameters:**
- **\*\*kwargs** – [Options](#options)
**Returns:**
- _(bytes)_ optimized PNG image data
## Options
`optimize` , `optimize_from_memory` and `RawImage.create_optimized_png` accept the following options as keyword arguments.
**Example:**
```py
oxipng.optimize("/path/to/image.png", level=6, fix_errors=True, interlace=oxipng.Interlacing.Adam7)
```
| Option | Description | Type | Default |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ------------------------- |
| `level` | Set the optimization level to an integer between 0 and 6 (inclusive) | int | `2` |
| `fix_errors` | Attempt to fix errors when decoding the input file rather than throwing `PngError` | bool | `False` |
| `force` | Write to output even if there was no improvement in compression | bool | `False` |
| `filter` | Which filters to try on the file. Use Use enum values from `oxipng.RowFilter` | Sequence[[RowFilter](#filter)] | `[RowFilter.NoOp]` |
| `interlace` | Whether to change the interlacing type of the file. `None` will not change current interlacing type | [Interlacing](#interlace) \| None | `None` |
| `optimize_alpha` | Whether to allow transparent pixels to be altered to improve compression | bool | `False` |
| `bit_depth_reduction` | Whether to attempt bit depth reduction | bool | `True` |
| `color_type_reduction` | Whether to attempt color type reduction | bool | `True` |
| `palette_reduction` | Whether to attempt palette reduction | bool | `True` |
| `grayscale_reduction` | Whether to attempt grayscale reduction | bool | `True` |
| `idat_recoding` | If any type of reduction is performed, IDAT recoding will be performed regardless of this setting | bool | `True` |
| `scale_16` | Whether to forcibly reduce 16-bit to 8-bit by scaling | bool | `False` |
| `strip` | Which headers to strip from the PNG file, if any. Specify with `oxipng.StripChunks` | [StripChunks](#strip) | `StripChunks.none()` |
| `deflate` | Which DEFLATE algorithm to use. Specify with `oxipng.Deflaters` | [Deflaters](#deflate) | `Deflaters.libdeflater()` |
| `fast_evaluation` | Whether to use fast evaluation to pick the best filter | bool | `False` |
| `timeout` | Maximum amount of time to spend (in seconds) on optimizations. Further potential optimizations skipped if the timeout is exceeded | float \| None | `None` |
### filter
Initialize a `filter` list or tuple with any of the following `oxipng.RowFilter` enum options:
- `oxipng.RowFilter.NoOp`
- `oxipng.RowFilter.Sub`
- `oxipng.RowFilter.Up`
- `oxipng.RowFilter.Average`
- `oxipng.RowFilter.Paeth`
- `oxipng.RowFilter.Bigrams`
- `oxipng.RowFilter.BigEnt`
- `oxipng.RowFilter.Brute`
### interlace
Set `interlace` to `None` to keep existing interlacing or to one of following `oxipng.Interlacing` enum options:
- `oxipng.Interlacing.Off` (interlace disabled)
- `oxipng.Interlacing.Adam7` (interlace enabled)
### strip
Initialize the `strip` option with one of the following static methods in the
`oxipng.StripChunks` class.
| Method | Description |
| ------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `oxipng.StripChunks.none()` | None |
| `oxipng.StripChunks.strip(Sequence[bytes])` | Strip chunks specified in the given list |
| `oxipng.StripChunks.safe()` | Strip chunks that won't affect rendering (all but cICP, iCCP, sRGB, pHYs, acTL, fcTL, fdAT) |
| `oxipng.StripChunks.keep(Sequence[bytes])` | Strip all non-critical chunks except those in the given list |
| `oxipng.StripChunks.all()` | Strip all non-critical chunks |
### deflate
Initialize the `deflate` option with one of the following static methods in the
`oxipng.Deflaters` class.
| Method | Description |
| ----------------------------------- | ---------------------------------------------------------- |
| `oxipng.Deflaters.libdeflater(int)` | Libdeflater with compression level [0-12] |
| `oxipng.Deflaters.zopfli(int)` | Zopfli with number of compression iterations to do [1-255] |
## Development
1. Install [Rust](https://www.rust-lang.org/tools/install)
1. Install [Python 3.8+](https://www.python.org/downloads/)
1. Install [Pipenv](https://pipenv.pypa.io/en/latest/)
1. Clone this repository and navigate to it via command line
```sh
git clone https://github.com/nfrasser/pyoxipng.git
cd pyoxipng
```
1. Install dependencies
```sh
pipenv install --dev
```
1. Activate the dev environment
```
pipenv shell
```
1. Build
```sh
maturin develop
```
1. Run tests
```
pytest
```
1. Format code
```
ruff check .
ruff format .
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "pyoxipng",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "rust, image, optimize, optimizer, optimization, compress, png",
"author": "Nick Frasser <nfrasser@users.noreply.github.com>",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f0/50/7e173ab2d028edd37938110d4f6e8fb135aaf7c12056810be5d46ea819bf/pyoxipng-9.1.0.tar.gz",
"platform": null,
"description": "# pyoxipng\n\n[![CI](https://github.com/nfrasser/pyoxipng/actions/workflows/CI.yml/badge.svg)](https://github.com/nfrasser/pyoxipng/actions/workflows/CI.yml)\n[![PyPI](https://badgen.net/pypi/v/pyoxipng)](https://pypi.org/project/pyoxipng/)\n\nPython wrapper for multithreaded .png image file optimizer\n[oxipng](https://github.com/shssoichiro/oxipng) (written in Rust). Use\n`pyoxipng` to reduce the file size of your PNG images.\n\nJump to a section\n\n- [Installation](#installation)\n- [API](#api)\n\n - [optimize](#oxipngoptimizeinput-outputnone-kwargs)\n - [optimize_from_memory](#oxipngoptimize_from_memorydata-kwargs)\n - [RawImage](#oxipngrawimage)\n\n- [Options](#options)\n - [filter](#filter)\n - [interlace](#interlace)\n - [strip](#strip)\n - [deflate](#deflate)\n- [Development](#development)\n- [License](#license)\n\n## Installation\n\nInstall from PyPI:\n\n```sh\npip install pyoxipng\n```\n\nImport in your Python code:\n\n```py\nimport oxipng\n```\n\n## API\n\n### oxipng.optimize(input, output=None, \\*\\*kwargs)\n\nOptimize a file on disk.\n\n**Parameters**:\n\n- **input** _(str | bytes | PathLike)_ \u2013 path to input file to optimize\n- **output** _(str | bytes | PathLike, optional)_ \u2013 path to optimized output result file. If not specified, overwrites input. Defaults to None\n- **\\*\\*kwargs** \u2013 [Options](#options)\n\n**Returns**\n\n- None\n\n**Raises**\n\n- **oxipng.PngError** \u2013 optimization could not be completed\n\n**Examples:**\n\nOptimize a file on disk and overwrite\n\n```py\noxipng.optimize(\"/path/to/image.png\")\n```\n\nOptimize a file and save to a new location:\n\n```py\noxipng.optimize(\"/path/to/image.png\", \"/path/to/image-optimized.png\")\n```\n\n### oxipng.optimize_from_memory(data, \\*\\*kwargs)\n\nOptimize raw data from a PNG file loaded in Python as a `bytes` object:\n\n**Parameters**:\n\n- **data** _(bytes)_ \u2013 raw PNG data to optimize\n- **\\*\\*kwargs** \u2013 [Options](#options)\n\n**Returns**\n\n- _(bytes)_ \u2013\u00a0optimized raw PNG data\n\n**Raises**\n\n- **oxipng.PngError** \u2013 optimization could not be completed\n\n**Examples:**\n\n```py\ndata = ... # bytes of png data\noptimized_data = oxipng.optimize_from_memory(data)\nwith open(\"/path/to/image-optimized.png\", \"wb\") as f:\n f.write(optimized_data)\n```\n\n### oxipng.RawImage\n\nCreate an optimized PNG file from raw image data:\n\n```python\nraw = oxipng.RawImage(data, width, height)\noptimized_data = raw.create_optimized_png()\n```\n\nBy default, assumes the input data is 8-bit, row-major RGBA, where every 4 bytes represents one pixel with Red-Green-Blue-Alpha channels. To interpret non-RGBA data, specify a `color_type` parameter with the `oxipng.ColorType` class:\n\n| Method | Description |\n| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |\n| `oxipng.ColorType.grayscale(int \\| None)` | Grayscale, with one color channel. Specify optional shade of gray that should be rendered as transparent. |\n| `oxipng.ColorType.rgb(tuple[int, int, int])` | RGB, with three color channels. Specify optional color value that should be rendered as transparent. |\n| `oxipng.ColorType.indexed(list[[tuple[int, int, int, int]])` | Indexed, with one byte per pixel representing a color from the palette. Specify palette containing the colors used, up to 256 entries. |\n| `oxipng.ColorType.grayscale_alpha()` | Grayscale + Alpha, with two color channels. |\n| `oxipng.ColorType.rgba()` | RGBA, with four color channels. |\n\n**Parameters:**\n\n- **data** _(bytes | bytearray)_ \u2013 Raw image data bytes. Format depends on `color_type` and `bit_depth` parameters\n- **width** _(int)_ \u2013\u00a0Width of raw image, in pixels\n- **height** _(int)_ \u2013 Height of raw image, in pixels\n- **color_type** _([oxipng.ColorType, optional)_ \u2013 Descriptor for color type used to represent this image. Optional, defaults to `oxipng.ColorType.rgba()`\n- **bit_depth** _(int, optional)_ \u2013\u00a0Bit depth of raw image. Optional, defaults to 8\n\n**Examples:**\n\nSave RGB image data from a JPEG file, interpreting black pixels as transparent.\n\n```python\nfrom PIL import Image\nimport numpy as np\n\n# Load an image file with Pillow\njpg = Image.open(\"/path/to/image.jpg\")\n\n# Convert to RGB numpy array\nrgb_array = np.array(jpg.convert(\"RGB\"), dtype=np.uint8)\nheight, width, channels = rgb_array.shape\n\n# Create raw image with sRGB color profile\ndata = rgb_array.tobytes()\ncolor_type = oxipng.ColorType.rgb((0, 0, 0)) # black is transparent\nraw = oxipng.RawImage(data, width, height, color_type=color_type)\nraw.add_png_chunk(b\"sRGB\", b\"\\0\")\n\n# Optimize and save\noptimized = raw.create_optimized_png(level=6)\nwith open(\"/path/to/image/optimized.png\", \"wb\") as f:\n f.write(optimized)\n```\n\nSave with data where bytes reference a color palette\n\n```python\ndata = b\"\\0\\1\\2...\" # get index data\npalette = [[0, 0, 0, 255], [1, 23, 234, 255], ...]\ncolor_type = oxipng.ColorType.indexed(palette)\nraw = oxipng.RawImage(data, 100, 100, color_type=color_type)\noptimized = raw.create_optimized_png()\n```\n\n**Methods:**\n\n#### add_png_chunk(name, data)\n\nAdd a png chunk, such as `b\"iTXt\"`, to be included in the output\n\n**Parameters:**\n\n- **name** _(bytes)_ \u2013 PNG chunk identifier\n- **data** _(bytes | bytarray)_\n\n**Returns:**\n\n- None\n\n#### add_icc_profile(data)\n\nAdd an ICC profile for the image\n\n**Parameters:**\n\n- **data** _(bytes)_ \u2013 ICC profile data\n\n**Returns:**\n\n- None\n\n#### create_optimized_png(\\*\\*kwargs)\n\nCreate an optimized png from the raw image data using the options provided\n\n**Parameters:**\n\n- **\\*\\*kwargs** \u2013\u00a0[Options](#options)\n\n**Returns:**\n\n- _(bytes)_ optimized PNG image data\n\n## Options\n\n`optimize` , `optimize_from_memory` and `RawImage.create_optimized_png` accept the following options as keyword arguments.\n\n**Example:**\n\n```py\noxipng.optimize(\"/path/to/image.png\", level=6, fix_errors=True, interlace=oxipng.Interlacing.Adam7)\n```\n\n| Option | Description | Type | Default |\n| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ------------------------- |\n| `level` | Set the optimization level to an integer between 0 and 6 (inclusive) | int | `2` |\n| `fix_errors` | Attempt to fix errors when decoding the input file rather than throwing `PngError` | bool | `False` |\n| `force` | Write to output even if there was no improvement in compression | bool | `False` |\n| `filter` | Which filters to try on the file. Use Use enum values from `oxipng.RowFilter` | Sequence[[RowFilter](#filter)] | `[RowFilter.NoOp]` |\n| `interlace` | Whether to change the interlacing type of the file. `None` will not change current interlacing type | [Interlacing](#interlace) \\| None | `None` |\n| `optimize_alpha` | Whether to allow transparent pixels to be altered to improve compression | bool | `False` |\n| `bit_depth_reduction` | Whether to attempt bit depth reduction | bool | `True` |\n| `color_type_reduction` | Whether to attempt color type reduction | bool | `True` |\n| `palette_reduction` | Whether to attempt palette reduction | bool | `True` |\n| `grayscale_reduction` | Whether to attempt grayscale reduction | bool | `True` |\n| `idat_recoding` | If any type of reduction is performed, IDAT recoding will be performed regardless of this setting | bool | `True` |\n| `scale_16` | Whether to forcibly reduce 16-bit to 8-bit by scaling | bool | `False` |\n| `strip` | Which headers to strip from the PNG file, if any. Specify with `oxipng.StripChunks` | [StripChunks](#strip) | `StripChunks.none()` |\n| `deflate` | Which DEFLATE algorithm to use. Specify with `oxipng.Deflaters` | [Deflaters](#deflate) | `Deflaters.libdeflater()` |\n| `fast_evaluation` | Whether to use fast evaluation to pick the best filter | bool | `False` |\n| `timeout` | Maximum amount of time to spend (in seconds) on optimizations. Further potential optimizations skipped if the timeout is exceeded | float \\| None | `None` |\n\n### filter\n\nInitialize a `filter` list or tuple with any of the following `oxipng.RowFilter` enum options:\n\n- `oxipng.RowFilter.NoOp`\n- `oxipng.RowFilter.Sub`\n- `oxipng.RowFilter.Up`\n- `oxipng.RowFilter.Average`\n- `oxipng.RowFilter.Paeth`\n- `oxipng.RowFilter.Bigrams`\n- `oxipng.RowFilter.BigEnt`\n- `oxipng.RowFilter.Brute`\n\n### interlace\n\nSet `interlace` to `None` to keep existing interlacing or to one of following `oxipng.Interlacing` enum options:\n\n- `oxipng.Interlacing.Off` (interlace disabled)\n- `oxipng.Interlacing.Adam7` (interlace enabled)\n\n### strip\n\nInitialize the `strip` option with one of the following static methods in the\n`oxipng.StripChunks` class.\n\n| Method | Description |\n| ------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| `oxipng.StripChunks.none()` | None |\n| `oxipng.StripChunks.strip(Sequence[bytes])` | Strip chunks specified in the given list |\n| `oxipng.StripChunks.safe()` | Strip chunks that won't affect rendering (all but cICP, iCCP, sRGB, pHYs, acTL, fcTL, fdAT) |\n| `oxipng.StripChunks.keep(Sequence[bytes])` | Strip all non-critical chunks except those in the given list |\n| `oxipng.StripChunks.all()` | Strip all non-critical chunks |\n\n### deflate\n\nInitialize the `deflate` option with one of the following static methods in the\n`oxipng.Deflaters` class.\n\n| Method | Description |\n| ----------------------------------- | ---------------------------------------------------------- |\n| `oxipng.Deflaters.libdeflater(int)` | Libdeflater with compression level [0-12] |\n| `oxipng.Deflaters.zopfli(int)` | Zopfli with number of compression iterations to do [1-255] |\n\n## Development\n\n1. Install [Rust](https://www.rust-lang.org/tools/install)\n1. Install [Python 3.8+](https://www.python.org/downloads/)\n1. Install [Pipenv](https://pipenv.pypa.io/en/latest/)\n1. Clone this repository and navigate to it via command line\n ```sh\n git clone https://github.com/nfrasser/pyoxipng.git\n cd pyoxipng\n ```\n1. Install dependencies\n ```sh\n pipenv install --dev\n ```\n1. Activate the dev environment\n ```\n pipenv shell\n ```\n1. Build\n ```sh\n maturin develop\n ```\n1. Run tests\n ```\n pytest\n ```\n1. Format code\n ```\n ruff check .\n ruff format .\n ```\n\n## License\n\nMIT\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Python wrapper for multithreaded .png image file optimizer oxipng",
"version": "9.1.0",
"project_urls": {
"changelog": "https://github.com/nfrasser/pyoxipng/blob/master/CHANGELOG.md",
"documentation": "https://github.com/nfrasser/pyoxipng#readme",
"homepage": "https://github.com/nfrasser/pyoxipng",
"repository": "https://github.com/nfrasser/pyoxipng"
},
"split_keywords": [
"rust",
" image",
" optimize",
" optimizer",
" optimization",
" compress",
" png"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "087dac896f26cbd3a065aca7cbf276a75d7722f0e0aefec83750811cde6b2e4a",
"md5": "329708d241b5681a214d6d098eaba63f",
"sha256": "2a73bd319adf18c15a51a691428f6bd04350d44151e817e25f1963b4807a5497"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "329708d241b5681a214d6d098eaba63f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 608847,
"upload_time": "2024-12-30T02:34:55",
"upload_time_iso_8601": "2024-12-30T02:34:55.047170Z",
"url": "https://files.pythonhosted.org/packages/08/7d/ac896f26cbd3a065aca7cbf276a75d7722f0e0aefec83750811cde6b2e4a/pyoxipng-9.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eeddf53d3e50ef8709d7029e5f40ca283b6df94088af7803fc9b85dec95f2490",
"md5": "bf1285b91eae4116df229f84508ea766",
"sha256": "a961bcb59f91e7fc23a3aa6139e83924ee9793b1397d7702f0a412cbe1352537"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "bf1285b91eae4116df229f84508ea766",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 569636,
"upload_time": "2024-12-30T02:34:40",
"upload_time_iso_8601": "2024-12-30T02:34:40.749455Z",
"url": "https://files.pythonhosted.org/packages/ee/dd/f53d3e50ef8709d7029e5f40ca283b6df94088af7803fc9b85dec95f2490/pyoxipng-9.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3d63475d3ebe2309fc923714940b377041b55da2d89ff701d51af2774fc26172",
"md5": "8f5244fe5de01493c33f0025c77c7497",
"sha256": "c50850ac7536feb7e718ec13ff82dde0d23e8f24ba851be63636bac4becf1ee2"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "8f5244fe5de01493c33f0025c77c7497",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 649383,
"upload_time": "2024-12-30T02:34:18",
"upload_time_iso_8601": "2024-12-30T02:34:18.199056Z",
"url": "https://files.pythonhosted.org/packages/3d/63/475d3ebe2309fc923714940b377041b55da2d89ff701d51af2774fc26172/pyoxipng-9.1.0-cp310-cp310-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6231392a4ad536925ec61553459222e464379c057b87937b047e9b2879b669ea",
"md5": "b5af3af9fb3677e74527571e149ba680",
"sha256": "447e0855886869d479d9b7e1e7385f2c8c8f8361809faece11bfd30ed379cdf6"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "b5af3af9fb3677e74527571e149ba680",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 664257,
"upload_time": "2024-12-30T02:34:29",
"upload_time_iso_8601": "2024-12-30T02:34:29.316087Z",
"url": "https://files.pythonhosted.org/packages/62/31/392a4ad536925ec61553459222e464379c057b87937b047e9b2879b669ea/pyoxipng-9.1.0-cp310-cp310-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "164e353960b505eeab8fecdd4b423111f0e6f8f6006aa02a46dcea42552eedd3",
"md5": "05512703fd0aeeb1d90b2fc54d295fde",
"sha256": "356928d165647e0a937ef8abd1c70f34b62cc587f7a36820d314d2b33106d8e6"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "05512703fd0aeeb1d90b2fc54d295fde",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 823875,
"upload_time": "2024-12-30T02:35:04",
"upload_time_iso_8601": "2024-12-30T02:35:04.370467Z",
"url": "https://files.pythonhosted.org/packages/16/4e/353960b505eeab8fecdd4b423111f0e6f8f6006aa02a46dcea42552eedd3/pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "afd0fa4af7e124f0884f1120f1cdbe2aa21ae6b8de8af1e006a3734b54522c7c",
"md5": "35ad1f240973736f2bc1e894db6a4b72",
"sha256": "b3219dac933bc058860f5b523dc005bbfe50c50b3320493f259b0b95ae683616"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "35ad1f240973736f2bc1e894db6a4b72",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 904054,
"upload_time": "2024-12-30T02:35:14",
"upload_time_iso_8601": "2024-12-30T02:35:14.157876Z",
"url": "https://files.pythonhosted.org/packages/af/d0/fa4af7e124f0884f1120f1cdbe2aa21ae6b8de8af1e006a3734b54522c7c/pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d88e78cf027a04ee7e6001f6a320770e04ebfd6e3334dc12f3e7e2c80e86353b",
"md5": "4f095c0c28970e7917644e6737cb77e9",
"sha256": "660a360463acecf807a69c550ec7502780c6d072a7ecc8e2fa47d65e7f003145"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "4f095c0c28970e7917644e6737cb77e9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 863581,
"upload_time": "2024-12-30T02:35:28",
"upload_time_iso_8601": "2024-12-30T02:35:28.061093Z",
"url": "https://files.pythonhosted.org/packages/d8/8e/78cf027a04ee7e6001f6a320770e04ebfd6e3334dc12f3e7e2c80e86353b/pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a84b3a7466346de4a01f070b6a43b252ac013ed77beddf3aff206e1a33079261",
"md5": "8832737a4c5c7bc05a7ef22edc1ee32f",
"sha256": "508149f5cdd182172d9e9adf51fbfa5f74ad2d3c584563acb07c413e1379f70d"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "8832737a4c5c7bc05a7ef22edc1ee32f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 832696,
"upload_time": "2024-12-30T02:35:38",
"upload_time_iso_8601": "2024-12-30T02:35:38.833303Z",
"url": "https://files.pythonhosted.org/packages/a8/4b/3a7466346de4a01f070b6a43b252ac013ed77beddf3aff206e1a33079261/pyoxipng-9.1.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5b6d7e0902b819f872da851983d49fc56c235114a0f3636f1acd2db1e5348217",
"md5": "885e2f45f416aeaa864f9b244f926fed",
"sha256": "bd8063b1c9d0c81f72367fc23b4023299439321113eb538c78158e41837f1502"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "885e2f45f416aeaa864f9b244f926fed",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 436080,
"upload_time": "2024-12-30T02:35:59",
"upload_time_iso_8601": "2024-12-30T02:35:59.414096Z",
"url": "https://files.pythonhosted.org/packages/5b/6d/7e0902b819f872da851983d49fc56c235114a0f3636f1acd2db1e5348217/pyoxipng-9.1.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "896f6e6e92aa591c70f378e03a314a1d7754ce679592e0a716ca098e6901b17f",
"md5": "010be2846115e99655a696783753c277",
"sha256": "46b43fdc64bea5bb378ca2f5ff90106885631e2936c1a68b4e20717c0d6f0485"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "010be2846115e99655a696783753c277",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 460290,
"upload_time": "2024-12-30T02:35:49",
"upload_time_iso_8601": "2024-12-30T02:35:49.902114Z",
"url": "https://files.pythonhosted.org/packages/89/6f/6e6e92aa591c70f378e03a314a1d7754ce679592e0a716ca098e6901b17f/pyoxipng-9.1.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ebf1ba0cbca1d01e991f05730d23e086624ac02910244bc87318bd0f91348aac",
"md5": "36b28b5d77d90d9cf80dfc03bb572354",
"sha256": "67a0ea58dc8a08975b3ae0fdd3ad170254793c9fdcc5cbbaa09100ce24979767"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "36b28b5d77d90d9cf80dfc03bb572354",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 608822,
"upload_time": "2024-12-30T02:34:56",
"upload_time_iso_8601": "2024-12-30T02:34:56.156945Z",
"url": "https://files.pythonhosted.org/packages/eb/f1/ba0cbca1d01e991f05730d23e086624ac02910244bc87318bd0f91348aac/pyoxipng-9.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "043b030d3f6e0a510bca8a6058dfbca090c4253fb52afbe23e366aba68173c3a",
"md5": "13d38ccad29a3cd877449fb9d4213c2b",
"sha256": "1f2ee899283726911a0fc8891685068a9f7f4ff50f6f9053cb2b6c0047267115"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "13d38ccad29a3cd877449fb9d4213c2b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 569473,
"upload_time": "2024-12-30T02:34:43",
"upload_time_iso_8601": "2024-12-30T02:34:43.059012Z",
"url": "https://files.pythonhosted.org/packages/04/3b/030d3f6e0a510bca8a6058dfbca090c4253fb52afbe23e366aba68173c3a/pyoxipng-9.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1c4eff0854a47aca55e7f0753617f0280975942cb63df3c108f34f1ea8d0a3e5",
"md5": "4185a21ca9349acc607e642ca9e4ad02",
"sha256": "237f49f7dad785a32dbd519b9baadba6d3b5d5c2bbc9072a65b2352bd0c40614"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "4185a21ca9349acc607e642ca9e4ad02",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 648859,
"upload_time": "2024-12-30T02:34:20",
"upload_time_iso_8601": "2024-12-30T02:34:20.160328Z",
"url": "https://files.pythonhosted.org/packages/1c/4e/ff0854a47aca55e7f0753617f0280975942cb63df3c108f34f1ea8d0a3e5/pyoxipng-9.1.0-cp311-cp311-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "431b188d9661c0d6f7956530c64130e788ed692d17fae127d0fa281115ba19b9",
"md5": "b04b647610d8cec8395195f524ba5630",
"sha256": "c1c420a73ee0cb2820a41b8b961a8a3fa8920f3451d2f26b63958bf48720d333"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "b04b647610d8cec8395195f524ba5630",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 664308,
"upload_time": "2024-12-30T02:34:31",
"upload_time_iso_8601": "2024-12-30T02:34:31.793928Z",
"url": "https://files.pythonhosted.org/packages/43/1b/188d9661c0d6f7956530c64130e788ed692d17fae127d0fa281115ba19b9/pyoxipng-9.1.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "717326b04506a2cfc7b0eee873fd89a0b9bb16493ecfdf3d77c392dcf0230e69",
"md5": "01e752af4542c05a418a058d7b23bc82",
"sha256": "d5c0f51409d725ed6e9223944eea2f8c5b4b83787bf9dd8a466922ad266cc3f3"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "01e752af4542c05a418a058d7b23bc82",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 823755,
"upload_time": "2024-12-30T02:35:05",
"upload_time_iso_8601": "2024-12-30T02:35:05.507075Z",
"url": "https://files.pythonhosted.org/packages/71/73/26b04506a2cfc7b0eee873fd89a0b9bb16493ecfdf3d77c392dcf0230e69/pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8a8dd063ac6e94887adf2bd965041414e1a94b9630da6e79de2a148d21d2e698",
"md5": "b51a044c78ce997089aa6d08a6f5aab0",
"sha256": "8b1d5c690648f0cfedc648db95420d32fd3725965a8f8be1284b9e1ec36cca27"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "b51a044c78ce997089aa6d08a6f5aab0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 905153,
"upload_time": "2024-12-30T02:35:16",
"upload_time_iso_8601": "2024-12-30T02:35:16.245531Z",
"url": "https://files.pythonhosted.org/packages/8a/8d/d063ac6e94887adf2bd965041414e1a94b9630da6e79de2a148d21d2e698/pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ca96fd8b37fc0a527719d48af2736e868be51d35364864f5eae5855615d707d2",
"md5": "00039f104e84ff3719ddb4d57929c9c4",
"sha256": "aaf0c981c78054a6ee39b054c0fb06ff0b92850e0de88de644107b939da59f6b"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "00039f104e84ff3719ddb4d57929c9c4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 863563,
"upload_time": "2024-12-30T02:35:31",
"upload_time_iso_8601": "2024-12-30T02:35:31.282439Z",
"url": "https://files.pythonhosted.org/packages/ca/96/fd8b37fc0a527719d48af2736e868be51d35364864f5eae5855615d707d2/pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6244afb8f87705b0b003bc24c0adb1594dc9b0c49688d64aed4e6c540cfe7441",
"md5": "810a28db5708564dc6f8785fc8bc039f",
"sha256": "4255f1bc090ac49f6b8058079fc5a83ddb67326bbb84737bb36136b30f7dbd9a"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "810a28db5708564dc6f8785fc8bc039f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 832548,
"upload_time": "2024-12-30T02:35:40",
"upload_time_iso_8601": "2024-12-30T02:35:40.170254Z",
"url": "https://files.pythonhosted.org/packages/62/44/afb8f87705b0b003bc24c0adb1594dc9b0c49688d64aed4e6c540cfe7441/pyoxipng-9.1.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9e35ef2ca6a016275e74a1a7cb056b5c613fa443a56b5b8670a1b567f0160ed9",
"md5": "c6fe2c6f7203ba2752679b2a1aaa90b8",
"sha256": "be692572f7193aabdf39ae1312df96621f257c5bae0a7a0835ce050c033668f7"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "c6fe2c6f7203ba2752679b2a1aaa90b8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 436150,
"upload_time": "2024-12-30T02:36:00",
"upload_time_iso_8601": "2024-12-30T02:36:00.648842Z",
"url": "https://files.pythonhosted.org/packages/9e/35/ef2ca6a016275e74a1a7cb056b5c613fa443a56b5b8670a1b567f0160ed9/pyoxipng-9.1.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f8cd84cdd85ef6307508f3a7589495ada22f60309cacf0723ec0f5ebf2c75e49",
"md5": "3fa03b2f5445f32625d7999a00ccd51b",
"sha256": "4e5d3a6166cc92fd440e73438e1e937afe12bae68f5ad09868afabeb44e33bbb"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "3fa03b2f5445f32625d7999a00ccd51b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 460298,
"upload_time": "2024-12-30T02:35:52",
"upload_time_iso_8601": "2024-12-30T02:35:52.138517Z",
"url": "https://files.pythonhosted.org/packages/f8/cd/84cdd85ef6307508f3a7589495ada22f60309cacf0723ec0f5ebf2c75e49/pyoxipng-9.1.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "277bf7ff882c95ce0469b1ddb561a8d0a933f5f5dc815811f2c2da0e633e7cdd",
"md5": "0dd6894536c8c42d24224cb38ac1651e",
"sha256": "f85177fdb4ce33ccd6255680c4f6d3def80eb209f07035e374e56afb3ec98675"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "0dd6894536c8c42d24224cb38ac1651e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 602209,
"upload_time": "2024-12-30T02:34:58",
"upload_time_iso_8601": "2024-12-30T02:34:58.342744Z",
"url": "https://files.pythonhosted.org/packages/27/7b/f7ff882c95ce0469b1ddb561a8d0a933f5f5dc815811f2c2da0e633e7cdd/pyoxipng-9.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ad1277bc30b0dc05767c4fa4e49e0cd874050b8400e742cf68feea9865c535bc",
"md5": "f107ef276b629dc90496697d2de46643",
"sha256": "13c3c622a46baf87802af202c71c126a7973ccfd39ddde5c96df36da4c3011de"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f107ef276b629dc90496697d2de46643",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 563995,
"upload_time": "2024-12-30T02:34:44",
"upload_time_iso_8601": "2024-12-30T02:34:44.330927Z",
"url": "https://files.pythonhosted.org/packages/ad/12/77bc30b0dc05767c4fa4e49e0cd874050b8400e742cf68feea9865c535bc/pyoxipng-9.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ee014abf333cb3a16bbb35347566a9f69267917692883b01a1a240b885a7ee57",
"md5": "20fee1d09166f41473b4a7eda28fc09d",
"sha256": "8911479774c6dde40cc302dce190a3626a5c25f137f572d147c4caba3863aaed"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "20fee1d09166f41473b4a7eda28fc09d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 647986,
"upload_time": "2024-12-30T02:34:21",
"upload_time_iso_8601": "2024-12-30T02:34:21.948398Z",
"url": "https://files.pythonhosted.org/packages/ee/01/4abf333cb3a16bbb35347566a9f69267917692883b01a1a240b885a7ee57/pyoxipng-9.1.0-cp312-cp312-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9492645159a2863d88d0efb77e72e235c6e4d71395a983573b09708ea9fce7d0",
"md5": "0b973ee3ab99a9e7a94cf1d5157604f2",
"sha256": "f2f03bf6b74ece539aa33a77d84ca9f59f6b8107aa4b8d7f7ba76fd104ad07dc"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "0b973ee3ab99a9e7a94cf1d5157604f2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 663612,
"upload_time": "2024-12-30T02:34:32",
"upload_time_iso_8601": "2024-12-30T02:34:32.986466Z",
"url": "https://files.pythonhosted.org/packages/94/92/645159a2863d88d0efb77e72e235c6e4d71395a983573b09708ea9fce7d0/pyoxipng-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "67cf9f91fbbe66ec39367681f6f59b09f89d916bb0e89d33b37b0b9a3872ce65",
"md5": "541c0917346745f0e2e0c5fb50a58bc4",
"sha256": "b53127f0d3de70164669f077664bec5413ee6dbdd17c63f88bfa3e44c02e529c"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "541c0917346745f0e2e0c5fb50a58bc4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 822530,
"upload_time": "2024-12-30T02:35:06",
"upload_time_iso_8601": "2024-12-30T02:35:06.804571Z",
"url": "https://files.pythonhosted.org/packages/67/cf/9f91fbbe66ec39367681f6f59b09f89d916bb0e89d33b37b0b9a3872ce65/pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "663f5ef6553c9541e5bd15700ff75807e3ed3dc33026f43c1ad05f5af82e7988",
"md5": "9913d41682a6942c574b34f8db929047",
"sha256": "a74042ec1f8c70b609d8a8838a9b8637097b08a752d8d3521ddd47912572ae86"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "9913d41682a6942c574b34f8db929047",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 906148,
"upload_time": "2024-12-30T02:35:18",
"upload_time_iso_8601": "2024-12-30T02:35:18.930422Z",
"url": "https://files.pythonhosted.org/packages/66/3f/5ef6553c9541e5bd15700ff75807e3ed3dc33026f43c1ad05f5af82e7988/pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eec6c39d99fe3701c8a83e0f48ae3b5cce138a1f923d6a1dcdecd975ef492a9f",
"md5": "d13942e6bc68351579712ced0dd6df1b",
"sha256": "a609af247145be051e7b9248a4126c9eac84ee153ff8159d79720821a95507a9"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "d13942e6bc68351579712ced0dd6df1b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 863203,
"upload_time": "2024-12-30T02:35:32",
"upload_time_iso_8601": "2024-12-30T02:35:32.478200Z",
"url": "https://files.pythonhosted.org/packages/ee/c6/c39d99fe3701c8a83e0f48ae3b5cce138a1f923d6a1dcdecd975ef492a9f/pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bc7c5bb4ca6dd885eea1b85e9309f1b010ce51beecb215dea322784837015cb2",
"md5": "62a1f764b0df18aa8b80d9cd5b976222",
"sha256": "5b0279202cd18ff93f9bc02e30fd74f3ef0c333c2cd0eb68522c6696d971e665"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "62a1f764b0df18aa8b80d9cd5b976222",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 831957,
"upload_time": "2024-12-30T02:35:41",
"upload_time_iso_8601": "2024-12-30T02:35:41.373074Z",
"url": "https://files.pythonhosted.org/packages/bc/7c/5bb4ca6dd885eea1b85e9309f1b010ce51beecb215dea322784837015cb2/pyoxipng-9.1.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "40b06bf8897e9c0b13ebdc386ba1bc860f6360674ef9d654270f299576c750f1",
"md5": "48e54cb4f0881ff2737b0c833c078e0c",
"sha256": "f6e06c53465ea0d866d74031287bb820984aaa2ab5a0dae2c922003d1c0fc228"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "48e54cb4f0881ff2737b0c833c078e0c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 436894,
"upload_time": "2024-12-30T02:36:01",
"upload_time_iso_8601": "2024-12-30T02:36:01.779030Z",
"url": "https://files.pythonhosted.org/packages/40/b0/6bf8897e9c0b13ebdc386ba1bc860f6360674ef9d654270f299576c750f1/pyoxipng-9.1.0-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0897e4f635af23b913f35af78c4bb27ec5f3aeff42821c0a9dbd77008e5e40f0",
"md5": "c0f84e31a8b20af81c66b5c6f95705ed",
"sha256": "b77e2e25517445eb8c1d859dcbdc23c287573d40bc3b2ff5a212687995b83694"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "c0f84e31a8b20af81c66b5c6f95705ed",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 461409,
"upload_time": "2024-12-30T02:35:54",
"upload_time_iso_8601": "2024-12-30T02:35:54.257989Z",
"url": "https://files.pythonhosted.org/packages/08/97/e4f635af23b913f35af78c4bb27ec5f3aeff42821c0a9dbd77008e5e40f0/pyoxipng-9.1.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "008c856033fbd7156a52b146399ae18d7fdc924fabc15b2fab275ed59f8add0e",
"md5": "1c29c13ee723570f9e35e47973e486a7",
"sha256": "a87ca72cb7728e5618fb5adba7122d6c6a5d34aa687b2511e79578840439f1de"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "1c29c13ee723570f9e35e47973e486a7",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 602550,
"upload_time": "2024-12-30T02:34:59",
"upload_time_iso_8601": "2024-12-30T02:34:59.548766Z",
"url": "https://files.pythonhosted.org/packages/00/8c/856033fbd7156a52b146399ae18d7fdc924fabc15b2fab275ed59f8add0e/pyoxipng-9.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "735373b32421c107e9e07e047c50085ef34cdfc9e1e27339b91d9f669fe1cf40",
"md5": "70a3d7f879df1f3f9f4250a42c614a2d",
"sha256": "28966c13f6d83fbe3d49e32835ff3b4d4815d4d3b34cb3211424f8b4f6ce285e"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "70a3d7f879df1f3f9f4250a42c614a2d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 564414,
"upload_time": "2024-12-30T02:34:46",
"upload_time_iso_8601": "2024-12-30T02:34:46.950729Z",
"url": "https://files.pythonhosted.org/packages/73/53/73b32421c107e9e07e047c50085ef34cdfc9e1e27339b91d9f669fe1cf40/pyoxipng-9.1.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "75ee23ca2877cfa161bcea8a3657b41050998040dcfb166f4e0ef52b01627f8e",
"md5": "d779c94bd92d7607a22cad1bd666fe19",
"sha256": "0728f223dda30fb856c74e99123ca23bd03b08633fac701859347470c1f08da2"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "d779c94bd92d7607a22cad1bd666fe19",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 647878,
"upload_time": "2024-12-30T02:34:24",
"upload_time_iso_8601": "2024-12-30T02:34:24.134761Z",
"url": "https://files.pythonhosted.org/packages/75/ee/23ca2877cfa161bcea8a3657b41050998040dcfb166f4e0ef52b01627f8e/pyoxipng-9.1.0-cp313-cp313-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f602f6eda69e61a4d6d9df896632afc2098cb0d1dce27830db0c48b9ad216d0b",
"md5": "4bd1037cad021cbd17bcbfe3adc6039d",
"sha256": "e6e3f6c50c07cdc759cad8448ee4afbd33b9e2146cd07c2511e6cbf860b20a76"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4bd1037cad021cbd17bcbfe3adc6039d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 664202,
"upload_time": "2024-12-30T02:34:34",
"upload_time_iso_8601": "2024-12-30T02:34:34.338470Z",
"url": "https://files.pythonhosted.org/packages/f6/02/f6eda69e61a4d6d9df896632afc2098cb0d1dce27830db0c48b9ad216d0b/pyoxipng-9.1.0-cp313-cp313-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b1d69e1e743928fde6d6ddfa7abaf6cddc04d202fddf0d4f5e2f8dea2c6d9c46",
"md5": "712c72ef8ddaf8dbd6b15512ef8d6bd0",
"sha256": "9fe38f1f611dc5de2c16cfff214ab8a059fb86d9029eaf328a1bca52739597f1"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "712c72ef8ddaf8dbd6b15512ef8d6bd0",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 822533,
"upload_time": "2024-12-30T02:35:08",
"upload_time_iso_8601": "2024-12-30T02:35:08.625903Z",
"url": "https://files.pythonhosted.org/packages/b1/d6/9e1e743928fde6d6ddfa7abaf6cddc04d202fddf0d4f5e2f8dea2c6d9c46/pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b85c9544a8e97789039c11e8aec9f5b413eec5502c80dca8591aee59aaba582a",
"md5": "c1963dfa4f9ecffd71e0ee21972dd507",
"sha256": "b87ceb6305ac92c751a6d1f0f98c9aa0d6ab7bd619da134b5863c45577b4d150"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "c1963dfa4f9ecffd71e0ee21972dd507",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 905871,
"upload_time": "2024-12-30T02:35:21",
"upload_time_iso_8601": "2024-12-30T02:35:21.473936Z",
"url": "https://files.pythonhosted.org/packages/b8/5c/9544a8e97789039c11e8aec9f5b413eec5502c80dca8591aee59aaba582a/pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1934bc189a347594d4d9167d919137ef2551e68b6db68fb1247567794b58ba65",
"md5": "708c95a4bf824368e5a25318b14b0c9d",
"sha256": "c3b9b3c706402b61eb2359de56e1d92a3b98079200984d935d4354a7ee9881c8"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "708c95a4bf824368e5a25318b14b0c9d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 863255,
"upload_time": "2024-12-30T02:35:33",
"upload_time_iso_8601": "2024-12-30T02:35:33.798498Z",
"url": "https://files.pythonhosted.org/packages/19/34/bc189a347594d4d9167d919137ef2551e68b6db68fb1247567794b58ba65/pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ec14c5d53e84e3873a8c466d89b7224e6e5551b6efb7338e8e199f1219523090",
"md5": "72403b669ab1ea00be9648d94c80b9d2",
"sha256": "8564645bf61f7cc84b605913a4ed054a863be07c01b7c928bbacaa93ed75189a"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "72403b669ab1ea00be9648d94c80b9d2",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 832338,
"upload_time": "2024-12-30T02:35:43",
"upload_time_iso_8601": "2024-12-30T02:35:43.816328Z",
"url": "https://files.pythonhosted.org/packages/ec/14/c5d53e84e3873a8c466d89b7224e6e5551b6efb7338e8e199f1219523090/pyoxipng-9.1.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b4da31edc91a0b99d3c0139e7210ec2a65c03cf1ab6d082fb12fc61a893ff0c9",
"md5": "46349c93c6c00d06b4b5791bf4e18471",
"sha256": "6dd9b71b092c1b4d97fd25d028210bd35ce4726a161f03293c6c999ace7eaf52"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "46349c93c6c00d06b4b5791bf4e18471",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 436764,
"upload_time": "2024-12-30T02:36:02",
"upload_time_iso_8601": "2024-12-30T02:36:02.940545Z",
"url": "https://files.pythonhosted.org/packages/b4/da/31edc91a0b99d3c0139e7210ec2a65c03cf1ab6d082fb12fc61a893ff0c9/pyoxipng-9.1.0-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d28af13062afeb0ba8e985af3ab112f36f8e068bf8eb6c31a093f2e8cdc2c489",
"md5": "bd313ba74e235b35f724929f049e5264",
"sha256": "63faae128898a0d79ceaa4467c154ab65c6b0614d771083c2ff69c9bbd343497"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "bd313ba74e235b35f724929f049e5264",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 461673,
"upload_time": "2024-12-30T02:35:55",
"upload_time_iso_8601": "2024-12-30T02:35:55.428172Z",
"url": "https://files.pythonhosted.org/packages/d2/8a/f13062afeb0ba8e985af3ab112f36f8e068bf8eb6c31a093f2e8cdc2c489/pyoxipng-9.1.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "728406b8e1af2e4cce84e46fd92ba891dfa0e9fd246a5c75e6808e6adf34e90f",
"md5": "33e0a778443b55625537413021304b47",
"sha256": "2d7483062185e0d54a9a15e4f61c49f84920ce4e018cd837ccfef8d2b00a8e38"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "33e0a778443b55625537413021304b47",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 608927,
"upload_time": "2024-12-30T02:35:01",
"upload_time_iso_8601": "2024-12-30T02:35:01.859793Z",
"url": "https://files.pythonhosted.org/packages/72/84/06b8e1af2e4cce84e46fd92ba891dfa0e9fd246a5c75e6808e6adf34e90f/pyoxipng-9.1.0-cp38-cp38-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b0809ea14c698b986346955d9723d929ce271a60e7be590201bcf590c57fb825",
"md5": "0d4a0bf80e22f73ec6fe9a3db5bd044c",
"sha256": "3e49814710d656cfed48513a591647d7e0bfc9204ef0cc8ff8a03adf7b43e3cf"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0d4a0bf80e22f73ec6fe9a3db5bd044c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 569673,
"upload_time": "2024-12-30T02:34:49",
"upload_time_iso_8601": "2024-12-30T02:34:49.500149Z",
"url": "https://files.pythonhosted.org/packages/b0/80/9ea14c698b986346955d9723d929ce271a60e7be590201bcf590c57fb825/pyoxipng-9.1.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3323df4f992135910f7db2d0fd52f9a3a5b4f5b7e0b065a830d750e02786fc0b",
"md5": "438956b7e9fe59836e2f8fd3cbd3db18",
"sha256": "71cc55085dbab108dfd2227ed7c63b5eeb220816720f8ece1e216c5846f713f6"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "438956b7e9fe59836e2f8fd3cbd3db18",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 649911,
"upload_time": "2024-12-30T02:34:25",
"upload_time_iso_8601": "2024-12-30T02:34:25.837884Z",
"url": "https://files.pythonhosted.org/packages/33/23/df4f992135910f7db2d0fd52f9a3a5b4f5b7e0b065a830d750e02786fc0b/pyoxipng-9.1.0-cp38-cp38-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2804a43d279e72561ac338cb9dbead157a8539e7f2932758affa5c144d5dbb8f",
"md5": "4063866b08fd936bbf4e85d50d0b7b15",
"sha256": "5994ce7a9a26120d667644226708240557cb5b9a7e461ce722478dee417dc434"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4063866b08fd936bbf4e85d50d0b7b15",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 665333,
"upload_time": "2024-12-30T02:34:35",
"upload_time_iso_8601": "2024-12-30T02:34:35.658817Z",
"url": "https://files.pythonhosted.org/packages/28/04/a43d279e72561ac338cb9dbead157a8539e7f2932758affa5c144d5dbb8f/pyoxipng-9.1.0-cp38-cp38-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "434902ad665d664e0f20db7c94ffd1e31032403e5be59ce4908722e0f39bb13a",
"md5": "490cc0d82f0eef533d71b7817495702d",
"sha256": "940ff3bf09375023e2a71c0d17faee371a0b8043f50cf2de3391dfb69f3e5253"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "490cc0d82f0eef533d71b7817495702d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 825765,
"upload_time": "2024-12-30T02:35:11",
"upload_time_iso_8601": "2024-12-30T02:35:11.142225Z",
"url": "https://files.pythonhosted.org/packages/43/49/02ad665d664e0f20db7c94ffd1e31032403e5be59ce4908722e0f39bb13a/pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "22fabaafaef1f07212ec6786cd179dbd15326c6fbd5c44836018debc69bcfb69",
"md5": "d27148ef6520937eb6ff3d19f93f7615",
"sha256": "4d980aebd05cab73b9bbd6c560a04257d3ae52e08a61fb7cbef427140687b11f"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "d27148ef6520937eb6ff3d19f93f7615",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 906057,
"upload_time": "2024-12-30T02:35:23",
"upload_time_iso_8601": "2024-12-30T02:35:23.252100Z",
"url": "https://files.pythonhosted.org/packages/22/fa/baafaef1f07212ec6786cd179dbd15326c6fbd5c44836018debc69bcfb69/pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d29bb520b619cdcdc0f44c2d724ad250cb6adec059485636065cabd5f2ea323a",
"md5": "3e38280dacd41821b7bf99f65a8c4eca",
"sha256": "66fa8500725d4e398747671cc87333d394f44030c4d5eac808c901e82529c18b"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "3e38280dacd41821b7bf99f65a8c4eca",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 864500,
"upload_time": "2024-12-30T02:35:35",
"upload_time_iso_8601": "2024-12-30T02:35:35.074978Z",
"url": "https://files.pythonhosted.org/packages/d2/9b/b520b619cdcdc0f44c2d724ad250cb6adec059485636065cabd5f2ea323a/pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dcc26928ff9fc1e2f3e0e458d52ee37d6669e1aa7152a4a6cf372d89f0160c12",
"md5": "8f589545f251a91497044fb7ea1e57bb",
"sha256": "6d3d51afc1c8860250f0f1b95818bd9afe4e7eb60740690f88941b32b9446900"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "8f589545f251a91497044fb7ea1e57bb",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 833971,
"upload_time": "2024-12-30T02:35:45",
"upload_time_iso_8601": "2024-12-30T02:35:45.048511Z",
"url": "https://files.pythonhosted.org/packages/dc/c2/6928ff9fc1e2f3e0e458d52ee37d6669e1aa7152a4a6cf372d89f0160c12/pyoxipng-9.1.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bd53ce657ee383a95974bf03d5fda139d6baa27c9cb3cece23fea03a711ba8f0",
"md5": "20ff942a36c4716df15fab9ba642a671",
"sha256": "3512fe900e7ac7de7db6119fb5d0e06739a6de7a3bdabb7ded72b358a1621812"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "20ff942a36c4716df15fab9ba642a671",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 437361,
"upload_time": "2024-12-30T02:36:04",
"upload_time_iso_8601": "2024-12-30T02:36:04.155102Z",
"url": "https://files.pythonhosted.org/packages/bd/53/ce657ee383a95974bf03d5fda139d6baa27c9cb3cece23fea03a711ba8f0/pyoxipng-9.1.0-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "62bb617b09110fdfe818e392bf8f09d251fc6e516320e3d549e648a6d50c30cb",
"md5": "f17e73c862a278acca7c5624c54ed285",
"sha256": "4ccb6097d9976cebaae5ebbc4aae02dfc00b873df0f4b45cc15de4941b867e2b"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "f17e73c862a278acca7c5624c54ed285",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 461370,
"upload_time": "2024-12-30T02:35:56",
"upload_time_iso_8601": "2024-12-30T02:35:56.616330Z",
"url": "https://files.pythonhosted.org/packages/62/bb/617b09110fdfe818e392bf8f09d251fc6e516320e3d549e648a6d50c30cb/pyoxipng-9.1.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5578575b66aa22865c70b6595e39e2d810b289e7bfeeaaf96d59464fedafac56",
"md5": "0f5c5feb33a7bd5620ed7d736f2b2c34",
"sha256": "c81ede9e03adac78ce04e2ea4f7e4edc84d73e77c75e9698f00086b3616a4248"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "0f5c5feb33a7bd5620ed7d736f2b2c34",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 609119,
"upload_time": "2024-12-30T02:35:03",
"upload_time_iso_8601": "2024-12-30T02:35:03.039384Z",
"url": "https://files.pythonhosted.org/packages/55/78/575b66aa22865c70b6595e39e2d810b289e7bfeeaaf96d59464fedafac56/pyoxipng-9.1.0-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d356a5965760dccc251bdcf694f37790510d56776cf6435c4112d89fb3d9dbb0",
"md5": "5d79adc5dc52d15fc69915192021922c",
"sha256": "fb319a59bd9611355308f36079e067672905787e1f8c0a418d15c9fb49827fb5"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5d79adc5dc52d15fc69915192021922c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 570007,
"upload_time": "2024-12-30T02:34:53",
"upload_time_iso_8601": "2024-12-30T02:34:53.895934Z",
"url": "https://files.pythonhosted.org/packages/d3/56/a5965760dccc251bdcf694f37790510d56776cf6435c4112d89fb3d9dbb0/pyoxipng-9.1.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "aaf50e53482d3b3540a0a5798058b426a1d1335bbb3ca86ba6b1a5a88379ae97",
"md5": "3d4cac8183866584143550e02cbf371a",
"sha256": "29c87db43beb6a1d702abf3d5fbb7c0bb345cc3d44be1ada45dd62e3b7479322"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "3d4cac8183866584143550e02cbf371a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 650396,
"upload_time": "2024-12-30T02:34:27",
"upload_time_iso_8601": "2024-12-30T02:34:27.486927Z",
"url": "https://files.pythonhosted.org/packages/aa/f5/0e53482d3b3540a0a5798058b426a1d1335bbb3ca86ba6b1a5a88379ae97/pyoxipng-9.1.0-cp39-cp39-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c91dca8da68eaa1a148ba775441217e37e6d9c31ed18ba9114722fb36b1e54d1",
"md5": "e50c7407caa5a497e4dbb69abe9a62fd",
"sha256": "7ff35f285b6887fab4dab74794c78bb9469779655e95095b55535e23008c0b1b"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e50c7407caa5a497e4dbb69abe9a62fd",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 665839,
"upload_time": "2024-12-30T02:34:38",
"upload_time_iso_8601": "2024-12-30T02:34:38.149648Z",
"url": "https://files.pythonhosted.org/packages/c9/1d/ca8da68eaa1a148ba775441217e37e6d9c31ed18ba9114722fb36b1e54d1/pyoxipng-9.1.0-cp39-cp39-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b93d225b6c7680e8c474d158825eea3fb216a77280374a8b50662d3690e922c1",
"md5": "21c360f6f45927cb470df3ed2eb19d94",
"sha256": "b2eec145eb73dcfed756c7f8c8306290cf99098545f0bc20de5f6d0062db0214"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "21c360f6f45927cb470df3ed2eb19d94",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 826065,
"upload_time": "2024-12-30T02:35:12",
"upload_time_iso_8601": "2024-12-30T02:35:12.819606Z",
"url": "https://files.pythonhosted.org/packages/b9/3d/225b6c7680e8c474d158825eea3fb216a77280374a8b50662d3690e922c1/pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e6242c6edc5de5ef202ad71b8e76e3904645694136156469a8183fe8cb0b7bb4",
"md5": "04e2cd41a53ec595e661b87b325ffb7c",
"sha256": "b55c1407b10102e8e995b9a0e1837189c5049fce83cdbc5ab4d3a514cbb87b05"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "04e2cd41a53ec595e661b87b325ffb7c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 904589,
"upload_time": "2024-12-30T02:35:24",
"upload_time_iso_8601": "2024-12-30T02:35:24.860216Z",
"url": "https://files.pythonhosted.org/packages/e6/24/2c6edc5de5ef202ad71b8e76e3904645694136156469a8183fe8cb0b7bb4/pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1d6fa0b78fe92a9b61040ba933d1a9848e34c8e7b6ce540c3df056fe275e8f91",
"md5": "0c76afa893f4bdd5371ccdf350aaea6a",
"sha256": "1f862c650a15717d5d4a3b642b636f68fa87f4238578a029d1d7a50b52f11e96"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "0c76afa893f4bdd5371ccdf350aaea6a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 864913,
"upload_time": "2024-12-30T02:35:37",
"upload_time_iso_8601": "2024-12-30T02:35:37.551175Z",
"url": "https://files.pythonhosted.org/packages/1d/6f/a0b78fe92a9b61040ba933d1a9848e34c8e7b6ce540c3df056fe275e8f91/pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8671def2e70d2159ba48f710b42d2e92dd78a19950268e22e625168f192533cb",
"md5": "e95846324a4f6494eca5fc187ee83348",
"sha256": "2c12349af778ee99ead8c74aebd55f892d6f0a5f8a30427629261a26b555886b"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e95846324a4f6494eca5fc187ee83348",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 834093,
"upload_time": "2024-12-30T02:35:46",
"upload_time_iso_8601": "2024-12-30T02:35:46.267756Z",
"url": "https://files.pythonhosted.org/packages/86/71/def2e70d2159ba48f710b42d2e92dd78a19950268e22e625168f192533cb/pyoxipng-9.1.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0dfdd710db118a9f0d220d812d9a9960dd0cc69916c8e0f43fe55834783961d7",
"md5": "5b9cceb7f0376a33b7c257e7ceaebbdf",
"sha256": "2b8b5217899ef57d967abfe8b8abea737ed1ba4b47be97d170ebefcf0480635f"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "5b9cceb7f0376a33b7c257e7ceaebbdf",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 436721,
"upload_time": "2024-12-30T02:36:05",
"upload_time_iso_8601": "2024-12-30T02:36:05.368563Z",
"url": "https://files.pythonhosted.org/packages/0d/fd/d710db118a9f0d220d812d9a9960dd0cc69916c8e0f43fe55834783961d7/pyoxipng-9.1.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d722287b0e4dbec76955c65da908318d89ceffea8ab5e6d772ba8a7c94fce1e4",
"md5": "66bcde5a51301ec897f5d6dd54206069",
"sha256": "b5d51dff0e02e9e673ac1a5ddae8ac57fceeefe7d5f9b46fb84cc779ae3d7c7a"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "66bcde5a51301ec897f5d6dd54206069",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 461602,
"upload_time": "2024-12-30T02:35:57",
"upload_time_iso_8601": "2024-12-30T02:35:57.779016Z",
"url": "https://files.pythonhosted.org/packages/d7/22/287b0e4dbec76955c65da908318d89ceffea8ab5e6d772ba8a7c94fce1e4/pyoxipng-9.1.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f0507e173ab2d028edd37938110d4f6e8fb135aaf7c12056810be5d46ea819bf",
"md5": "8a656129d9ea6c43d4ed23fcd5cb6e2c",
"sha256": "f4252d77e7e8b45a5f19aed6a2ffe5e49ff5938312172d3ca852c0ee223563eb"
},
"downloads": -1,
"filename": "pyoxipng-9.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8a656129d9ea6c43d4ed23fcd5cb6e2c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 324397,
"upload_time": "2024-12-30T02:35:47",
"upload_time_iso_8601": "2024-12-30T02:35:47.720844Z",
"url": "https://files.pythonhosted.org/packages/f0/50/7e173ab2d028edd37938110d4f6e8fb135aaf7c12056810be5d46ea819bf/pyoxipng-9.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-30 02:35:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nfrasser",
"github_project": "pyoxipng",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyoxipng"
}