pyoxipng


Namepyoxipng JSON
Version 9.1.0 PyPI version JSON
download
home_pageNone
SummaryPython wrapper for multithreaded .png image file optimizer oxipng
upload_time2024-12-30 02:35:47
maintainerNone
docs_urlNone
authorNick Frasser <nfrasser@users.noreply.github.com>
requires_python>=3.8
licenseNone
keywords rust image optimize optimizer optimization compress png
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.51283s