pyfastmask


Namepyfastmask JSON
Version 1.2.0 PyPI version JSON
download
home_pageNone
SummaryFast low color mask read/write
upload_time2024-07-25 22:33:47
maintainerNone
docs_urlNone
authorAndrei Luzan
requires_pythonNone
licenseMIT License Copyright (c) 2024 Andrei Luzan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords mask segmentation fast read write
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            pyfastmask - Fast image segmentation format
==============

![Tests](https://github.com/JIy3AHKO/pyfastmask/actions/workflows/build-and-test.yml/badge.svg?branch=master)

This is a simple format for storing single channel images with low-frequency data (e.g. semantic segmentation masks).

It has a size similar to PNG, but is much faster (up to 20x) to read.


Installation
------------

### From PyPI:

The easiest way to install the latest version is by using pip:

```bash
pip install pyfastmask
```

### From source:

```bash
git clone git@github.com:JIy3AHKO/pyfastmask.git
cd pyfastmask
pip install -e .
```

Usage
-----
For image reading and writing, use the `read` and `write` functions:

```python
import numpy as np
import pyfastmask as pf

img = np.random.randint(0, 256, (100, 100), dtype=np.uint8)

pf.write('mask.pfm', img)
img2 = pf.read('mask.pfm')

np.testing.assert_array_equal(img, img2)
```


Benchmark
---------
See [BENCHMARK.md](BENCHMARK.md) for more detailed information.

| Image             | pyfastmask  | opencv png     | cv2_bmp     | qoi        |
|-------------------|-------------|----------------|-------------|------------|
| Median Read Time  | **0.09 ms** | 1.71 ms        | 0.35 ms     | 0.81 ms    | 
| Average Size      | 217.35 KiB  | **149.36 KiB** | 1146.64 KiB | 498.24 KiB | 


Format Description
--------
The pyfastmask efficiently compresses and stores image segmentation masks using Run-Length Encoding (RLE) and line-differential encoding.
All values are stored with different bit widths, depending on the number of unique symbols and the mask size - it helps to reduce the size of encoded data.

### Storage Structure

The format organizes data into three main sections: header, symbol mapping, and line-by-line encoded data.

#### 1. Header

- Magic Byte: Format identifier.
- Version Byte: Format version.
- Symbol Bit Width: Bits for each symbol.
- Count Bit Width: Bits for run lengths.
- Line Count Bit Width: Bits for the number of runs per line.
- Unique Symbols Count: Number of unique symbols.
- Mask Height: Mask height in pixels.
- Mask Width: Mask width in pixels.

#### 2. Symbol Mapping

Lists unique symbols in the mask, each encoded with 8 bits.

Semantic segmentation masks usually have a small number of unique symbols, so we can use a small number of bits to encode each symbol.

#### 3. Line-by-Line Encoding

Encodes mask data line by line:
- First Line: Encoded with standard RLE.
- Subsequent Lines: Encoded with sparse RLE on the difference between the current and previous lines.

First line is represented as: (Number of runs), (Symbol, Run Length), (Symbol, Run Length), ...

Subsequent lines are represented as: (Number of runs), (Offset, Symbol, Run Length), (Offset, Symbol, Run Length), ...

Where:
- Number of runs: Number of runs in the line.
- Symbol: Symbol index from the symbol mapping.
- Run Length: Number of pixels with the same symbol.
- Offset: Number of pixels to skip from the previous line.

### Encoding Process

1. Encode Lines:
   - First Line: Standard RLE.
   - Subsequent Lines: Sparse RLE.
2. Estimate Bit Widths: Calculate the number of bits required to store each value.
3. Write Header and Symbol Mapping.
4. Pack Data: Combine all encoded data into a byte stream.


### Decoding Process

1. Read Header and Symbol Mapping.
2. Decode first line with standard RLE.
3. On subsequent lines:
   - copy the previous line
   - apply sparse RLE to the symbols which are differ from the previous line

Testing
---------
To run tests, use the following command:
```bash
python -m unittest discover tests/
```

Contributing
------------
Contributions are welcome! If you want to contribute, please create an issue or a pull request.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyfastmask",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "mask, segmentation, fast, read, write",
    "author": "Andrei Luzan",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/29/9b/b29eb5b0e9d47c8de99d73f5d34b08c6675bf7657798b73f2353ffcf3052/pyfastmask-1.2.0.tar.gz",
    "platform": null,
    "description": "pyfastmask - Fast image segmentation format\n==============\n\n![Tests](https://github.com/JIy3AHKO/pyfastmask/actions/workflows/build-and-test.yml/badge.svg?branch=master)\n\nThis is a simple format for storing single channel images with low-frequency data (e.g. semantic segmentation masks).\n\nIt has a size similar to PNG, but is much faster (up to 20x) to read.\n\n\nInstallation\n------------\n\n### From PyPI:\n\nThe easiest way to install the latest version is by using pip:\n\n```bash\npip install pyfastmask\n```\n\n### From source:\n\n```bash\ngit clone git@github.com:JIy3AHKO/pyfastmask.git\ncd pyfastmask\npip install -e .\n```\n\nUsage\n-----\nFor image reading and writing, use the `read` and `write` functions:\n\n```python\nimport numpy as np\nimport pyfastmask as pf\n\nimg = np.random.randint(0, 256, (100, 100), dtype=np.uint8)\n\npf.write('mask.pfm', img)\nimg2 = pf.read('mask.pfm')\n\nnp.testing.assert_array_equal(img, img2)\n```\n\n\nBenchmark\n---------\nSee [BENCHMARK.md](BENCHMARK.md) for more detailed information.\n\n| Image             | pyfastmask  | opencv png     | cv2_bmp     | qoi        |\n|-------------------|-------------|----------------|-------------|------------|\n| Median Read Time  | **0.09 ms** | 1.71 ms        | 0.35 ms     | 0.81 ms    | \n| Average Size      | 217.35 KiB  | **149.36 KiB** | 1146.64 KiB | 498.24 KiB | \n\n\nFormat Description\n--------\nThe pyfastmask efficiently compresses and stores image segmentation masks using Run-Length Encoding (RLE) and line-differential encoding.\nAll values are stored with different bit widths, depending on the number of unique symbols and the mask size - it helps to reduce the size of encoded data.\n\n### Storage Structure\n\nThe format organizes data into three main sections: header, symbol mapping, and line-by-line encoded data.\n\n#### 1. Header\n\n- Magic Byte: Format identifier.\n- Version Byte: Format version.\n- Symbol Bit Width: Bits for each symbol.\n- Count Bit Width: Bits for run lengths.\n- Line Count Bit Width: Bits for the number of runs per line.\n- Unique Symbols Count: Number of unique symbols.\n- Mask Height: Mask height in pixels.\n- Mask Width: Mask width in pixels.\n\n#### 2. Symbol Mapping\n\nLists unique symbols in the mask, each encoded with 8 bits.\n\nSemantic segmentation masks usually have a small number of unique symbols, so we can use a small number of bits to encode each symbol.\n\n#### 3. Line-by-Line Encoding\n\nEncodes mask data line by line:\n- First Line: Encoded with standard RLE.\n- Subsequent Lines: Encoded with sparse RLE on the difference between the current and previous lines.\n\nFirst line is represented as: (Number of runs), (Symbol, Run Length), (Symbol, Run Length), ...\n\nSubsequent lines are represented as: (Number of runs), (Offset, Symbol, Run Length), (Offset, Symbol, Run Length), ...\n\nWhere:\n- Number of runs: Number of runs in the line.\n- Symbol: Symbol index from the symbol mapping.\n- Run Length: Number of pixels with the same symbol.\n- Offset: Number of pixels to skip from the previous line.\n\n### Encoding Process\n\n1. Encode Lines:\n   - First Line: Standard RLE.\n   - Subsequent Lines: Sparse RLE.\n2. Estimate Bit Widths: Calculate the number of bits required to store each value.\n3. Write Header and Symbol Mapping.\n4. Pack Data: Combine all encoded data into a byte stream.\n\n\n### Decoding Process\n\n1. Read Header and Symbol Mapping.\n2. Decode first line with standard RLE.\n3. On subsequent lines:\n   - copy the previous line\n   - apply sparse RLE to the symbols which are differ from the previous line\n\nTesting\n---------\nTo run tests, use the following command:\n```bash\npython -m unittest discover tests/\n```\n\nContributing\n------------\nContributions are welcome! If you want to contribute, please create an issue or a pull request.\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2024 Andrei Luzan  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Fast low color mask read/write",
    "version": "1.2.0",
    "project_urls": {
        "Issues": "https://github.com/JIy3AHKO/pyfastmask/issues",
        "Repository": "https://github.com/JIy3AHKO/pyfastmask"
    },
    "split_keywords": [
        "mask",
        " segmentation",
        " fast",
        " read",
        " write"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "09358bf4b5fc6f254e9d94544d939dda6d6b31db5b9ffdf8b0b077084cc7daa9",
                "md5": "310f0aa31a2265bdcd7488ebfc2597e6",
                "sha256": "932a096839eac3ba6d6b98c3e1ec72ad7c316f9656713120ee62b35d54c261bd"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "310f0aa31a2265bdcd7488ebfc2597e6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 99523,
            "upload_time": "2024-07-25T22:34:38",
            "upload_time_iso_8601": "2024-07-25T22:34:38.288440Z",
            "url": "https://files.pythonhosted.org/packages/09/35/8bf4b5fc6f254e9d94544d939dda6d6b31db5b9ffdf8b0b077084cc7daa9/pyfastmask-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6ef7b27f8f55e3080d9890d1c737165076a71028a811a9f57be4a3df0268b3e8",
                "md5": "d25c67d27dd618faa75394bfd23c256c",
                "sha256": "2615ff6357c6c1da655aa9f89209c1f4ae6c89a4bd46a839163a2f452d720305"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d25c67d27dd618faa75394bfd23c256c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 93794,
            "upload_time": "2024-07-25T22:34:39",
            "upload_time_iso_8601": "2024-07-25T22:34:39.453536Z",
            "url": "https://files.pythonhosted.org/packages/6e/f7/b27f8f55e3080d9890d1c737165076a71028a811a9f57be4a3df0268b3e8/pyfastmask-1.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa37e3592c2611f8cf5033a72ffde73cef7ed4dae633bd7e2b6c93dc66454b97",
                "md5": "4c0c8750f697e530be896a2d9b012c8e",
                "sha256": "922f2012d95c72f0a14f8e87adece588abfa97f0078e8198fca818b393f55fd9"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4c0c8750f697e530be896a2d9b012c8e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 132907,
            "upload_time": "2024-07-25T22:34:20",
            "upload_time_iso_8601": "2024-07-25T22:34:20.097897Z",
            "url": "https://files.pythonhosted.org/packages/aa/37/e3592c2611f8cf5033a72ffde73cef7ed4dae633bd7e2b6c93dc66454b97/pyfastmask-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6869f4a7fa9cee54232bd3cde38c255222d0e97e79c0813ef009a6518b06d056",
                "md5": "212bde5c3536a1a5e06aad66855a852e",
                "sha256": "f54a5b23c25ccc0268760ea9126a23795c4bae877ef287e4ff015b36f0652d6c"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "212bde5c3536a1a5e06aad66855a852e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1095248,
            "upload_time": "2024-07-25T22:34:22",
            "upload_time_iso_8601": "2024-07-25T22:34:22.033404Z",
            "url": "https://files.pythonhosted.org/packages/68/69/f4a7fa9cee54232bd3cde38c255222d0e97e79c0813ef009a6518b06d056/pyfastmask-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d119fbc36af5ad501f85b6fa7205c634c96222a89c9bf74de413cba0cd024ff5",
                "md5": "e56978418a07bf73775e7255c03c950b",
                "sha256": "4f31fc10752b461ed819eedead2dae9c7ecec2485a6ca144bdf3cc913320c4f0"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "e56978418a07bf73775e7255c03c950b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 78307,
            "upload_time": "2024-07-25T22:36:09",
            "upload_time_iso_8601": "2024-07-25T22:36:09.461314Z",
            "url": "https://files.pythonhosted.org/packages/d1/19/fbc36af5ad501f85b6fa7205c634c96222a89c9bf74de413cba0cd024ff5/pyfastmask-1.2.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdb3266a3ea0d402239480ccc398ecc397ce6ebad11feb28b79c120c99ef4247",
                "md5": "0ee873830ac15d7b153294743f77cebb",
                "sha256": "42c999cab20888898d060ad9a19b019b234ac9169bd305a59bdf8bb9604aeceb"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0ee873830ac15d7b153294743f77cebb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 86275,
            "upload_time": "2024-07-25T22:36:17",
            "upload_time_iso_8601": "2024-07-25T22:36:17.899915Z",
            "url": "https://files.pythonhosted.org/packages/cd/b3/266a3ea0d402239480ccc398ecc397ce6ebad11feb28b79c120c99ef4247/pyfastmask-1.2.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "67011f841d1c71e528f312fdab12e7de1a6dbd009d9f92285c677c768af90392",
                "md5": "04bf3a165da43b94af9afd726cfd4e81",
                "sha256": "fd830b6227dbcea444bb8f3dcbbeeb8c0d7175908ab9a6bab25357d9b866da6e"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "04bf3a165da43b94af9afd726cfd4e81",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 100809,
            "upload_time": "2024-07-25T22:34:32",
            "upload_time_iso_8601": "2024-07-25T22:34:32.744194Z",
            "url": "https://files.pythonhosted.org/packages/67/01/1f841d1c71e528f312fdab12e7de1a6dbd009d9f92285c677c768af90392/pyfastmask-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee30da9cb325acd671d09c690f5f410f48eaaa838ed3f4fbec04b30e3aba24af",
                "md5": "be9d7f47780a9787fb045eef0d4b4335",
                "sha256": "78e0a5fb0f7ab45465e34741038d02c55dfde4fdaf7fc87967d441065c95a96f"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "be9d7f47780a9787fb045eef0d4b4335",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 95539,
            "upload_time": "2024-07-25T22:33:58",
            "upload_time_iso_8601": "2024-07-25T22:33:58.384882Z",
            "url": "https://files.pythonhosted.org/packages/ee/30/da9cb325acd671d09c690f5f410f48eaaa838ed3f4fbec04b30e3aba24af/pyfastmask-1.2.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a53473f1ca3d13759b246b8ce5ea1b8c2cfee7703bd549c46a3072b7972c5a73",
                "md5": "62b99b8fe93a2de330fc36e751f24457",
                "sha256": "f930e45ee84d79e942095543b3e9c44c31e0ed4bdc46342bf228efdffcdbe101"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "62b99b8fe93a2de330fc36e751f24457",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 134126,
            "upload_time": "2024-07-25T22:34:23",
            "upload_time_iso_8601": "2024-07-25T22:34:23.960202Z",
            "url": "https://files.pythonhosted.org/packages/a5/34/73f1ca3d13759b246b8ce5ea1b8c2cfee7703bd549c46a3072b7972c5a73/pyfastmask-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f9195f1afeec7140eb132d53ae089da73e25ceb190cc17f5abc2dfe91d7174b6",
                "md5": "c763dd823ac7c9af954b3688f127ca6e",
                "sha256": "9ce310c3ba0723c87eb2974325d6f0b57b5dfc895e0543022cd23688c52ac3a5"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c763dd823ac7c9af954b3688f127ca6e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 1096832,
            "upload_time": "2024-07-25T22:34:33",
            "upload_time_iso_8601": "2024-07-25T22:34:33.695352Z",
            "url": "https://files.pythonhosted.org/packages/f9/19/5f1afeec7140eb132d53ae089da73e25ceb190cc17f5abc2dfe91d7174b6/pyfastmask-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98c94e14271d37ad9cad1d505fc111d8d6780b6308ad025afcbc52e7b190acc7",
                "md5": "98f1044241edc1afb1c1a57d00c12fdd",
                "sha256": "6d02e4ef325bded16d5223612ccb3fc66511e1f95fbbbc130d232b5e3b1a211b"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "98f1044241edc1afb1c1a57d00c12fdd",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 78976,
            "upload_time": "2024-07-25T22:36:11",
            "upload_time_iso_8601": "2024-07-25T22:36:11.584447Z",
            "url": "https://files.pythonhosted.org/packages/98/c9/4e14271d37ad9cad1d505fc111d8d6780b6308ad025afcbc52e7b190acc7/pyfastmask-1.2.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28a0a6a1e4508e9cda91b273ce9af3e7540747f308f351a1f1dce73109d38356",
                "md5": "a53ba8ffb2728dfeedb106c924395afb",
                "sha256": "039582e7ccb25446fc73d55e0d28c61b9e4ede2e470870c95b9846accef4b46a"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a53ba8ffb2728dfeedb106c924395afb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 86987,
            "upload_time": "2024-07-25T22:36:17",
            "upload_time_iso_8601": "2024-07-25T22:36:17.896071Z",
            "url": "https://files.pythonhosted.org/packages/28/a0/a6a1e4508e9cda91b273ce9af3e7540747f308f351a1f1dce73109d38356/pyfastmask-1.2.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "83e1e7c1da3396bedf64f137ca1511beb5abf7a45c4416e23b3248f067b4a855",
                "md5": "ee313923abecccce8ec5f71fb55a24aa",
                "sha256": "01224195d629ad5e42eb298efc9d511d4421b016aeb73f6e1aece157cafd29b2"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ee313923abecccce8ec5f71fb55a24aa",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 100275,
            "upload_time": "2024-07-25T22:34:22",
            "upload_time_iso_8601": "2024-07-25T22:34:22.454831Z",
            "url": "https://files.pythonhosted.org/packages/83/e1/e7c1da3396bedf64f137ca1511beb5abf7a45c4416e23b3248f067b4a855/pyfastmask-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "167a159214a8e9ab75e593e40dfab96c608ad117bb409221bafa2395aeb1a15e",
                "md5": "395e3c00b0636dd34f74f491b1ae7ddb",
                "sha256": "399d0c2acabbb3c30d997278334f6e11604ef995f2651a61bdfc8c3e2c077e82"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "395e3c00b0636dd34f74f491b1ae7ddb",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 94538,
            "upload_time": "2024-07-25T22:34:58",
            "upload_time_iso_8601": "2024-07-25T22:34:58.673391Z",
            "url": "https://files.pythonhosted.org/packages/16/7a/159214a8e9ab75e593e40dfab96c608ad117bb409221bafa2395aeb1a15e/pyfastmask-1.2.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8de77949514e147be948b85cbe5be456a8bd182129f9ed8b22864502f328f99f",
                "md5": "5d406c747fef11f9cca003ba4fc54793",
                "sha256": "670d06a62e9116288934eacbf0d94482fb0704ee8f6636ba53ef5666af2f64d9"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5d406c747fef11f9cca003ba4fc54793",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 133116,
            "upload_time": "2024-07-25T22:34:23",
            "upload_time_iso_8601": "2024-07-25T22:34:23.403534Z",
            "url": "https://files.pythonhosted.org/packages/8d/e7/7949514e147be948b85cbe5be456a8bd182129f9ed8b22864502f328f99f/pyfastmask-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cea5f0baaec5c2dcfef9254fa83ab6bf53107506d851161930a4ddfbd5703daa",
                "md5": "e42c65d701af8e249981e3634d9eac5e",
                "sha256": "a0f94b1fb66deff78ec753ced79358c06ad348939f8103f29d69e5b353495d02"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e42c65d701af8e249981e3634d9eac5e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 1097008,
            "upload_time": "2024-07-25T22:34:23",
            "upload_time_iso_8601": "2024-07-25T22:34:23.783167Z",
            "url": "https://files.pythonhosted.org/packages/ce/a5/f0baaec5c2dcfef9254fa83ab6bf53107506d851161930a4ddfbd5703daa/pyfastmask-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f2d8cb804584105e0b85c6fe669e7fb6b10dd1c1b79a47c8519d37600b450939",
                "md5": "ff94c3f68803aca263d88c44ed3b20db",
                "sha256": "ab30c8396d5d1886b8186118e317b094405068f58d5747f009c7fc61dd642e30"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "ff94c3f68803aca263d88c44ed3b20db",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 79156,
            "upload_time": "2024-07-25T22:37:42",
            "upload_time_iso_8601": "2024-07-25T22:37:42.764330Z",
            "url": "https://files.pythonhosted.org/packages/f2/d8/cb804584105e0b85c6fe669e7fb6b10dd1c1b79a47c8519d37600b450939/pyfastmask-1.2.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d4bf9c62cede0aa9d1405f7f6cf1ed6df3ef8237a3ab9fafed0672b64840051",
                "md5": "1c2402bfeea569e8985f7e528c31146c",
                "sha256": "8355df60225160a1fb79dc653cb3177c00b452a283c6ed8d8fc0f75236bbde9b"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1c2402bfeea569e8985f7e528c31146c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 87544,
            "upload_time": "2024-07-25T22:36:17",
            "upload_time_iso_8601": "2024-07-25T22:36:17.523823Z",
            "url": "https://files.pythonhosted.org/packages/6d/4b/f9c62cede0aa9d1405f7f6cf1ed6df3ef8237a3ab9fafed0672b64840051/pyfastmask-1.2.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "11e4cb8bc10d5781ebfff9a443e09308ffed447742cc34502be4d9b0a5d82e67",
                "md5": "27f18173a6d1c08b7481d6c81978cf93",
                "sha256": "3628652da953091814121d2b4e2339d11fed84de8fd0cb3ed7ad0ac0aed55181"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "27f18173a6d1c08b7481d6c81978cf93",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 99634,
            "upload_time": "2024-07-25T22:35:08",
            "upload_time_iso_8601": "2024-07-25T22:35:08.737968Z",
            "url": "https://files.pythonhosted.org/packages/11/e4/cb8bc10d5781ebfff9a443e09308ffed447742cc34502be4d9b0a5d82e67/pyfastmask-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4aba34d8be231717250b584cf5c94c6778848336a951bd76c1b6c2cf9a07ee22",
                "md5": "48b0e66bbd9b741c394164217d4f5b4b",
                "sha256": "69d96132298d9c420bdbdb6ef015bf6541ebf121f7c539486d355faece23dd54"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "48b0e66bbd9b741c394164217d4f5b4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 93981,
            "upload_time": "2024-07-25T22:35:14",
            "upload_time_iso_8601": "2024-07-25T22:35:14.153485Z",
            "url": "https://files.pythonhosted.org/packages/4a/ba/34d8be231717250b584cf5c94c6778848336a951bd76c1b6c2cf9a07ee22/pyfastmask-1.2.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a6562c4e01561fd472f7be8d805f046a26f191174215c15599f44c95aa598799",
                "md5": "7dabd707c1ccf180270e02ac2f4e4d79",
                "sha256": "412d40407bc928ea876658c593a853e3a8be8d0c5c5ff2c02db076ba8d044e9e"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7dabd707c1ccf180270e02ac2f4e4d79",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 132956,
            "upload_time": "2024-07-25T22:34:28",
            "upload_time_iso_8601": "2024-07-25T22:34:28.102068Z",
            "url": "https://files.pythonhosted.org/packages/a6/56/2c4e01561fd472f7be8d805f046a26f191174215c15599f44c95aa598799/pyfastmask-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97a8bfb4592ba2a97611eb970e6bbdffe77045911fe2e69a98c56611fd5aeb93",
                "md5": "c806e948842d318a6f0e9c406b6e1f92",
                "sha256": "215213f0d3a499711e49b7aa0e1bde4f9bd90702fdd8352f475b6c34521ecbba"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c806e948842d318a6f0e9c406b6e1f92",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1095315,
            "upload_time": "2024-07-25T22:34:29",
            "upload_time_iso_8601": "2024-07-25T22:34:29.700335Z",
            "url": "https://files.pythonhosted.org/packages/97/a8/bfb4592ba2a97611eb970e6bbdffe77045911fe2e69a98c56611fd5aeb93/pyfastmask-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6dafa5a46700310584285058967996ff5534885849e4b09749bd2448c2c5d5cb",
                "md5": "cccc0fe9ee1adb37aceb7232573929ae",
                "sha256": "7bfc4cb43c59c709aaed62294307bfc95f64bc9c867d00aece496b4040625926"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "cccc0fe9ee1adb37aceb7232573929ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 78452,
            "upload_time": "2024-07-25T22:37:07",
            "upload_time_iso_8601": "2024-07-25T22:37:07.649040Z",
            "url": "https://files.pythonhosted.org/packages/6d/af/a5a46700310584285058967996ff5534885849e4b09749bd2448c2c5d5cb/pyfastmask-1.2.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "46b6afde87c5e36a830587db2c192994b1a59e48da5788b285740ad31dbf60c1",
                "md5": "ed3df45a3624bbf36598817861fabc84",
                "sha256": "3c9fa3db5fb957920354c67eded9a7069cb00d8b5b6b25bfe140e704ad7ebb48"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ed3df45a3624bbf36598817861fabc84",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 85774,
            "upload_time": "2024-07-25T22:35:20",
            "upload_time_iso_8601": "2024-07-25T22:35:20.644617Z",
            "url": "https://files.pythonhosted.org/packages/46/b6/afde87c5e36a830587db2c192994b1a59e48da5788b285740ad31dbf60c1/pyfastmask-1.2.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "299bb29eb5b0e9d47c8de99d73f5d34b08c6675bf7657798b73f2353ffcf3052",
                "md5": "7a11ded149129c8f65acc6fc02d2028a",
                "sha256": "e5a755192b410f5470bcd1758e1d8677daf355ece02922447a15e990f8e32350"
            },
            "downloads": -1,
            "filename": "pyfastmask-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7a11ded149129c8f65acc6fc02d2028a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 8239,
            "upload_time": "2024-07-25T22:33:47",
            "upload_time_iso_8601": "2024-07-25T22:33:47.078327Z",
            "url": "https://files.pythonhosted.org/packages/29/9b/b29eb5b0e9d47c8de99d73f5d34b08c6675bf7657798b73f2353ffcf3052/pyfastmask-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-25 22:33:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "JIy3AHKO",
    "github_project": "pyfastmask",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyfastmask"
}
        
Elapsed time: 0.30762s