shufflish


Nameshufflish JSON
Version 0.0.5 PyPI version JSON
download
home_pageNone
SummaryFor when you need to kind of shuffle lots of integers.
upload_time2024-11-12 13:45:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License Copyright (c) 2024 Joachim Folz 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. From hereon included are the license texts of all bundled software.
keywords shuffle shuffling permutation random rng affine cipher affine cipher
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Shufflish

Shufflish is the answer whenever you need to _kind of_ shuffle ranges of many
integers.
Think Billions, Trillions, ... of integers, where you have to question
whether they all fit into memory.

The key advantages of shufflish are virtually no setup time, a permutation
occupies just 80 bytes, and yet it can be randomly accessed like an array.
When shuffling 100M integers, it is 25 times faster than
[random.shuffle()](https://docs.python.org/3/library/random.html#random.shuffle),
three times faster than
[numpy.random.shuffle()](https://numpy.org/doc/stable/reference/random/generated/numpy.random.shuffle.html#numpy.random.shuffle),
and even ten times faster than
[random.randrange()](https://docs.python.org/3/library/random.html#random.randrange),
even though that obviously does not produce a permutation.

With shufflish, you can effortlessly run massively parallel tasks on large
datasets with some degree of randomness by simply sharing a seed and
reading different parts of the permutation.



## How does this even work?

We use an [affine cipher](https://en.wikipedia.org/wiki/Affine_cipher)
to generate different permutations of a domain.
It maps an index `i` to `(i * prime + offset) % domain`,
where `domain` is the size of the range of integers.
If we select `prime` to be coprime with `domain`, then this function is
bijective, i.e., for every output in the desired range, there exists exactly
one input from the same range that maps to it.

This means we can directly calculate any index or slice of a permutation.
It also means that the result does not have the same quality as a true shuffle,
hence shuffl-_ish_.
It will also only ever generate a small fraction of all possible permutations.
And while the generated permutations look random at first glance, they do not
fool proper randomness tests like [PractRand](https://pracrand.sourceforge.net/).
As a workaround, we added the
[local_shuffle()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.local_shuffle)
function, which reads small chunks from some iterable and performs a true
shuffle on them.
This _mostly_ fools PractRand for chunk sizes as low as 16k.



## Basic usage

To obtain a permutation for some domain, simply call the
[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)
function.
It determines suitable parameters and returns an
[AffineCipher](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher)
instance.
The most important parameters are the ``domain`` that sets the range of integers,
and an optional ``seed`` value.
If no seed is provided, a random value is chosen instead.
Based on the seed, ``num_primes`` (default 3) values are chosen from a list of ``primes``
([default](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.PRIMES)
are the 100 largest primes less than 2^64).

The returned object is iterable, sliceable, and indexable, exactly like a list or array.
For example, with ``domain=10`` and ``seed=42``:

```Python
from shufflish import permutation
p = permutation(10, 42)

for i in p:
    print(i)

print(list(p))
print(list(p[3:8]))
print(p[3])
```

Also note the strategic use of
[list](https://docs.python.org/3/library/stdtypes.html#list).
Where multiple values can be returned, iterators are used to conserve memory.


## Advanced usage

Affine ciphers are invertible (they would be bad ciphers if they were not).
You can use
[AffineCipher.invert](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher.invert)
to obtain the inverse chipher.

```Python
from shufflish import permutation
p = permutation(10, 42)
ip = p.invert()

for i in range(10):
    assert ip[p[i]] == i
```

Note that, while you can invert a slice of a chipher, this effectively swaps
the meaning of index and value, i.e., if p[x]=v then ip[v]=x.
Since slice start/stop/step lose their meaning after inversion,
[AffineCipher.invert](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher.invert)
ignores them and thus ``p[:10].invert()`` produces the same result as ``p.invert()``.

The extended Euclidean algorithm is used to obtain the multiplicative inverse,
which has a complexity of _O(log(N))_.
In practice this takes anywhere from 4 to 10 times as long as getting one
value from the cipher when first called.
The inverse is then cached inside the
[AffineCipher](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher)
instance,
so subsequent calls will be very fast.
Even the first call is still considerably faster than
[random.randrange()](https://docs.python.org/3/library/random.html#random.randrange),
so it is probably not worth worrying about.



## Creating many permutations

One performance caveat is that the
[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)
function needs to determine the correct coprime value for the seed.
By default, it uses a combination of ``num_primes=3`` primes
and skips repetitions mod ``domain``.
As you can imagine, this can take a little while.
If you need to create many permutations for the same domain,
consider using the
[Permutations](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.Permutations)
class instead.
It computes and stores all valid coprimes upon initialization,
which makes getting permutations effectively instantaneous.
Note that the coprimes array can use up to 1.3 MiB of memory with the default
settings, though it will be shared between instances with identical parameters.

Once you have your instance, using it is straightforward:

```python
from shufflish import Permutations
perms = Permutations(10)
p = perms.get(seed=42)

for i in p:
    print(i)

print(list(p))
print(list(p[3:8]))
print(p[3])
```

Alternatively, you can set ``allow_repetition=True`` to skip detection of repetitions.
The
[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)
function can then determine the correct combination of primes much faster
(using combinatorial unraking), with the caveat that there is now a small chance
that permutations are repeated early.
Empirically, we find that repetitions occur at the earliest after ``domain`` seeds.



## Project status

Shufflish is currently in **alpha**.
You can expect permutations to be correct and complete, but updates may
change which permutation is generated for a given set of parameters.
For instance, the algorithm that determines the affine cipher's parameters
based on the seed may change, e.g., to reduce collisions.
Though unlikely, the API may also change if it proves annoying to use.
Once the project reaches a stable state, we will guarantee API stability and
that a set of parameters always produces the same permutation.



## Acknowledgements

Shufflish is supported by the [Albatross](https://albatross.dfki.de) and
[SustainML](https://sustainml.eu/) projects.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "shufflish",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "shuffle, shuffling, permutation, random, rng, affine, cipher, affine cipher",
    "author": null,
    "author_email": "Joachim Folz <joachim.folz@dfki.de>",
    "download_url": "https://files.pythonhosted.org/packages/5f/74/198eaaad1221d51e2d2b0e080e6005de716a46537f8d5bddb4b5c72c710f/shufflish-0.0.5.tar.gz",
    "platform": null,
    "description": "# Shufflish\n\nShufflish is the answer whenever you need to _kind of_ shuffle ranges of many\nintegers.\nThink Billions, Trillions, ... of integers, where you have to question\nwhether they all fit into memory.\n\nThe key advantages of shufflish are virtually no setup time, a permutation\noccupies just 80 bytes, and yet it can be randomly accessed like an array.\nWhen shuffling 100M integers, it is 25 times faster than\n[random.shuffle()](https://docs.python.org/3/library/random.html#random.shuffle),\nthree times faster than\n[numpy.random.shuffle()](https://numpy.org/doc/stable/reference/random/generated/numpy.random.shuffle.html#numpy.random.shuffle),\nand even ten times faster than\n[random.randrange()](https://docs.python.org/3/library/random.html#random.randrange),\neven though that obviously does not produce a permutation.\n\nWith shufflish, you can effortlessly run massively parallel tasks on large\ndatasets with some degree of randomness by simply sharing a seed and\nreading different parts of the permutation.\n\n\n\n## How does this even work?\n\nWe use an [affine cipher](https://en.wikipedia.org/wiki/Affine_cipher)\nto generate different permutations of a domain.\nIt maps an index `i` to `(i * prime + offset) % domain`,\nwhere `domain` is the size of the range of integers.\nIf we select `prime` to be coprime with `domain`, then this function is\nbijective, i.e., for every output in the desired range, there exists exactly\none input from the same range that maps to it.\n\nThis means we can directly calculate any index or slice of a permutation.\nIt also means that the result does not have the same quality as a true shuffle,\nhence shuffl-_ish_.\nIt will also only ever generate a small fraction of all possible permutations.\nAnd while the generated permutations look random at first glance, they do not\nfool proper randomness tests like [PractRand](https://pracrand.sourceforge.net/).\nAs a workaround, we added the\n[local_shuffle()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.local_shuffle)\nfunction, which reads small chunks from some iterable and performs a true\nshuffle on them.\nThis _mostly_ fools PractRand for chunk sizes as low as 16k.\n\n\n\n## Basic usage\n\nTo obtain a permutation for some domain, simply call the\n[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)\nfunction.\nIt determines suitable parameters and returns an\n[AffineCipher](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher)\ninstance.\nThe most important parameters are the ``domain`` that sets the range of integers,\nand an optional ``seed`` value.\nIf no seed is provided, a random value is chosen instead.\nBased on the seed, ``num_primes`` (default 3) values are chosen from a list of ``primes``\n([default](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.PRIMES)\nare the 100 largest primes less than 2^64).\n\nThe returned object is iterable, sliceable, and indexable, exactly like a list or array.\nFor example, with ``domain=10`` and ``seed=42``:\n\n```Python\nfrom shufflish import permutation\np = permutation(10, 42)\n\nfor i in p:\n    print(i)\n\nprint(list(p))\nprint(list(p[3:8]))\nprint(p[3])\n```\n\nAlso note the strategic use of\n[list](https://docs.python.org/3/library/stdtypes.html#list).\nWhere multiple values can be returned, iterators are used to conserve memory.\n\n\n## Advanced usage\n\nAffine ciphers are invertible (they would be bad ciphers if they were not).\nYou can use\n[AffineCipher.invert](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher.invert)\nto obtain the inverse chipher.\n\n```Python\nfrom shufflish import permutation\np = permutation(10, 42)\nip = p.invert()\n\nfor i in range(10):\n    assert ip[p[i]] == i\n```\n\nNote that, while you can invert a slice of a chipher, this effectively swaps\nthe meaning of index and value, i.e., if p[x]=v then ip[v]=x.\nSince slice start/stop/step lose their meaning after inversion,\n[AffineCipher.invert](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher.invert)\nignores them and thus ``p[:10].invert()`` produces the same result as ``p.invert()``.\n\nThe extended Euclidean algorithm is used to obtain the multiplicative inverse,\nwhich has a complexity of _O(log(N))_.\nIn practice this takes anywhere from 4 to 10 times as long as getting one\nvalue from the cipher when first called.\nThe inverse is then cached inside the\n[AffineCipher](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.AffineCipher)\ninstance,\nso subsequent calls will be very fast.\nEven the first call is still considerably faster than\n[random.randrange()](https://docs.python.org/3/library/random.html#random.randrange),\nso it is probably not worth worrying about.\n\n\n\n## Creating many permutations\n\nOne performance caveat is that the\n[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)\nfunction needs to determine the correct coprime value for the seed.\nBy default, it uses a combination of ``num_primes=3`` primes\nand skips repetitions mod ``domain``.\nAs you can imagine, this can take a little while.\nIf you need to create many permutations for the same domain,\nconsider using the\n[Permutations](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.Permutations)\nclass instead.\nIt computes and stores all valid coprimes upon initialization,\nwhich makes getting permutations effectively instantaneous.\nNote that the coprimes array can use up to 1.3 MiB of memory with the default\nsettings, though it will be shared between instances with identical parameters.\n\nOnce you have your instance, using it is straightforward:\n\n```python\nfrom shufflish import Permutations\nperms = Permutations(10)\np = perms.get(seed=42)\n\nfor i in p:\n    print(i)\n\nprint(list(p))\nprint(list(p[3:8]))\nprint(p[3])\n```\n\nAlternatively, you can set ``allow_repetition=True`` to skip detection of repetitions.\nThe\n[permutation()](https://shufflish.readthedocs.io/stable/api_reference.html#shufflish.permutation)\nfunction can then determine the correct combination of primes much faster\n(using combinatorial unraking), with the caveat that there is now a small chance\nthat permutations are repeated early.\nEmpirically, we find that repetitions occur at the earliest after ``domain`` seeds.\n\n\n\n## Project status\n\nShufflish is currently in **alpha**.\nYou can expect permutations to be correct and complete, but updates may\nchange which permutation is generated for a given set of parameters.\nFor instance, the algorithm that determines the affine cipher's parameters\nbased on the seed may change, e.g., to reduce collisions.\nThough unlikely, the API may also change if it proves annoying to use.\nOnce the project reaches a stable state, we will guarantee API stability and\nthat a set of parameters always produces the same permutation.\n\n\n\n## Acknowledgements\n\nShufflish is supported by the [Albatross](https://albatross.dfki.de) and\n[SustainML](https://sustainml.eu/) projects.\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2024 Joachim Folz  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.   From hereon included are the license texts of all bundled software. ",
    "summary": "For when you need to kind of shuffle lots of integers.",
    "version": "0.0.5",
    "project_urls": {
        "Changelog": "https://github.com/jfolz/shufflish/blob/main/CHANGELOG.md",
        "Documentation": "https://shufflish.readthedocs.io/stable/",
        "Homepage": "https://github.com/jfolz/shufflish",
        "Issues": "https://github.com/jfolz/shufflish/issues",
        "Repository": "https://github.com/jfolz/shufflish"
    },
    "split_keywords": [
        "shuffle",
        " shuffling",
        " permutation",
        " random",
        " rng",
        " affine",
        " cipher",
        " affine cipher"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34cbcfefad0e2a4b6297daebf05b637a17e73fe58e4ddfcde2b8403253b6d1a3",
                "md5": "264e8cdeefe8aec27bb73fec552e7538",
                "sha256": "e194b10a917b58c70508301f270bf0776a8cba424f94aed352b362c67067a80a"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "264e8cdeefe8aec27bb73fec552e7538",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 41546,
            "upload_time": "2024-11-12T13:43:41",
            "upload_time_iso_8601": "2024-11-12T13:43:41.507127Z",
            "url": "https://files.pythonhosted.org/packages/34/cb/cfefad0e2a4b6297daebf05b637a17e73fe58e4ddfcde2b8403253b6d1a3/shufflish-0.0.5-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a0f0dfcb088f8d958c64c2fc6e324eed3d365164788b452dadf28e664e757278",
                "md5": "174fa0a3cc2e41119b6f70f32d5ced41",
                "sha256": "74b3c25363b7e911f3ead32bc2c2346159cbb329cc4064f80691e5b66eb6c2c0"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "174fa0a3cc2e41119b6f70f32d5ced41",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 41599,
            "upload_time": "2024-11-12T13:43:42",
            "upload_time_iso_8601": "2024-11-12T13:43:42.889096Z",
            "url": "https://files.pythonhosted.org/packages/a0/f0/dfcb088f8d958c64c2fc6e324eed3d365164788b452dadf28e664e757278/shufflish-0.0.5-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6b32c137292c473dae4b69ee1cce2b986057db0981707a6605c0b7d9342c5148",
                "md5": "3fe30c4de3be49175723d9531a82da2a",
                "sha256": "351ed014df8d6e960e2e69f6fcdd82b34bc00c992a02be36df5d510e3573c8f9"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3fe30c4de3be49175723d9531a82da2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 44915,
            "upload_time": "2024-11-12T13:43:44",
            "upload_time_iso_8601": "2024-11-12T13:43:44.594806Z",
            "url": "https://files.pythonhosted.org/packages/6b/32/c137292c473dae4b69ee1cce2b986057db0981707a6605c0b7d9342c5148/shufflish-0.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c4ca67c0d0f4fb0c211cbd8bf2af4f5efbcbf98d3c3a8986bfce15d599a44545",
                "md5": "1fe32a79a5a3d6a9e5117b55d580d8f9",
                "sha256": "648db25de0192cf7780b3ed2f59a0a9039e740ac896b10dd1e4525d9b6318fbc"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1fe32a79a5a3d6a9e5117b55d580d8f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 46025,
            "upload_time": "2024-11-12T13:43:46",
            "upload_time_iso_8601": "2024-11-12T13:43:46.416016Z",
            "url": "https://files.pythonhosted.org/packages/c4/ca/67c0d0f4fb0c211cbd8bf2af4f5efbcbf98d3c3a8986bfce15d599a44545/shufflish-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2cd793f85924cad1427e7d349b055f41a840d93e465906dd23ecff642bf9ca3b",
                "md5": "747721b12d9aa8c9bdb7bcd476b89857",
                "sha256": "bd3ab97e89ec7d53b21278cbb386995a1ae2170d0758f11e477a5f05122d8d53"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "747721b12d9aa8c9bdb7bcd476b89857",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 45846,
            "upload_time": "2024-11-12T13:43:48",
            "upload_time_iso_8601": "2024-11-12T13:43:48.193145Z",
            "url": "https://files.pythonhosted.org/packages/2c/d7/93f85924cad1427e7d349b055f41a840d93e465906dd23ecff642bf9ca3b/shufflish-0.0.5-cp310-cp310-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "30e09253c1c218b877fe9e4c1c5bc41db75685f58c1cb15659c7c05e84b2a060",
                "md5": "2599d908c4ae06a27b4fd0cdce5595f3",
                "sha256": "984df8d462bf887ff06d861e378330882806f5b028414f9252405a0bf97974ba"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2599d908c4ae06a27b4fd0cdce5595f3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 46213,
            "upload_time": "2024-11-12T13:43:49",
            "upload_time_iso_8601": "2024-11-12T13:43:49.409873Z",
            "url": "https://files.pythonhosted.org/packages/30/e0/9253c1c218b877fe9e4c1c5bc41db75685f58c1cb15659c7c05e84b2a060/shufflish-0.0.5-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "446009998c8eed087fe93d4cea6cd70a4bae765635700abd65d4ae76c3e1e7cb",
                "md5": "cad193077275bec94abb9e5857030d7a",
                "sha256": "d734fbbd42702ce90abf01e8adff66d697f6c641941d8315ca7af15c77333639"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cad193077275bec94abb9e5857030d7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 39781,
            "upload_time": "2024-11-12T13:43:50",
            "upload_time_iso_8601": "2024-11-12T13:43:50.681585Z",
            "url": "https://files.pythonhosted.org/packages/44/60/09998c8eed087fe93d4cea6cd70a4bae765635700abd65d4ae76c3e1e7cb/shufflish-0.0.5-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1857a472a1419201bb06f1c74690390e501bcd66a4ce3c8b0d55dbed48cfa9da",
                "md5": "dbe2a9003f36831bbd4ab7fbf98164fb",
                "sha256": "db62a107f6284c3fcd8fbe69c773c75ef1073d2f14fc1ae85a71812acf77f4bf"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dbe2a9003f36831bbd4ab7fbf98164fb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 41453,
            "upload_time": "2024-11-12T13:43:52",
            "upload_time_iso_8601": "2024-11-12T13:43:52.639786Z",
            "url": "https://files.pythonhosted.org/packages/18/57/a472a1419201bb06f1c74690390e501bcd66a4ce3c8b0d55dbed48cfa9da/shufflish-0.0.5-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8ecc167e44893058eb87e50546f5511830b7c65817b6925712f8e17f8019d6c",
                "md5": "42f84b28f9a0d93d35749fb7c40290eb",
                "sha256": "5cd90025ea536c05275329676606456bb3694e3ccade7a7bc147644754b95887"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "42f84b28f9a0d93d35749fb7c40290eb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 41380,
            "upload_time": "2024-11-12T13:43:53",
            "upload_time_iso_8601": "2024-11-12T13:43:53.798696Z",
            "url": "https://files.pythonhosted.org/packages/f8/ec/c167e44893058eb87e50546f5511830b7c65817b6925712f8e17f8019d6c/shufflish-0.0.5-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8777ba53ea81c433592feb2d5239d4da71e68d75bc0bf31687670118fa42d3d",
                "md5": "3534603f72806e207df00407f0a39035",
                "sha256": "e86a0966c62173849f45ad5ff6b5bf202f665b22a678c4999b4ca6d31c667a5f"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3534603f72806e207df00407f0a39035",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 44845,
            "upload_time": "2024-11-12T13:43:54",
            "upload_time_iso_8601": "2024-11-12T13:43:54.842775Z",
            "url": "https://files.pythonhosted.org/packages/b8/77/7ba53ea81c433592feb2d5239d4da71e68d75bc0bf31687670118fa42d3d/shufflish-0.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b87ff6006b02ee284eb2fa6acc3f1efa451e65b7ba98fd3d1b8cee000981f55",
                "md5": "74453cdbaedfec2de6761252bc19af70",
                "sha256": "70e2370e39989a6fb0519e5fc1575ce37dc412105bfac0ade3d4d7cfe5539062"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "74453cdbaedfec2de6761252bc19af70",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 45980,
            "upload_time": "2024-11-12T13:43:56",
            "upload_time_iso_8601": "2024-11-12T13:43:56.180895Z",
            "url": "https://files.pythonhosted.org/packages/2b/87/ff6006b02ee284eb2fa6acc3f1efa451e65b7ba98fd3d1b8cee000981f55/shufflish-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3f04abbbfd5cb1752aa2c31d32c93de31d30650a9c505327a0ee601cc2e8dd8",
                "md5": "fa1e208d65b7aaba71c539d51b58436d",
                "sha256": "0ae30a4561f3832e62b67cb49f9b3dac4111ba9776605c0025bfb8bfe4e01892"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "fa1e208d65b7aaba71c539d51b58436d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 45851,
            "upload_time": "2024-11-12T13:43:57",
            "upload_time_iso_8601": "2024-11-12T13:43:57.267411Z",
            "url": "https://files.pythonhosted.org/packages/b3/f0/4abbbfd5cb1752aa2c31d32c93de31d30650a9c505327a0ee601cc2e8dd8/shufflish-0.0.5-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "013d4c62a24bcb605782338588743e1603d9980e546ec2d59335afd4980a4283",
                "md5": "b5797e86538d43ac14d9f8612da2349a",
                "sha256": "6cbda3a75e9e15393c62f729e87d113defbad7b9b38a454cb31523f78109c8a3"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b5797e86538d43ac14d9f8612da2349a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 46296,
            "upload_time": "2024-11-12T13:43:59",
            "upload_time_iso_8601": "2024-11-12T13:43:59.399864Z",
            "url": "https://files.pythonhosted.org/packages/01/3d/4c62a24bcb605782338588743e1603d9980e546ec2d59335afd4980a4283/shufflish-0.0.5-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82d0333eccc2ea9e8375032d7665061fd586e744cc32d99a45d663e7da180c7a",
                "md5": "75eab910ed3389f12cf198e6a4165d27",
                "sha256": "ad8df8fd524421872397518d6a78488384464bc1d8d8d78681f704f08078ac97"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "75eab910ed3389f12cf198e6a4165d27",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 39610,
            "upload_time": "2024-11-12T13:44:02",
            "upload_time_iso_8601": "2024-11-12T13:44:02.259808Z",
            "url": "https://files.pythonhosted.org/packages/82/d0/333eccc2ea9e8375032d7665061fd586e744cc32d99a45d663e7da180c7a/shufflish-0.0.5-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "40f78a17cf3ff45e919635b6671eab1dc1c822c261d756bb514c20d615d207aa",
                "md5": "ae9a605ad1c2c2c49209ff59440d691d",
                "sha256": "606f9fdbeed7f18cccd45659399b766739ae61e6325d3a2aa6c4f0056cc3f8e9"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ae9a605ad1c2c2c49209ff59440d691d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 41645,
            "upload_time": "2024-11-12T13:44:04",
            "upload_time_iso_8601": "2024-11-12T13:44:04.697873Z",
            "url": "https://files.pythonhosted.org/packages/40/f7/8a17cf3ff45e919635b6671eab1dc1c822c261d756bb514c20d615d207aa/shufflish-0.0.5-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5654390e27e4f65a2ad944ccd801809aeb8514eddf6bd59ca2e6381f81238004",
                "md5": "a21b8e6b582da2ae16b82da9304638a0",
                "sha256": "fdd1a2b19bce88aef30f0532c2a20256fd462d6cca0fe853d03551e4dcc64aa8"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a21b8e6b582da2ae16b82da9304638a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 40937,
            "upload_time": "2024-11-12T13:44:05",
            "upload_time_iso_8601": "2024-11-12T13:44:05.857927Z",
            "url": "https://files.pythonhosted.org/packages/56/54/390e27e4f65a2ad944ccd801809aeb8514eddf6bd59ca2e6381f81238004/shufflish-0.0.5-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6152c9bd9ad3d1350a035409a613a117f79cc2e2f951865d39ff37868d773eed",
                "md5": "22353ca9b8309295a9d3a07890e05636",
                "sha256": "da468f5a3cb9745cd05962604ffe4f28014166bcb51f11c4a7f1e5281bac78ac"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "22353ca9b8309295a9d3a07890e05636",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 43830,
            "upload_time": "2024-11-12T13:44:06",
            "upload_time_iso_8601": "2024-11-12T13:44:06.945896Z",
            "url": "https://files.pythonhosted.org/packages/61/52/c9bd9ad3d1350a035409a613a117f79cc2e2f951865d39ff37868d773eed/shufflish-0.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85c79cda932af89ba74ca65b2c40ab3946dc518029f5d52f5e42ce99b3c30808",
                "md5": "5a8aae314ebe8d80d6a7f220e5119ae2",
                "sha256": "153ffdfbc21a47987f319d8f90dcd246a5238473010e9d31f2de5c3bdfcccdce"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5a8aae314ebe8d80d6a7f220e5119ae2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 44987,
            "upload_time": "2024-11-12T13:44:09",
            "upload_time_iso_8601": "2024-11-12T13:44:09.967537Z",
            "url": "https://files.pythonhosted.org/packages/85/c7/9cda932af89ba74ca65b2c40ab3946dc518029f5d52f5e42ce99b3c30808/shufflish-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0401bb3f51c21f018e521cefac83bcfe730a3538d7df8bc44d534210cbe52653",
                "md5": "bc0acab9c8e9a9e5bcfff9485ea5739a",
                "sha256": "d44a4edf9dc87e72b1051145a1ca0d55bbf999b6b430e2106c10ced1975da19a"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "bc0acab9c8e9a9e5bcfff9485ea5739a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 44679,
            "upload_time": "2024-11-12T13:44:12",
            "upload_time_iso_8601": "2024-11-12T13:44:12.708583Z",
            "url": "https://files.pythonhosted.org/packages/04/01/bb3f51c21f018e521cefac83bcfe730a3538d7df8bc44d534210cbe52653/shufflish-0.0.5-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb536cea41303b42ea4dfd420751bcafb6148d6e0927a7458bd721702422b52a",
                "md5": "1902fb40f2e0a388574c474ede24977a",
                "sha256": "3f265ead20b1d6216a44a5bb16afb150b630050f391628c5799bf8baeb294e4f"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1902fb40f2e0a388574c474ede24977a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 45712,
            "upload_time": "2024-11-12T13:44:13",
            "upload_time_iso_8601": "2024-11-12T13:44:13.790089Z",
            "url": "https://files.pythonhosted.org/packages/fb/53/6cea41303b42ea4dfd420751bcafb6148d6e0927a7458bd721702422b52a/shufflish-0.0.5-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5985010e7c24a48e97ddbdc1c1975ffb36a2b119b102bd563e9050be1b8f5ad7",
                "md5": "7d5e467532e3d230707e6bfdc3530039",
                "sha256": "b853af1db589cc2810578b3b6298c0cf5ba89178fe1e0edd7beaacea4d42cba1"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7d5e467532e3d230707e6bfdc3530039",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 39395,
            "upload_time": "2024-11-12T13:44:14",
            "upload_time_iso_8601": "2024-11-12T13:44:14.952365Z",
            "url": "https://files.pythonhosted.org/packages/59/85/010e7c24a48e97ddbdc1c1975ffb36a2b119b102bd563e9050be1b8f5ad7/shufflish-0.0.5-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4913c8d07e7009aa5b71499648ccde6adf254f60c9445f705125908ad99374a9",
                "md5": "1a662b8804d7dd6425c4a896e39e28de",
                "sha256": "c368e55f3e3019359a6f1da2351946ef722f7151c62896d6fc17434bf835358c"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1a662b8804d7dd6425c4a896e39e28de",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 41570,
            "upload_time": "2024-11-12T13:44:16",
            "upload_time_iso_8601": "2024-11-12T13:44:16.757041Z",
            "url": "https://files.pythonhosted.org/packages/49/13/c8d07e7009aa5b71499648ccde6adf254f60c9445f705125908ad99374a9/shufflish-0.0.5-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "19d25bcbeef29727790a1a616434bdb646fce961420c3e48702ddd579e2053a5",
                "md5": "ef30b821c08ab50275d3a293d8b61dc2",
                "sha256": "f29d26ce23b6479f132a07356ba14949239ffbf0e8499f43c6fa0ea68282e1bc"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ef30b821c08ab50275d3a293d8b61dc2",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 40188,
            "upload_time": "2024-11-12T13:44:18",
            "upload_time_iso_8601": "2024-11-12T13:44:18.484268Z",
            "url": "https://files.pythonhosted.org/packages/19/d2/5bcbeef29727790a1a616434bdb646fce961420c3e48702ddd579e2053a5/shufflish-0.0.5-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db71085461ad6a81ab01c41f1c31f9afb67901522ce6cbdf182627e650f2501a",
                "md5": "78fec6744750c235d5996b43c2eebf73",
                "sha256": "59f619d95a47211da365367cfe725b73a90ae1e36a525791e7eda85c9153779c"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "78fec6744750c235d5996b43c2eebf73",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 42932,
            "upload_time": "2024-11-12T13:44:19",
            "upload_time_iso_8601": "2024-11-12T13:44:19.541591Z",
            "url": "https://files.pythonhosted.org/packages/db/71/085461ad6a81ab01c41f1c31f9afb67901522ce6cbdf182627e650f2501a/shufflish-0.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2701172c3b12fe2dc99f82f8049f695b5b84ee7d4dca168d09bff7f13707a972",
                "md5": "4cb003fef8c2ef439c72e3f0261f53f4",
                "sha256": "250968b67bf23c8eaa55068e66ddd368ed6bd7c70d8d36d6af52d2ff2d4f0d9c"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4cb003fef8c2ef439c72e3f0261f53f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 44176,
            "upload_time": "2024-11-12T13:44:21",
            "upload_time_iso_8601": "2024-11-12T13:44:21.123262Z",
            "url": "https://files.pythonhosted.org/packages/27/01/172c3b12fe2dc99f82f8049f695b5b84ee7d4dca168d09bff7f13707a972/shufflish-0.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "396426e1413c462478b11f8f6299c2b0671a2b9488de9174ce3a47f0c7d36446",
                "md5": "f16f8560bf06605d7f08402bd4b12fa0",
                "sha256": "ca753138b1776c2b7592358bf2ef0684ab44b4b49d92c049b3ec037541eb0b28"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f16f8560bf06605d7f08402bd4b12fa0",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 43930,
            "upload_time": "2024-11-12T13:44:22",
            "upload_time_iso_8601": "2024-11-12T13:44:22.300222Z",
            "url": "https://files.pythonhosted.org/packages/39/64/26e1413c462478b11f8f6299c2b0671a2b9488de9174ce3a47f0c7d36446/shufflish-0.0.5-cp313-cp313-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "973192d8cdaa33536fde256c66a762327e9b3f0906e7d3bf5254af5d6b1c2e5a",
                "md5": "9efab84929d6a1cc62013c1c28a50d3a",
                "sha256": "b322054df3b733b9b1efa0832d82ff383cc7aab01c6a8b012214eed1d93a148d"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9efab84929d6a1cc62013c1c28a50d3a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 45068,
            "upload_time": "2024-11-12T13:44:23",
            "upload_time_iso_8601": "2024-11-12T13:44:23.472311Z",
            "url": "https://files.pythonhosted.org/packages/97/31/92d8cdaa33536fde256c66a762327e9b3f0906e7d3bf5254af5d6b1c2e5a/shufflish-0.0.5-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f0e4737d35ead70b0fd50d2f68de08e62e02716f85d52af35e677ae8814eca0a",
                "md5": "a958f1b12a6b4f8f4d52c40b8a851b27",
                "sha256": "296d6b8a9d3f05068291f66cd5b337d3097be52648c17728799e24322c57c990"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a958f1b12a6b4f8f4d52c40b8a851b27",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 38839,
            "upload_time": "2024-11-12T13:44:25",
            "upload_time_iso_8601": "2024-11-12T13:44:25.165528Z",
            "url": "https://files.pythonhosted.org/packages/f0/e4/737d35ead70b0fd50d2f68de08e62e02716f85d52af35e677ae8814eca0a/shufflish-0.0.5-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5be3fdf59ebeebb2e8e997a34475abcae4015250ec40f03a83d89082dbb48653",
                "md5": "fd61ec8840b6cdd81e59c124debcc93b",
                "sha256": "8a1f0da7367982ab0d83f16fa09a8159a65a3f275c8ff35ec232f705410812ec"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fd61ec8840b6cdd81e59c124debcc93b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 41856,
            "upload_time": "2024-11-12T13:44:26",
            "upload_time_iso_8601": "2024-11-12T13:44:26.204730Z",
            "url": "https://files.pythonhosted.org/packages/5b/e3/fdf59ebeebb2e8e997a34475abcae4015250ec40f03a83d89082dbb48653/shufflish-0.0.5-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c5e26ec218dfd2ea4b58d606c86caea8fa760b5c0d61d0e19d966f4c90ffb69f",
                "md5": "4c6cd5dca51245e955b105e47939f2ea",
                "sha256": "0cf4bd9e54a559f3c5c1534675a639354b05d0567d78d8458192d54cad280a7b"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4c6cd5dca51245e955b105e47939f2ea",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 42330,
            "upload_time": "2024-11-12T13:44:27",
            "upload_time_iso_8601": "2024-11-12T13:44:27.286362Z",
            "url": "https://files.pythonhosted.org/packages/c5/e2/6ec218dfd2ea4b58d606c86caea8fa760b5c0d61d0e19d966f4c90ffb69f/shufflish-0.0.5-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "21a9c5522225e04d67fa4c31ca614dd9a027f1f188c99133725e28adce5f7df7",
                "md5": "256348dc7d4432e663e2d238ee8173a5",
                "sha256": "dc15cff33bb6e5040986594299d20a6d54f16d4b93e294e4e429e3aca10e8254"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "256348dc7d4432e663e2d238ee8173a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 45670,
            "upload_time": "2024-11-12T13:44:28",
            "upload_time_iso_8601": "2024-11-12T13:44:28.526184Z",
            "url": "https://files.pythonhosted.org/packages/21/a9/c5522225e04d67fa4c31ca614dd9a027f1f188c99133725e28adce5f7df7/shufflish-0.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eda7cfab22dbb5a2f61d75457d09014f330300738a54cdfb4ea4174ebc393227",
                "md5": "764a34032a31d7b502aee0223dc6b7d4",
                "sha256": "436322ef0676576c816b14d8619f5fc0bab410bb4c18de25bcc432adf88d0c79"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "764a34032a31d7b502aee0223dc6b7d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 46679,
            "upload_time": "2024-11-12T13:44:30",
            "upload_time_iso_8601": "2024-11-12T13:44:30.387260Z",
            "url": "https://files.pythonhosted.org/packages/ed/a7/cfab22dbb5a2f61d75457d09014f330300738a54cdfb4ea4174ebc393227/shufflish-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb14a06108df1411b1786a8810f5a77a75660e7f2e1617b8b0bd8b7d70f0c6fa",
                "md5": "f33b7d4cba8c66325de4051007183e87",
                "sha256": "96e3bde74cb543c7dd1d9c2ecc30cd32147945da30edee6d1a482ff0a9e285b7"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f33b7d4cba8c66325de4051007183e87",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 47240,
            "upload_time": "2024-11-12T13:44:31",
            "upload_time_iso_8601": "2024-11-12T13:44:31.497157Z",
            "url": "https://files.pythonhosted.org/packages/fb/14/a06108df1411b1786a8810f5a77a75660e7f2e1617b8b0bd8b7d70f0c6fa/shufflish-0.0.5-cp38-cp38-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "da8f800009f5951ee631e6051a1431a39de37a21609a018d21479c873a0bcc8b",
                "md5": "b2bdb973b41502ee49bacfa77a8a707f",
                "sha256": "d163dd414572548325fb2abbcd6b76cd029365a538e02233d449da3806f40cfb"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b2bdb973b41502ee49bacfa77a8a707f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 47757,
            "upload_time": "2024-11-12T13:44:33",
            "upload_time_iso_8601": "2024-11-12T13:44:33.332352Z",
            "url": "https://files.pythonhosted.org/packages/da/8f/800009f5951ee631e6051a1431a39de37a21609a018d21479c873a0bcc8b/shufflish-0.0.5-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "93d14a2897f1136429cd220b04ebc3e1d99ec6c8fce794232238a68b8bd3ac84",
                "md5": "d3eb3c376a32f7c4114394dc1ae70ab3",
                "sha256": "d532106336f973a9111dd2d253ff5b6f96d4850861c5972b5c9bb018481a1461"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d3eb3c376a32f7c4114394dc1ae70ab3",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 40038,
            "upload_time": "2024-11-12T13:44:37",
            "upload_time_iso_8601": "2024-11-12T13:44:37.427739Z",
            "url": "https://files.pythonhosted.org/packages/93/d1/4a2897f1136429cd220b04ebc3e1d99ec6c8fce794232238a68b8bd3ac84/shufflish-0.0.5-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "81974014c3776e7e233b0b59ca655351cbdcf8b9ebb8f8604fd68b85fcaf553c",
                "md5": "0aadd10cea1160f4b96b99c916697b8b",
                "sha256": "16c8c2851dbcdfdbf027d53f7e60c28d42b07d6c75d721b9badfdc1e79de11be"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0aadd10cea1160f4b96b99c916697b8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 42240,
            "upload_time": "2024-11-12T13:44:38",
            "upload_time_iso_8601": "2024-11-12T13:44:38.579197Z",
            "url": "https://files.pythonhosted.org/packages/81/97/4014c3776e7e233b0b59ca655351cbdcf8b9ebb8f8604fd68b85fcaf553c/shufflish-0.0.5-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0b86de6e324cf92be62ac462e36c33aaff64f8b9a5976e278092e2bf17f526df",
                "md5": "adeb4c7081d8db8058acf841ae23cb50",
                "sha256": "bb617b493bbe0e05167e1a9584d4a498edd982ce8d659f8da433ccc49a6f3ab4"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "adeb4c7081d8db8058acf841ae23cb50",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 42018,
            "upload_time": "2024-11-12T13:44:39",
            "upload_time_iso_8601": "2024-11-12T13:44:39.674053Z",
            "url": "https://files.pythonhosted.org/packages/0b/86/de6e324cf92be62ac462e36c33aaff64f8b9a5976e278092e2bf17f526df/shufflish-0.0.5-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "384ed3607ad39fd168785fe0cad5ef79e1d9b68ece629afb102d44573d218f43",
                "md5": "cc4f33e6af90ea09d17b2274394f7cba",
                "sha256": "c595344724a4969fd083185471b9a54203a6e47ad6465543947034f150cd91ad"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "cc4f33e6af90ea09d17b2274394f7cba",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 45338,
            "upload_time": "2024-11-12T13:44:41",
            "upload_time_iso_8601": "2024-11-12T13:44:41.518594Z",
            "url": "https://files.pythonhosted.org/packages/38/4e/d3607ad39fd168785fe0cad5ef79e1d9b68ece629afb102d44573d218f43/shufflish-0.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc5b84a996b16587dd9f4b3d5c238c024198b36d3dfd2c3c698e4d842af39b6e",
                "md5": "f343d5c3b7ab51f507b7e6e04e059594",
                "sha256": "a2d4fb804eea2ba10275b9e7d773319b0dc2d408fffe176c60fae29c3db3564a"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f343d5c3b7ab51f507b7e6e04e059594",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 46421,
            "upload_time": "2024-11-12T13:44:42",
            "upload_time_iso_8601": "2024-11-12T13:44:42.636741Z",
            "url": "https://files.pythonhosted.org/packages/fc/5b/84a996b16587dd9f4b3d5c238c024198b36d3dfd2c3c698e4d842af39b6e/shufflish-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "feec943a4bca0fec7ad353adfa98bc5fc3201efeeec5ae77de4eb2cf6ace97fa",
                "md5": "f1bb2e8dc68ef30b99b6eb0fce29dfcf",
                "sha256": "7fb0f266ea0032aa35ba8c22fc6b98f25e73213b44b19a8d58e4da4fbed9a612"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f1bb2e8dc68ef30b99b6eb0fce29dfcf",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 46233,
            "upload_time": "2024-11-12T13:44:43",
            "upload_time_iso_8601": "2024-11-12T13:44:43.792699Z",
            "url": "https://files.pythonhosted.org/packages/fe/ec/943a4bca0fec7ad353adfa98bc5fc3201efeeec5ae77de4eb2cf6ace97fa/shufflish-0.0.5-cp39-cp39-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "27a816b824737e2ded6c1b492c24efd1da43fd7f8d66195ad519abf9e880c754",
                "md5": "45dde946e0ced22dd6ab90199686de7f",
                "sha256": "0b6f35d3e99a92f47b4d22291199c6bc9ce85ae65fdcd347c8d937f022a588f7"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "45dde946e0ced22dd6ab90199686de7f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 46672,
            "upload_time": "2024-11-12T13:44:44",
            "upload_time_iso_8601": "2024-11-12T13:44:44.959218Z",
            "url": "https://files.pythonhosted.org/packages/27/a8/16b824737e2ded6c1b492c24efd1da43fd7f8d66195ad519abf9e880c754/shufflish-0.0.5-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "301fd9dbca105d3e659efb207c9bac7f1257c2b9f845e9481e8bd78f7dc5945e",
                "md5": "5cf4340df588473716cc4836932ca75a",
                "sha256": "5d653bf3db231db5c3acd4e98ac64fb1e8ae59e0655f89f3f3f05c17252cb36e"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5cf4340df588473716cc4836932ca75a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 39890,
            "upload_time": "2024-11-12T13:44:46",
            "upload_time_iso_8601": "2024-11-12T13:44:46.086790Z",
            "url": "https://files.pythonhosted.org/packages/30/1f/d9dbca105d3e659efb207c9bac7f1257c2b9f845e9481e8bd78f7dc5945e/shufflish-0.0.5-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "644b27a6f14bce5a2e0538fbb85effd741de48f6f66145c9c9b457622969127c",
                "md5": "5fb431e88a258cc950efe6f33e3bca25",
                "sha256": "3d263555b79a54d1972734f76becefe8a51772792228a9a67dcdff7c876bd906"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5fb431e88a258cc950efe6f33e3bca25",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 34875,
            "upload_time": "2024-11-12T13:44:47",
            "upload_time_iso_8601": "2024-11-12T13:44:47.118328Z",
            "url": "https://files.pythonhosted.org/packages/64/4b/27a6f14bce5a2e0538fbb85effd741de48f6f66145c9c9b457622969127c/shufflish-0.0.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75e5a891af2eae9614a414184b8db4c3730704936ecda7600a58119bb9a57d37",
                "md5": "e6cf57b601147337bad61fab2c72ed7e",
                "sha256": "01ce12c4f5724b9602a0c6998d797cfb7ab19d6c45906f8e4efd2985253e07ab"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e6cf57b601147337bad61fab2c72ed7e",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 34997,
            "upload_time": "2024-11-12T13:44:48",
            "upload_time_iso_8601": "2024-11-12T13:44:48.171771Z",
            "url": "https://files.pythonhosted.org/packages/75/e5/a891af2eae9614a414184b8db4c3730704936ecda7600a58119bb9a57d37/shufflish-0.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6ad11390bc591c25b3cf88ee5c00ece89087f0023f9bc34cb28441b1889d77c7",
                "md5": "992b47107ed51bedc653d5af497f7e14",
                "sha256": "186f39371a539e108ce74d26f6650e81b3de6dbf02b59c2c815f1e8fd52a1852"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "992b47107ed51bedc653d5af497f7e14",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 38707,
            "upload_time": "2024-11-12T13:44:49",
            "upload_time_iso_8601": "2024-11-12T13:44:49.213464Z",
            "url": "https://files.pythonhosted.org/packages/6a/d1/1390bc591c25b3cf88ee5c00ece89087f0023f9bc34cb28441b1889d77c7/shufflish-0.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07b6ad0fd8c6792682a06f5dfb2d08d75b435af9b5dc15b8504c18a5c1b16463",
                "md5": "1d3b6beca7c5a45603f1fdd493f1f77f",
                "sha256": "2789ad61170e2e2b76e87370a6e55edcb40205021e699ac5fef56ee6d5e94e66"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1d3b6beca7c5a45603f1fdd493f1f77f",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 39172,
            "upload_time": "2024-11-12T13:44:50",
            "upload_time_iso_8601": "2024-11-12T13:44:50.289860Z",
            "url": "https://files.pythonhosted.org/packages/07/b6/ad0fd8c6792682a06f5dfb2d08d75b435af9b5dc15b8504c18a5c1b16463/shufflish-0.0.5-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee70e82158b551f2fca10838966637db088fe813de446b8862acf182e3a1d13f",
                "md5": "99c25aab2b667dc0336c4ba99a3d09bc",
                "sha256": "48558b12b92308b665870bb10be5dbc2233d5938056213986992507e4705005f"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp310-pypy310_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "99c25aab2b667dc0336c4ba99a3d09bc",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 35928,
            "upload_time": "2024-11-12T13:44:51",
            "upload_time_iso_8601": "2024-11-12T13:44:51.393164Z",
            "url": "https://files.pythonhosted.org/packages/ee/70/e82158b551f2fca10838966637db088fe813de446b8862acf182e3a1d13f/shufflish-0.0.5-pp310-pypy310_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e1b47f1b247a65aa927537429bcbd0a1e0ce328aaa6e31f6f73e6fc966e94bfd",
                "md5": "11d50089d9b1c6ad77105ac12b39225c",
                "sha256": "0e6ba9be3f84b7a7d8c2c9871ca4defe01d0a98c94ced411540d5a6a06517667"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "11d50089d9b1c6ad77105ac12b39225c",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 34072,
            "upload_time": "2024-11-12T13:44:52",
            "upload_time_iso_8601": "2024-11-12T13:44:52.444365Z",
            "url": "https://files.pythonhosted.org/packages/e1/b4/7f1b247a65aa927537429bcbd0a1e0ce328aaa6e31f6f73e6fc966e94bfd/shufflish-0.0.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2028c7d19c356e4224dd9775c2398af88dd15d4963c375a0e00cc4abbcaf2e80",
                "md5": "eafb476c89f88f1fae566522c5477768",
                "sha256": "76b8804abcfbc208146b01d1dca23f6a6c36eceaa3a57671aa48f8feaeca7300"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "eafb476c89f88f1fae566522c5477768",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 34267,
            "upload_time": "2024-11-12T13:44:53",
            "upload_time_iso_8601": "2024-11-12T13:44:53.633236Z",
            "url": "https://files.pythonhosted.org/packages/20/28/c7d19c356e4224dd9775c2398af88dd15d4963c375a0e00cc4abbcaf2e80/shufflish-0.0.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a539dd5fdb9ea9375fcbe71d839291a638dd639f1cc9f49a2ffb96699d0af369",
                "md5": "929c24a1f1dc1f1fefc4fe85aff93cbb",
                "sha256": "64f5332bb85ba6eb34c10813c603d216afa5772c8366a82f4f345f6ece39735f"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "929c24a1f1dc1f1fefc4fe85aff93cbb",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 38710,
            "upload_time": "2024-11-12T13:44:54",
            "upload_time_iso_8601": "2024-11-12T13:44:54.789027Z",
            "url": "https://files.pythonhosted.org/packages/a5/39/dd5fdb9ea9375fcbe71d839291a638dd639f1cc9f49a2ffb96699d0af369/shufflish-0.0.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f162993847e1dbf0d56c37f7ad6880d7623e0798042ccdc9a541652cc1803f1",
                "md5": "2478e2ebf16afa70a806409278862e97",
                "sha256": "8f0f8b4a1eb04db173f8f13c0d5df5738efdfc2e6ea1e1a489394196d203c1e9"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2478e2ebf16afa70a806409278862e97",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 39099,
            "upload_time": "2024-11-12T13:44:55",
            "upload_time_iso_8601": "2024-11-12T13:44:55.881998Z",
            "url": "https://files.pythonhosted.org/packages/7f/16/2993847e1dbf0d56c37f7ad6880d7623e0798042ccdc9a541652cc1803f1/shufflish-0.0.5-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2f751752a6f2caf9d042fb5d3acc36b0d85e84210133ab87882eaa69051c1aa2",
                "md5": "a3c9610a428e51409e5c12cc0db7958f",
                "sha256": "2c0359600a96a93f0aaa853a92d6c94d1d679c5df4b7650eb06db3541fa9b3da"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp38-pypy38_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a3c9610a428e51409e5c12cc0db7958f",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 35448,
            "upload_time": "2024-11-12T13:44:57",
            "upload_time_iso_8601": "2024-11-12T13:44:57.756165Z",
            "url": "https://files.pythonhosted.org/packages/2f/75/1752a6f2caf9d042fb5d3acc36b0d85e84210133ab87882eaa69051c1aa2/shufflish-0.0.5-pp38-pypy38_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "852fd01d3b5537b685ee06177ded5dc9a0211637f6be0cf03e9f4dbaeab2422a",
                "md5": "3e2c23cb9a6e2cbd063b1d1ad01b4169",
                "sha256": "3d4b48f3b2e288fcfd389da5947deb2473dd5f683f3b83e785dc396b734114e6"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp39-pypy39_pp73-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3e2c23cb9a6e2cbd063b1d1ad01b4169",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 34814,
            "upload_time": "2024-11-12T13:44:58",
            "upload_time_iso_8601": "2024-11-12T13:44:58.930467Z",
            "url": "https://files.pythonhosted.org/packages/85/2f/d01d3b5537b685ee06177ded5dc9a0211637f6be0cf03e9f4dbaeab2422a/shufflish-0.0.5-pp39-pypy39_pp73-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8d58d9e7d4c8fbf8827ef0f9ca6599d555af2de6d0398fdc057b23c950e1f64d",
                "md5": "c715e05481e484d92d75ba738a60fd8e",
                "sha256": "78ce42509dc081cfba50b3b7a46bf4c300bf904befe53a5bc9222c17c1e59da3"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c715e05481e484d92d75ba738a60fd8e",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 34923,
            "upload_time": "2024-11-12T13:45:00",
            "upload_time_iso_8601": "2024-11-12T13:45:00.054361Z",
            "url": "https://files.pythonhosted.org/packages/8d/58/d9e7d4c8fbf8827ef0f9ca6599d555af2de6d0398fdc057b23c950e1f64d/shufflish-0.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0c2ed50ec353fd1ab9892e38dc2f384a8a1470741f054b2c597f1fd75071065",
                "md5": "887b73f32536f5774a4f3c18ef0d5014",
                "sha256": "27ae9fb1de2670e33055629b677b196940fd43cb5ac27f71d585024c6c846b77"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "887b73f32536f5774a4f3c18ef0d5014",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 39207,
            "upload_time": "2024-11-12T13:45:01",
            "upload_time_iso_8601": "2024-11-12T13:45:01.198555Z",
            "url": "https://files.pythonhosted.org/packages/e0/c2/ed50ec353fd1ab9892e38dc2f384a8a1470741f054b2c597f1fd75071065/shufflish-0.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fa35e3b8f9d7ef1535e0fdfc39595008e4743ad3ec4480dd8ac29f6425e13045",
                "md5": "6e82471c79140ea44c784fccd96e9427",
                "sha256": "4a673057602926e38a76391438f42e0015b879b27a7a74408807c4dd66c2645d"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6e82471c79140ea44c784fccd96e9427",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 39515,
            "upload_time": "2024-11-12T13:45:02",
            "upload_time_iso_8601": "2024-11-12T13:45:02.915062Z",
            "url": "https://files.pythonhosted.org/packages/fa/35/e3b8f9d7ef1535e0fdfc39595008e4743ad3ec4480dd8ac29f6425e13045/shufflish-0.0.5-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f1a998f61cab39aef67b53327e60f8eb9bceb9c2d049223f9037c9a3a0cbe7e0",
                "md5": "7e3490e016de3a9747824cc03952c940",
                "sha256": "83c2df67ca99fbbdcf2b985e01341a59ed3938efa0043e48dbc57d44d1c8b2e9"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7e3490e016de3a9747824cc03952c940",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 35882,
            "upload_time": "2024-11-12T13:45:04",
            "upload_time_iso_8601": "2024-11-12T13:45:04.701484Z",
            "url": "https://files.pythonhosted.org/packages/f1/a9/98f61cab39aef67b53327e60f8eb9bceb9c2d049223f9037c9a3a0cbe7e0/shufflish-0.0.5-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5f74198eaaad1221d51e2d2b0e080e6005de716a46537f8d5bddb4b5c72c710f",
                "md5": "71db2c450bb40ec90a97d83979d5e0e4",
                "sha256": "0819396417c9120be2deda76b07ba33ef27a0a072f0d90f87596519d40624f6a"
            },
            "downloads": -1,
            "filename": "shufflish-0.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "71db2c450bb40ec90a97d83979d5e0e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 92771,
            "upload_time": "2024-11-12T13:45:06",
            "upload_time_iso_8601": "2024-11-12T13:45:06.022162Z",
            "url": "https://files.pythonhosted.org/packages/5f/74/198eaaad1221d51e2d2b0e080e6005de716a46537f8d5bddb4b5c72c710f/shufflish-0.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-12 13:45:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jfolz",
    "github_project": "shufflish",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "shufflish"
}
        
Elapsed time: 0.38489s