Name | picows JSON |
Version |
1.7.2
JSON |
| download |
home_page | None |
Summary | Ultra-fast websocket client and server for asyncio |
upload_time | 2024-12-13 10:55:13 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT License |
keywords |
websocket
networking
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
.. image:: https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/banner.png
:align: center
Introduction
============
.. image:: https://img.shields.io/github/actions/workflow/status/tarasko/picows/run-tests.yml?branch=master
:target: https://github.com/tarasko/picows/actions/workflows/run-tests.yml?query=branch%3Amaster
.. image:: https://badge.fury.io/py/picows.svg
:target: https://pypi.org/project/picows
:alt: Latest PyPI package version
.. image:: https://img.shields.io/pypi/dm/picows
:target: https://pypistats.org/packages/picows
:alt: Downloads count
.. image:: https://readthedocs.org/projects/picows/badge/?version=latest
:target: https://picows.readthedocs.io/en/latest/
:alt: Latest Read The Docs
**picows** is a high-performance python library designed for building asyncio WebSocket clients and servers.
Implemented in Cython, it offers exceptional speed and efficiency, surpassing other popular WebSocket python libraries.
.. image:: https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/picows_benchmark.png
:target: https://github.com/tarasko/picows/blob/master/docs/source/_static/picows_benchmark.png?raw=true
:align: center
The above chart shows the performance of echo clients communicating with a server through a loopback interface using popular Python libraries.
`boost.beast client <https://www.boost.org/doc/libs/1_85_0/libs/beast/example/websocket/client/sync/websocket_client_sync.cpp>`_
is also included for reference. Typically, picows is ~1.5-2 times faster than aiohttp. All Python clients use uvloop. Please find the benchmark sources
`here <https://github.com/tarasko/picows/blob/master/examples/echo_client_benchmark.py>`_.
Installation
============
picows requires Python 3.8 or greater and is available on PyPI.
Use pip to install it::
$ pip install picows
Documentation
=============
https://picows.readthedocs.io/en/stable/
Motivation
==========
Popular WebSocket libraries provide high-level interfaces that handle timeouts,
flow control, optional compression/decompression, and reassembly of WebSocket messages
from frames, while also implementing async iteration interfaces.
However, these features are typically implemented in pure Python, resulting in
significant overhead even when messages are small, un-fragmented (with every WebSocket frame marked as final),
and uncompressed.
The async iteration interface relies on ``asyncio.Futures``, which adds additional
work for the event loop and can introduce delays. Moreover, it’s not always necessary
to process every message. In some use cases, only the latest message matters,
and previous ones can be discarded without even parsing their content.
API Design
==========
The library achieves superior performance by offering an efficient, non-async data path, similar to the
`transport/protocol design from asyncio <https://docs.python.org/3/library/asyncio-protocol.html#asyncio-transports-protocols>`_.
The user handler receives WebSocket frame objects instead of complete messages.
Since a message can span multiple frames, it is up to the user to decide the most
effective strategy for concatenating them. Each frame object includes additional
details about the current parser state, which may help optimize the behavior of the user’s application.
Getting started
===============
Echo client
-----------
Connects to an echo server, sends a message and disconnect upon reply.
.. code-block:: python
import asyncio
from picows import ws_connect, WSFrame, WSTransport, WSListener, WSMsgType, WSCloseCode
class ClientListener(WSListener):
def on_ws_connected(self, transport: WSTransport):
transport.send(WSMsgType.TEXT, b"Hello world")
def on_ws_frame(self, transport: WSTransport, frame: WSFrame):
print(f"Echo reply: {frame.get_payload_as_ascii_text()}")
transport.send_close(WSCloseCode.OK)
transport.disconnect()
async def main(url):
transport, client = await ws_connect(ClientListener, url)
await transport.wait_disconnected()
if __name__ == '__main__':
asyncio.run(main("ws://127.0.0.1:9001"))
This prints:
.. code-block::
Echo reply: Hello world
Echo server
-----------
.. code-block:: python
import asyncio
from picows import ws_create_server, WSFrame, WSTransport, WSListener, WSMsgType, WSUpgradeRequest
class ServerClientListener(WSListener):
def on_ws_connected(self, transport: WSTransport):
print("New client connected")
def on_ws_frame(self, transport: WSTransport, frame: WSFrame):
if frame.msg_type == WSMsgType.CLOSE:
transport.send_close(frame.get_close_code(), frame.get_close_message())
transport.disconnect()
else:
transport.send(frame.msg_type, frame.get_payload_as_bytes())
async def main():
def listener_factory(r: WSUpgradeRequest):
# Routing can be implemented here by analyzing request content
return ServerClientListener()
server: asyncio.Server = await ws_create_server(listener_factory, "127.0.0.1", 9001)
for s in server.sockets:
print(f"Server started on {s.getsockname()}")
await server.serve_forever()
if __name__ == '__main__':
asyncio.run(main())
Features
====================
* Maximally efficient WebSocket frame parser and builder implemented in Cython
* Re-use memory as much as possible, avoid reallocations, and avoid unnecessary Python object creations
* Provide Cython .pxd for efficient integration of user Cythonized code with picows
* Ability to check if a frame is the last one in the receiving buffer
* Auto ping-pong with an option to customize ping/pong messages.
* Convenient method to measure websocket roundtrip time using ping/pong messages.
Contributing / Building From Source
===================================
1. Fork and clone the repository::
$ git clone git@github.com:tarasko/picows.git
$ cd picows
2. Create a virtual environment and activate it::
$ python3 -m venv picows-dev
$ source picows-dev/bin/activate
3. Install development dependencies::
# To run tests
$ pip install -r requirements-test.txt
# To run benchmark
$ pip install -r requirements-benchmark.txt
# To build docs
$ pip install -r docs/requirements.txt
4. Build inplace and run tests::
$ export PICOWS_BUILD_EXAMPLES=1
$ python setup.py build_ext --inplace
$ pytest -s -v
# Run specific test with picows debug logs enabled
$ pytest -s -v -k test_client_handshake_timeout[uvloop-plain] --log-cli-level 9
5. Run benchmark::
$ python -m examples.echo_server
$ python -m examples.echo_client_benchmark
6. Build docs::
$ make -C docs clean html
Raw data
{
"_id": null,
"home_page": null,
"name": "picows",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "websocket, networking",
"author": null,
"author_email": "Taras Kozlov <tarasko.projects@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/0d/a4/14a1039ca23bcf99ca441f814e055c04104f9348cec34995b9e4fe839822/picows-1.7.2.tar.gz",
"platform": null,
"description": ".. image:: https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/banner.png\n :align: center\n\nIntroduction\n============\n.. image:: https://img.shields.io/github/actions/workflow/status/tarasko/picows/run-tests.yml?branch=master\n :target: https://github.com/tarasko/picows/actions/workflows/run-tests.yml?query=branch%3Amaster\n\n.. image:: https://badge.fury.io/py/picows.svg\n :target: https://pypi.org/project/picows\n :alt: Latest PyPI package version\n\n.. image:: https://img.shields.io/pypi/dm/picows\n :target: https://pypistats.org/packages/picows\n :alt: Downloads count\n\n.. image:: https://readthedocs.org/projects/picows/badge/?version=latest\n :target: https://picows.readthedocs.io/en/latest/\n :alt: Latest Read The Docs\n\n**picows** is a high-performance python library designed for building asyncio WebSocket clients and servers.\nImplemented in Cython, it offers exceptional speed and efficiency, surpassing other popular WebSocket python libraries.\n\n.. image:: https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/picows_benchmark.png\n :target: https://github.com/tarasko/picows/blob/master/docs/source/_static/picows_benchmark.png?raw=true\n :align: center\n\n\nThe above chart shows the performance of echo clients communicating with a server through a loopback interface using popular Python libraries. \n`boost.beast client <https://www.boost.org/doc/libs/1_85_0/libs/beast/example/websocket/client/sync/websocket_client_sync.cpp>`_\nis also included for reference. Typically, picows is ~1.5-2 times faster than aiohttp. All Python clients use uvloop. Please find the benchmark sources \n`here <https://github.com/tarasko/picows/blob/master/examples/echo_client_benchmark.py>`_.\n\nInstallation\n============\n\npicows requires Python 3.8 or greater and is available on PyPI.\nUse pip to install it::\n\n $ pip install picows\n\n\nDocumentation\n=============\n\nhttps://picows.readthedocs.io/en/stable/\n\nMotivation\n==========\nPopular WebSocket libraries provide high-level interfaces that handle timeouts,\nflow control, optional compression/decompression, and reassembly of WebSocket messages\nfrom frames, while also implementing async iteration interfaces.\nHowever, these features are typically implemented in pure Python, resulting in\nsignificant overhead even when messages are small, un-fragmented (with every WebSocket frame marked as final),\nand uncompressed.\n\nThe async iteration interface relies on ``asyncio.Futures``, which adds additional\nwork for the event loop and can introduce delays. Moreover, it\u2019s not always necessary\nto process every message. In some use cases, only the latest message matters,\nand previous ones can be discarded without even parsing their content.\n\nAPI Design\n==========\nThe library achieves superior performance by offering an efficient, non-async data path, similar to the\n`transport/protocol design from asyncio <https://docs.python.org/3/library/asyncio-protocol.html#asyncio-transports-protocols>`_.\nThe user handler receives WebSocket frame objects instead of complete messages.\nSince a message can span multiple frames, it is up to the user to decide the most\neffective strategy for concatenating them. Each frame object includes additional\ndetails about the current parser state, which may help optimize the behavior of the user\u2019s application.\n\nGetting started\n===============\n\nEcho client\n-----------\nConnects to an echo server, sends a message and disconnect upon reply.\n\n.. code-block:: python\n\n import asyncio\n from picows import ws_connect, WSFrame, WSTransport, WSListener, WSMsgType, WSCloseCode\n\n class ClientListener(WSListener):\n def on_ws_connected(self, transport: WSTransport):\n transport.send(WSMsgType.TEXT, b\"Hello world\")\n\n def on_ws_frame(self, transport: WSTransport, frame: WSFrame):\n print(f\"Echo reply: {frame.get_payload_as_ascii_text()}\")\n transport.send_close(WSCloseCode.OK)\n transport.disconnect()\n\n\n async def main(url):\n transport, client = await ws_connect(ClientListener, url)\n await transport.wait_disconnected()\n\n\n if __name__ == '__main__':\n asyncio.run(main(\"ws://127.0.0.1:9001\"))\n\nThis prints:\n\n.. code-block::\n\n Echo reply: Hello world\n\nEcho server\n-----------\n\n.. code-block:: python\n\n import asyncio\n from picows import ws_create_server, WSFrame, WSTransport, WSListener, WSMsgType, WSUpgradeRequest\n\n class ServerClientListener(WSListener):\n def on_ws_connected(self, transport: WSTransport):\n print(\"New client connected\")\n\n def on_ws_frame(self, transport: WSTransport, frame: WSFrame):\n if frame.msg_type == WSMsgType.CLOSE:\n transport.send_close(frame.get_close_code(), frame.get_close_message())\n transport.disconnect()\n else:\n transport.send(frame.msg_type, frame.get_payload_as_bytes())\n\n async def main():\n def listener_factory(r: WSUpgradeRequest):\n # Routing can be implemented here by analyzing request content\n return ServerClientListener()\n\n server: asyncio.Server = await ws_create_server(listener_factory, \"127.0.0.1\", 9001)\n for s in server.sockets:\n print(f\"Server started on {s.getsockname()}\")\n\n await server.serve_forever()\n\n if __name__ == '__main__':\n asyncio.run(main())\n\n\nFeatures\n====================\n* Maximally efficient WebSocket frame parser and builder implemented in Cython\n* Re-use memory as much as possible, avoid reallocations, and avoid unnecessary Python object creations\n* Provide Cython .pxd for efficient integration of user Cythonized code with picows\n* Ability to check if a frame is the last one in the receiving buffer\n* Auto ping-pong with an option to customize ping/pong messages.\n* Convenient method to measure websocket roundtrip time using ping/pong messages.\n\nContributing / Building From Source\n===================================\n1. Fork and clone the repository::\n\n $ git clone git@github.com:tarasko/picows.git\n $ cd picows\n\n2. Create a virtual environment and activate it::\n\n $ python3 -m venv picows-dev\n $ source picows-dev/bin/activate\n\n\n3. Install development dependencies::\n\n # To run tests\n $ pip install -r requirements-test.txt\n\n # To run benchmark\n $ pip install -r requirements-benchmark.txt\n\n # To build docs\n $ pip install -r docs/requirements.txt\n\n4. Build inplace and run tests::\n\n $ export PICOWS_BUILD_EXAMPLES=1\n $ python setup.py build_ext --inplace\n $ pytest -s -v\n\n # Run specific test with picows debug logs enabled\n $ pytest -s -v -k test_client_handshake_timeout[uvloop-plain] --log-cli-level 9\n\n5. Run benchmark::\n\n $ python -m examples.echo_server\n $ python -m examples.echo_client_benchmark\n\n6. Build docs::\n\n $ make -C docs clean html\n\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Ultra-fast websocket client and server for asyncio",
"version": "1.7.2",
"project_urls": {
"Documentation": "https://picows.readthedocs.io/en/latest",
"Homepage": "https://github.com/tarasko/picows",
"Issues": "https://github.com/tarasko/picows/issues",
"Repository": "https://github.com/tarasko/picows"
},
"split_keywords": [
"websocket",
" networking"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d3fcda097c9e126e6402d1440a14e97a3d95609bd887cffcab3cdc2934f5032d",
"md5": "9a2bf9af2cea3bca3fcdb46de153ab70",
"sha256": "d1ee1cfacbcd1a07ba2042097d4bf435e229c7df30376c683c25b99238890307"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9a2bf9af2cea3bca3fcdb46de153ab70",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 255266,
"upload_time": "2024-12-13T10:53:16",
"upload_time_iso_8601": "2024-12-13T10:53:16.111744Z",
"url": "https://files.pythonhosted.org/packages/d3/fc/da097c9e126e6402d1440a14e97a3d95609bd887cffcab3cdc2934f5032d/picows-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aa8d634fce893b9daa1898b1caa035c247d17fb36b6bcdac44cfcc2611abaab0",
"md5": "60abae293f8e381e755198950b85fc48",
"sha256": "c223ec8b6b5625b0583d382ef0b5d3b0ecdc860dc7f845cac8543f6eab88a5d4"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "60abae293f8e381e755198950b85fc48",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 233710,
"upload_time": "2024-12-13T10:53:18",
"upload_time_iso_8601": "2024-12-13T10:53:18.044053Z",
"url": "https://files.pythonhosted.org/packages/aa/8d/634fce893b9daa1898b1caa035c247d17fb36b6bcdac44cfcc2611abaab0/picows-1.7.2-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c2673d6cb9b0dea721afdcf699bce70b80d4668f6dac5e2a065c67fab2770e75",
"md5": "8bbffbdc743f3bf14ae611f29917c54b",
"sha256": "c9045c078d9610e9c493a911b9aa5c80b801d16b00a01e81b95cf96f926faf78"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "8bbffbdc743f3bf14ae611f29917c54b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1372765,
"upload_time": "2024-12-13T10:53:21",
"upload_time_iso_8601": "2024-12-13T10:53:21.102627Z",
"url": "https://files.pythonhosted.org/packages/c2/67/3d6cb9b0dea721afdcf699bce70b80d4668f6dac5e2a065c67fab2770e75/picows-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "63d07fa58324462dbd9ace693da1f52ae9c5bf046f431d8f964e8161c827ee73",
"md5": "e541dc16999f103c971c160a3e798365",
"sha256": "c85bb55a5ef38bd5c968ea30cefeedfac5aa8019a8bb85cabed3ed438aef282e"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e541dc16999f103c971c160a3e798365",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1403377,
"upload_time": "2024-12-13T10:53:25",
"upload_time_iso_8601": "2024-12-13T10:53:25.095228Z",
"url": "https://files.pythonhosted.org/packages/63/d0/7fa58324462dbd9ace693da1f52ae9c5bf046f431d8f964e8161c827ee73/picows-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0c729e939e152fc40a06e7cc9e5aaec0250bab9c9f77d1b33a21d7bdfc7a9ce1",
"md5": "e69ef3d0c726c499093c44f6c9f7db9a",
"sha256": "53af32e92eed3e7490b6df97fc62e2b55e9977a8138c003b67c035ec77933d7b"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "e69ef3d0c726c499093c44f6c9f7db9a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1303506,
"upload_time": "2024-12-13T10:53:30",
"upload_time_iso_8601": "2024-12-13T10:53:30.230641Z",
"url": "https://files.pythonhosted.org/packages/0c/72/9e939e152fc40a06e7cc9e5aaec0250bab9c9f77d1b33a21d7bdfc7a9ce1/picows-1.7.2-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "97aa29885f7741ff9090a487e437ca689849eaff482f36c8b002c56992eb04a0",
"md5": "6e68978e1dc34d98817e5546c31a4125",
"sha256": "cf66d746e452509074a44bd97ab4d10524f657bcf9cb22401fb14f0e3666356c"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "6e68978e1dc34d98817e5546c31a4125",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1362754,
"upload_time": "2024-12-13T10:53:32",
"upload_time_iso_8601": "2024-12-13T10:53:32.290749Z",
"url": "https://files.pythonhosted.org/packages/97/aa/29885f7741ff9090a487e437ca689849eaff482f36c8b002c56992eb04a0/picows-1.7.2-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "885dbae5b3238e4094912bb38100fc12fb17ede0bc600e8bf1f030c492974742",
"md5": "5f8cdc14514cdee19df7766761f45b3a",
"sha256": "4243e860975a4ae5c146918ec0f06ddc59d190961c78ea26ff1e2263b862a376"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "5f8cdc14514cdee19df7766761f45b3a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 504739,
"upload_time": "2024-12-13T10:53:37",
"upload_time_iso_8601": "2024-12-13T10:53:37.188142Z",
"url": "https://files.pythonhosted.org/packages/88/5d/bae5b3238e4094912bb38100fc12fb17ede0bc600e8bf1f030c492974742/picows-1.7.2-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2bfaac4350602f364e4ab624324a68461797d5c6bb5a4163951c4c7319d537f4",
"md5": "e13ed759792a96ae0d1911442de7341c",
"sha256": "6af73c5354cdffa292fc48394e56d49b0957188bee241ff1d54c2bbc4cb0f3e2"
},
"downloads": -1,
"filename": "picows-1.7.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "e13ed759792a96ae0d1911442de7341c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 527271,
"upload_time": "2024-12-13T10:53:39",
"upload_time_iso_8601": "2024-12-13T10:53:39.002932Z",
"url": "https://files.pythonhosted.org/packages/2b/fa/ac4350602f364e4ab624324a68461797d5c6bb5a4163951c4c7319d537f4/picows-1.7.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bb96d50f71044ee434b82858b388e0f2d9b22f1b40394ffd5ab55c02d67c7680",
"md5": "32f6fdaefbbcc79753701c13b99b9b19",
"sha256": "5e855a52a11e96963b43633c3d14e5f632ba791230ddd867aba196b6e667dd17"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "32f6fdaefbbcc79753701c13b99b9b19",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 258730,
"upload_time": "2024-12-13T10:53:40",
"upload_time_iso_8601": "2024-12-13T10:53:40.490908Z",
"url": "https://files.pythonhosted.org/packages/bb/96/d50f71044ee434b82858b388e0f2d9b22f1b40394ffd5ab55c02d67c7680/picows-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3b519533095972c8da1444da69cdaf2070923bcc1e1d9eaa99f1eaeb8d43dd36",
"md5": "17cee31db195efbedff448d8a4ecbb39",
"sha256": "1ab64a0fa9bb1080368bc66eba3434ddf60f797b11fafec08994cfdda9a731cf"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "17cee31db195efbedff448d8a4ecbb39",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 235632,
"upload_time": "2024-12-13T10:53:42",
"upload_time_iso_8601": "2024-12-13T10:53:42.374349Z",
"url": "https://files.pythonhosted.org/packages/3b/51/9533095972c8da1444da69cdaf2070923bcc1e1d9eaa99f1eaeb8d43dd36/picows-1.7.2-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "27e60a259271eb524e0961eac6361c10eb92f25e3fcc9e46d30ce52ec132672d",
"md5": "b98f4e20d20a72a62786d7ce2d7db437",
"sha256": "4dfc3d920ae8fe7c688588154d05a1c7a32df4dd19e457a8956a7aaa1bc30fd6"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "b98f4e20d20a72a62786d7ce2d7db437",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1513639,
"upload_time": "2024-12-13T10:53:45",
"upload_time_iso_8601": "2024-12-13T10:53:45.017470Z",
"url": "https://files.pythonhosted.org/packages/27/e6/0a259271eb524e0961eac6361c10eb92f25e3fcc9e46d30ce52ec132672d/picows-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d489f4db414a1f4b16fbcbe1ae31d3c60b3bd026ae56d84934a588ce15d689c5",
"md5": "cdc4eca2d95cf44b72aba7b2006f798b",
"sha256": "e49088a6abcae171611feda6e35d2c448966c93dc1e0c019073a399126d634cf"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "cdc4eca2d95cf44b72aba7b2006f798b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1528535,
"upload_time": "2024-12-13T10:53:48",
"upload_time_iso_8601": "2024-12-13T10:53:48.786244Z",
"url": "https://files.pythonhosted.org/packages/d4/89/f4db414a1f4b16fbcbe1ae31d3c60b3bd026ae56d84934a588ce15d689c5/picows-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90bdc2d0ffff271b50f928dfb29c91646b165802c101c3409a4833d989857903",
"md5": "4fc4f0a031b250a19442ca94f2777bc0",
"sha256": "bb6bb237972d29d3eaad47e55e7480f7f3e2d78a1edd6f325178674a4cca4d9a"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "4fc4f0a031b250a19442ca94f2777bc0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1450789,
"upload_time": "2024-12-13T10:53:52",
"upload_time_iso_8601": "2024-12-13T10:53:52.010834Z",
"url": "https://files.pythonhosted.org/packages/90/bd/c2d0ffff271b50f928dfb29c91646b165802c101c3409a4833d989857903/picows-1.7.2-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d31affe4cca84798006ed8e902b017e0158ececb493b11856cd3e55ec07e212",
"md5": "6e34dbc0dce6f5480e858290e8bd6fb2",
"sha256": "e179c389401f8f2b3c8ed72f988084fec0750020c333b14af782925460549e1e"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "6e34dbc0dce6f5480e858290e8bd6fb2",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1506592,
"upload_time": "2024-12-13T10:53:54",
"upload_time_iso_8601": "2024-12-13T10:53:54.240906Z",
"url": "https://files.pythonhosted.org/packages/3d/31/affe4cca84798006ed8e902b017e0158ececb493b11856cd3e55ec07e212/picows-1.7.2-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a0fc104e01abf722ba56041c4f22ea9ad1c428cb3a6271d7a31d03af4bbbde8",
"md5": "440f7a7a2da1093feb9960c536b8e31d",
"sha256": "73f41e84b41295bb23944b602a637fceb133d193595c8758ecbdb0b6f505c4e8"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "440f7a7a2da1093feb9960c536b8e31d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 505120,
"upload_time": "2024-12-13T10:53:57",
"upload_time_iso_8601": "2024-12-13T10:53:57.362089Z",
"url": "https://files.pythonhosted.org/packages/1a/0f/c104e01abf722ba56041c4f22ea9ad1c428cb3a6271d7a31d03af4bbbde8/picows-1.7.2-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d9e2b86152329c09c79523f977171532798b93095f8c7acecdbbbbcbe7f6d9d1",
"md5": "6cd8c173de9876dfe69441df8920eada",
"sha256": "4e7fbd479a135885788e4bd58f940946f227d9cc08a3cf0812656a69fca2a160"
},
"downloads": -1,
"filename": "picows-1.7.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "6cd8c173de9876dfe69441df8920eada",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 529277,
"upload_time": "2024-12-13T10:54:01",
"upload_time_iso_8601": "2024-12-13T10:54:01.061080Z",
"url": "https://files.pythonhosted.org/packages/d9/e2/b86152329c09c79523f977171532798b93095f8c7acecdbbbbcbe7f6d9d1/picows-1.7.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e3fc5c9788aa4cfc24cd026c3bd079154d15f8a1c441b0b233688ccac3afdd6",
"md5": "a59ee32cea275da3d4c152711f611aa9",
"sha256": "9696d201be91ee32bfb0328d84a18b55e49d2303dd8d4f7d2f508b76baa6540c"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a59ee32cea275da3d4c152711f611aa9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 256576,
"upload_time": "2024-12-13T10:54:04",
"upload_time_iso_8601": "2024-12-13T10:54:04.110253Z",
"url": "https://files.pythonhosted.org/packages/7e/3f/c5c9788aa4cfc24cd026c3bd079154d15f8a1c441b0b233688ccac3afdd6/picows-1.7.2-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2de8b94fe0a06a4a616facf21c4996d963c2243b60137c084b1456c5f9906005",
"md5": "e7a2cc6ba60165fff4e334b616d28714",
"sha256": "f733cf5d0589f78ce980f9dd9b5282a3532b0e4f08bdcdb053425144b43e74d2"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e7a2cc6ba60165fff4e334b616d28714",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 237745,
"upload_time": "2024-12-13T10:54:05",
"upload_time_iso_8601": "2024-12-13T10:54:05.739481Z",
"url": "https://files.pythonhosted.org/packages/2d/e8/b94fe0a06a4a616facf21c4996d963c2243b60137c084b1456c5f9906005/picows-1.7.2-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "933e945f4d51657dab15d9e88a74fa7728b28cce9cbc89c3e73adafd7eeec605",
"md5": "b25a92fc0d3560f767b41d44b8be5687",
"sha256": "82fe0b4a8cceecb6c9a6fc01d95332080e291d3cdc72670d09ce0d6ea5b521c2"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "b25a92fc0d3560f767b41d44b8be5687",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1485551,
"upload_time": "2024-12-13T10:54:07",
"upload_time_iso_8601": "2024-12-13T10:54:07.424185Z",
"url": "https://files.pythonhosted.org/packages/93/3e/945f4d51657dab15d9e88a74fa7728b28cce9cbc89c3e73adafd7eeec605/picows-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bfef7dbf8ff6237be3aff465c8f8216d8b1e76ea4412a80dcd458c86097d5639",
"md5": "30a151fa4ace07e56123a80b363c3263",
"sha256": "fe45b5552af996e8f4a97b8a10123ede2c8c1717926fe56cea86831a997fbf9f"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "30a151fa4ace07e56123a80b363c3263",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1527521,
"upload_time": "2024-12-13T10:54:09",
"upload_time_iso_8601": "2024-12-13T10:54:09.442727Z",
"url": "https://files.pythonhosted.org/packages/bf/ef/7dbf8ff6237be3aff465c8f8216d8b1e76ea4412a80dcd458c86097d5639/picows-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3547620db852d36177bcc72ada2f81f30cd25ec4ae05cd98c4001e09f21bd09d",
"md5": "e242c64270ac76329b12df6233869a38",
"sha256": "0b19fbbf218c8b10b80d207f6745ccff51a884b48e7606684d79ed0d27f8d85e"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "e242c64270ac76329b12df6233869a38",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1431016,
"upload_time": "2024-12-13T10:54:11",
"upload_time_iso_8601": "2024-12-13T10:54:11.156526Z",
"url": "https://files.pythonhosted.org/packages/35/47/620db852d36177bcc72ada2f81f30cd25ec4ae05cd98c4001e09f21bd09d/picows-1.7.2-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "435b3f47866e9a6fc66457b37fc5a5133a3893abecb229a58d97d03c16fd8386",
"md5": "94686c88f7b38e47ef6e9ef7acfcddb7",
"sha256": "66b98e45662e915f7a878bce4dc395d57378c8fe4e2220c536c04708c2fe37e4"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "94686c88f7b38e47ef6e9ef7acfcddb7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1579321,
"upload_time": "2024-12-13T10:54:12",
"upload_time_iso_8601": "2024-12-13T10:54:12.955946Z",
"url": "https://files.pythonhosted.org/packages/43/5b/3f47866e9a6fc66457b37fc5a5133a3893abecb229a58d97d03c16fd8386/picows-1.7.2-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d45ea801c8d60aa5a22b9d54c6fd88c3f555a6171d02db304bcbd241c8afc08",
"md5": "d0ba9d430142b5be2b0565c7b97af6bb",
"sha256": "8979db65a771b33daf9082452f253b8ad69ac4d0ecd792ec2e6615111e579c70"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "d0ba9d430142b5be2b0565c7b97af6bb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 498068,
"upload_time": "2024-12-13T10:54:16",
"upload_time_iso_8601": "2024-12-13T10:54:16.045190Z",
"url": "https://files.pythonhosted.org/packages/4d/45/ea801c8d60aa5a22b9d54c6fd88c3f555a6171d02db304bcbd241c8afc08/picows-1.7.2-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "938cb6da15b9310f26e3a332fc37ef2a731e77caef5873643f19d0127a6003d3",
"md5": "c957c92057a7d9768a9ecdb4ef4df1e9",
"sha256": "c5ea8cf9ddacc0e15ee1afd25e10b9f54fbc3f7b7a08464622d9a5d16fead6a0"
},
"downloads": -1,
"filename": "picows-1.7.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "c957c92057a7d9768a9ecdb4ef4df1e9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 521032,
"upload_time": "2024-12-13T10:54:18",
"upload_time_iso_8601": "2024-12-13T10:54:18.517209Z",
"url": "https://files.pythonhosted.org/packages/93/8c/b6da15b9310f26e3a332fc37ef2a731e77caef5873643f19d0127a6003d3/picows-1.7.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b6cad5cc02c15cf2d21aaac470bc0568efe7b95d4f1f425144df907ffc634e81",
"md5": "5f13bd33f7843e59858a80e23c9269ce",
"sha256": "0d2468d9954cb25e0aa91866cdfb7f624b62948c02623f146ce6ee57627c6846"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "5f13bd33f7843e59858a80e23c9269ce",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 252799,
"upload_time": "2024-12-13T10:54:21",
"upload_time_iso_8601": "2024-12-13T10:54:21.694734Z",
"url": "https://files.pythonhosted.org/packages/b6/ca/d5cc02c15cf2d21aaac470bc0568efe7b95d4f1f425144df907ffc634e81/picows-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cef840dfbbd5ae01a6e52be5c8cc65455fb29ed0d5dc2fe6d9ea04ac22c95c6f",
"md5": "ace80d47561efb0541ed93c0b231ac98",
"sha256": "2a89fb06da27add6eb34c824d099efc7f5a481ea1f3e5dfd0ccc45ab8274b757"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ace80d47561efb0541ed93c0b231ac98",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 234948,
"upload_time": "2024-12-13T10:54:23",
"upload_time_iso_8601": "2024-12-13T10:54:23.329857Z",
"url": "https://files.pythonhosted.org/packages/ce/f8/40dfbbd5ae01a6e52be5c8cc65455fb29ed0d5dc2fe6d9ea04ac22c95c6f/picows-1.7.2-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f14aa829e9d78a2fc28de55df20b950e941934613c2b55fc6d2205ce154d5f16",
"md5": "ebf8774530f3cc6d1b1de5f2fbc56a9b",
"sha256": "60bc7b211ffef2eae0d48b8e7cc45977e624143f51b20526832a4618d0d202a1"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ebf8774530f3cc6d1b1de5f2fbc56a9b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1485516,
"upload_time": "2024-12-13T10:54:25",
"upload_time_iso_8601": "2024-12-13T10:54:25.197708Z",
"url": "https://files.pythonhosted.org/packages/f1/4a/a829e9d78a2fc28de55df20b950e941934613c2b55fc6d2205ce154d5f16/picows-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30d85cfb4634a79beeae3c8d6313e03c6b9da10797e22b3cdd63aedc465a9289",
"md5": "4ff47a85c1d34e3a82ad56de52753bb8",
"sha256": "6a196e36980b31ecc20aeaf2223769b1bd6a4ac8214995ba3bae46c47e76af74"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4ff47a85c1d34e3a82ad56de52753bb8",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1524949,
"upload_time": "2024-12-13T10:54:26",
"upload_time_iso_8601": "2024-12-13T10:54:26.978069Z",
"url": "https://files.pythonhosted.org/packages/30/d8/5cfb4634a79beeae3c8d6313e03c6b9da10797e22b3cdd63aedc465a9289/picows-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ed4ecf757afb928109213e9b03f7e78ffcc103c78181ed8a8181615bbd7a74b3",
"md5": "1410c1bbbc7be1562e6e6d71cb1409e8",
"sha256": "a59bf5b19d245f8ca82ab65e3c93f8279710622653c829458ce7ac3cefeb7c23"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "1410c1bbbc7be1562e6e6d71cb1409e8",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1431963,
"upload_time": "2024-12-13T10:54:28",
"upload_time_iso_8601": "2024-12-13T10:54:28.579300Z",
"url": "https://files.pythonhosted.org/packages/ed/4e/cf757afb928109213e9b03f7e78ffcc103c78181ed8a8181615bbd7a74b3/picows-1.7.2-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4b739673782b3704e780367d8fb3789cf9caffbbc3d186022f02ac123b344320",
"md5": "840ec39532f9f4976fb41e0e6da082b4",
"sha256": "bcccac512c58bf07770d63cf93abe40eb64fc44ffe25cd3f8bb42180a9cc31de"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "840ec39532f9f4976fb41e0e6da082b4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1584094,
"upload_time": "2024-12-13T10:54:30",
"upload_time_iso_8601": "2024-12-13T10:54:30.372841Z",
"url": "https://files.pythonhosted.org/packages/4b/73/9673782b3704e780367d8fb3789cf9caffbbc3d186022f02ac123b344320/picows-1.7.2-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0be8692b2c9595102c76f73a429f19f0e3253ea357e739b98cfecf7b2b8fdde4",
"md5": "dc9152a69a802a5fbeba4888a93e1a97",
"sha256": "4e105c9007dee0ad05125f53665ee2fcc3a3155689a2b04ce3baae768667b519"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "dc9152a69a802a5fbeba4888a93e1a97",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 497668,
"upload_time": "2024-12-13T10:54:32",
"upload_time_iso_8601": "2024-12-13T10:54:32.131659Z",
"url": "https://files.pythonhosted.org/packages/0b/e8/692b2c9595102c76f73a429f19f0e3253ea357e739b98cfecf7b2b8fdde4/picows-1.7.2-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "99242fa089d678148b6cd7cbb6a17856ffb72993108950a17df579311799ece6",
"md5": "c98ae3ba2fdcdaf42f2f4ece0934beb0",
"sha256": "c1c3e852090f8b54d855af5f1c5eaa6ff9620a9a3acbcf2666ecafedbb76fce2"
},
"downloads": -1,
"filename": "picows-1.7.2-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "c98ae3ba2fdcdaf42f2f4ece0934beb0",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 520953,
"upload_time": "2024-12-13T10:54:34",
"upload_time_iso_8601": "2024-12-13T10:54:34.912472Z",
"url": "https://files.pythonhosted.org/packages/99/24/2fa089d678148b6cd7cbb6a17856ffb72993108950a17df579311799ece6/picows-1.7.2-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "288774b2bcaed1756ce82c8a3742a97ab92551efcff34e9ed7bce1ac6d7fd4c3",
"md5": "a99b9bdb6dcd6d47b9be25a6f304f4c0",
"sha256": "3f252757e845670e7730f5e96dac4b99d5c2618ed6ea971cd0424f0a216f4208"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a99b9bdb6dcd6d47b9be25a6f304f4c0",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 256564,
"upload_time": "2024-12-13T10:54:37",
"upload_time_iso_8601": "2024-12-13T10:54:37.727633Z",
"url": "https://files.pythonhosted.org/packages/28/87/74b2bcaed1756ce82c8a3742a97ab92551efcff34e9ed7bce1ac6d7fd4c3/picows-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "802e29a2b5e35f4c2038c9af9c1dbdfcdc754a6f6a24f88df64d1fa6c2ac93df",
"md5": "ac7f0013e15ea8b5667d4b3fbb255d82",
"sha256": "b6eb9a00d35163a8acfe2c8f774c53d2d770b328bf30a24258a9ee45ecebe36e"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ac7f0013e15ea8b5667d4b3fbb255d82",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 235077,
"upload_time": "2024-12-13T10:54:39",
"upload_time_iso_8601": "2024-12-13T10:54:39.339820Z",
"url": "https://files.pythonhosted.org/packages/80/2e/29a2b5e35f4c2038c9af9c1dbdfcdc754a6f6a24f88df64d1fa6c2ac93df/picows-1.7.2-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7d3fafdb9fee07e89eb69542c6be4ff54897bb70d846f8238985edf06ede41ed",
"md5": "6a1768719b88b4c893696ca0c2368d8f",
"sha256": "ec74f048c3e436ce69e784bef2aae128c10a95f00c9d4539b442be1375cf7940"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "6a1768719b88b4c893696ca0c2368d8f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1421577,
"upload_time": "2024-12-13T10:54:41",
"upload_time_iso_8601": "2024-12-13T10:54:41.139738Z",
"url": "https://files.pythonhosted.org/packages/7d/3f/afdb9fee07e89eb69542c6be4ff54897bb70d846f8238985edf06ede41ed/picows-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ddb9f8a391be67cdc2aaf09503e3966b3aa74662396b2ed0f6cd71a7ef8db614",
"md5": "b1fa3796f741e769409abd1740038734",
"sha256": "a9444c438a4851d8cbdd4976b1dfc04c454f9ffbf16a8e8984e6e53578d8c323"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b1fa3796f741e769409abd1740038734",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1442404,
"upload_time": "2024-12-13T10:54:42",
"upload_time_iso_8601": "2024-12-13T10:54:42.973960Z",
"url": "https://files.pythonhosted.org/packages/dd/b9/f8a391be67cdc2aaf09503e3966b3aa74662396b2ed0f6cd71a7ef8db614/picows-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "963c9ff0c1582cbf21bc6fd609e16ebc5722ced84fd00c93c9a1442f86189830",
"md5": "5bad3a26cf4d9b057abcbd7926a5c3f8",
"sha256": "43be421d29b761e4875e2bcc481b922e9da0a1dee965d57dd5a03c40a070817f"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "5bad3a26cf4d9b057abcbd7926a5c3f8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1381616,
"upload_time": "2024-12-13T10:54:46",
"upload_time_iso_8601": "2024-12-13T10:54:46.170326Z",
"url": "https://files.pythonhosted.org/packages/96/3c/9ff0c1582cbf21bc6fd609e16ebc5722ced84fd00c93c9a1442f86189830/picows-1.7.2-cp38-cp38-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "907658115c958362d058bb990792020fc08f746195eb3c724e1b861606b8b08d",
"md5": "2d36bb5d824059ad7c0da72477a94ce9",
"sha256": "b04d8b2a4ee76186964f1b8b29e7515a8f479a26e08d8a3d174c32de4f4260da"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "2d36bb5d824059ad7c0da72477a94ce9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1431760,
"upload_time": "2024-12-13T10:54:48",
"upload_time_iso_8601": "2024-12-13T10:54:48.565376Z",
"url": "https://files.pythonhosted.org/packages/90/76/58115c958362d058bb990792020fc08f746195eb3c724e1b861606b8b08d/picows-1.7.2-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c50a132f7e83767bbefee7ef9edaa34c1702efe99c629be13f3f3d205b5071a",
"md5": "c95a705d6a904d6a2b07b1637f83ef11",
"sha256": "84fdf8fca2b5015e9ff27dd500c62bece17eb01f66dd057be694578fa5c7a564"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "c95a705d6a904d6a2b07b1637f83ef11",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 506294,
"upload_time": "2024-12-13T10:54:51",
"upload_time_iso_8601": "2024-12-13T10:54:51.594317Z",
"url": "https://files.pythonhosted.org/packages/8c/50/a132f7e83767bbefee7ef9edaa34c1702efe99c629be13f3f3d205b5071a/picows-1.7.2-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6fd3bbfad494455fe629597799311f1eb507be1f3eda4d6ca21b71c17e100299",
"md5": "0a955af82046ba484889ca266edf5e78",
"sha256": "d19f9b50b7b6dac5fc0e45444e889f6105c56a69c2106749eccfab31a7f0bafc"
},
"downloads": -1,
"filename": "picows-1.7.2-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "0a955af82046ba484889ca266edf5e78",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 529046,
"upload_time": "2024-12-13T10:54:54",
"upload_time_iso_8601": "2024-12-13T10:54:54.522819Z",
"url": "https://files.pythonhosted.org/packages/6f/d3/bbfad494455fe629597799311f1eb507be1f3eda4d6ca21b71c17e100299/picows-1.7.2-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e7e2041c8d411e605979f6c254a6d22cf16d7c0c1471b1bca9227ec3d788b95",
"md5": "1c3d5b092cb81e290a5712095a4dc043",
"sha256": "fff7284652e7ac84d27f37bbe8c89e7970a8715ae0b5e0a74fb5c16d129a895e"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1c3d5b092cb81e290a5712095a4dc043",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 255377,
"upload_time": "2024-12-13T10:54:56",
"upload_time_iso_8601": "2024-12-13T10:54:56.098174Z",
"url": "https://files.pythonhosted.org/packages/4e/7e/2041c8d411e605979f6c254a6d22cf16d7c0c1471b1bca9227ec3d788b95/picows-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "66bef2869327d36389db310f773820648ac9a159831dcaffd9b082b154832e1c",
"md5": "426b3e338001942a38718e93201b70f3",
"sha256": "b36d60013ab399fe94ed2c0cb4e336b6b17f936de8cf95f7c22312b20bcadeaa"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "426b3e338001942a38718e93201b70f3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 234183,
"upload_time": "2024-12-13T10:54:57",
"upload_time_iso_8601": "2024-12-13T10:54:57.869688Z",
"url": "https://files.pythonhosted.org/packages/66/be/f2869327d36389db310f773820648ac9a159831dcaffd9b082b154832e1c/picows-1.7.2-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5acfc73e1d67ef9b2ec7ab35fa5852b8fe9fdb298e2beed636c47d696b950d4f",
"md5": "85f3203311a3db1b5bc7db7639e0d2ea",
"sha256": "4763e458037e985187ca7d86688b11ef2e16173ec0a13dd3457f59e64e2e1730"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "85f3203311a3db1b5bc7db7639e0d2ea",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1381586,
"upload_time": "2024-12-13T10:54:59",
"upload_time_iso_8601": "2024-12-13T10:54:59.711418Z",
"url": "https://files.pythonhosted.org/packages/5a/cf/c73e1d67ef9b2ec7ab35fa5852b8fe9fdb298e2beed636c47d696b950d4f/picows-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5b2c18d9ec5272ad1195405dc3f6d30ae7c1261530d8c5b20c7d3ce4758e366e",
"md5": "89edd9abc7b09e90a933153a51df17b9",
"sha256": "4aeb3ff47c1b8291023c6a4ffbbd6238340fa5b119fcddbb1430055ec0b836f9"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "89edd9abc7b09e90a933153a51df17b9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1404012,
"upload_time": "2024-12-13T10:55:01",
"upload_time_iso_8601": "2024-12-13T10:55:01.405526Z",
"url": "https://files.pythonhosted.org/packages/5b/2c/18d9ec5272ad1195405dc3f6d30ae7c1261530d8c5b20c7d3ce4758e366e/picows-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c7e574df40e9454c5c7c69cbbf8ee979fbd0ae51320f715a7b6b7ea393afd761",
"md5": "1c8dd95299fdb73e14d7a35c0be4b48d",
"sha256": "ab9f7f575f6d8d4e40df003b1a63f8c46b6eaea2733b0c005299b2f0d188ec9d"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "1c8dd95299fdb73e14d7a35c0be4b48d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1305002,
"upload_time": "2024-12-13T10:55:03",
"upload_time_iso_8601": "2024-12-13T10:55:03.159281Z",
"url": "https://files.pythonhosted.org/packages/c7/e5/74df40e9454c5c7c69cbbf8ee979fbd0ae51320f715a7b6b7ea393afd761/picows-1.7.2-cp39-cp39-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ccd89c579dab5282e8a49b9b80de7c2bb29ec28b656a2a9087dcb77dfb6566cb",
"md5": "26ba44178cb005abedd04258c87f65a0",
"sha256": "8bd1751409d4f34b853108c23c73554e84555d7f062f48d503d61645d878afc5"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "26ba44178cb005abedd04258c87f65a0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1361656,
"upload_time": "2024-12-13T10:55:05",
"upload_time_iso_8601": "2024-12-13T10:55:05.528485Z",
"url": "https://files.pythonhosted.org/packages/cc/d8/9c579dab5282e8a49b9b80de7c2bb29ec28b656a2a9087dcb77dfb6566cb/picows-1.7.2-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "518dc5fc4af4805514dba4cb600bb52086f5c01f3ec53e9c9d98e06f75feb426",
"md5": "c68a6d24cf7970ab5c1836041ac6dca3",
"sha256": "0b389bc57de75ccfa098f9d4c325b93d10ba6828b91d6a8f413578754ea334f7"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "c68a6d24cf7970ab5c1836041ac6dca3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 504833,
"upload_time": "2024-12-13T10:55:07",
"upload_time_iso_8601": "2024-12-13T10:55:07.262091Z",
"url": "https://files.pythonhosted.org/packages/51/8d/c5fc4af4805514dba4cb600bb52086f5c01f3ec53e9c9d98e06f75feb426/picows-1.7.2-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "db3241617bbe0d5d701c84eea310bf226f37c8053999194574974ab80fca84c6",
"md5": "064120a49867ff338fce26d3e53a9492",
"sha256": "21316974db928c4c5025931385dd2fefa3e5ebd69f828597c89a4d8f4b38711b"
},
"downloads": -1,
"filename": "picows-1.7.2-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "064120a49867ff338fce26d3e53a9492",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 527277,
"upload_time": "2024-12-13T10:55:11",
"upload_time_iso_8601": "2024-12-13T10:55:11.919298Z",
"url": "https://files.pythonhosted.org/packages/db/32/41617bbe0d5d701c84eea310bf226f37c8053999194574974ab80fca84c6/picows-1.7.2-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0da414a1039ca23bcf99ca441f814e055c04104f9348cec34995b9e4fe839822",
"md5": "537ef8d852ddf539182cbc03233b42cc",
"sha256": "d277bd185ef7beeb9cba4b124e0fd4568f116edcfefad7faa1fadc0551e3aea4"
},
"downloads": -1,
"filename": "picows-1.7.2.tar.gz",
"has_sig": false,
"md5_digest": "537ef8d852ddf539182cbc03233b42cc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 31907,
"upload_time": "2024-12-13T10:55:13",
"upload_time_iso_8601": "2024-12-13T10:55:13.434381Z",
"url": "https://files.pythonhosted.org/packages/0d/a4/14a1039ca23bcf99ca441f814e055c04104f9348cec34995b9e4fe839822/picows-1.7.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-13 10:55:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tarasko",
"github_project": "picows",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "picows"
}