Skip to main content

Ultra-fast websocket client and server for asyncio

Project description

https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/banner.png

Introduction

https://img.shields.io/github/actions/workflow/status/tarasko/picows/run-tests.yml?branch=master Latest PyPI package version Downloads count 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.

https://raw.githubusercontent.com/tarasko/picows/master/docs/source/_static/picows_benchmark.png

The above chart shows the performance of echo clients communicating with a server through a loopback interface using popular Python libraries. boost.beast client 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.

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. 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.

import asyncio
import uvloop
from picows import ws_connect, WSFrame, WSTransport, WSListener, WSMsgType, WSCloseCode

class ClientListener(WSListener):
    def on_ws_connected(self, transport: WSTransport):
        self.transport = transport
        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):
    (_, client) = await ws_connect(ClientListener, url)
    await client.transport.wait_disconnected()


if __name__ == '__main__':
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    asyncio.run(main("ws://127.0.0.1:9001"))

This prints:

Echo reply: Hello world

Echo server

import asyncio
import uvloop
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.PING:
            transport.send_pong(frame.get_payload_as_bytes())
        elif 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.set_event_loop_policy(uvloop.EventLoopPolicy())
  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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

picows-1.6.0.tar.gz (29.3 kB view details)

Uploaded Source

Built Distributions

picows-1.6.0-cp313-cp313-win_amd64.whl (473.8 kB view details)

Uploaded CPython 3.13 Windows x86-64

picows-1.6.0-cp313-cp313-win32.whl (452.2 kB view details)

Uploaded CPython 3.13 Windows x86

picows-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp313-cp313-macosx_11_0_arm64.whl (210.5 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

picows-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl (225.9 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

picows-1.6.0-cp312-cp312-win_amd64.whl (473.9 kB view details)

Uploaded CPython 3.12 Windows x86-64

picows-1.6.0-cp312-cp312-win32.whl (452.4 kB view details)

Uploaded CPython 3.12 Windows x86

picows-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp312-cp312-macosx_11_0_arm64.whl (212.6 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

picows-1.6.0-cp312-cp312-macosx_10_9_x86_64.whl (228.5 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

picows-1.6.0-cp311-cp311-win_amd64.whl (480.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

picows-1.6.0-cp311-cp311-win32.whl (459.1 kB view details)

Uploaded CPython 3.11 Windows x86

picows-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp311-cp311-macosx_11_0_arm64.whl (210.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

picows-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl (231.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

picows-1.6.0-cp310-cp310-win_amd64.whl (478.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

picows-1.6.0-cp310-cp310-win32.whl (458.6 kB view details)

Uploaded CPython 3.10 Windows x86

picows-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp310-cp310-macosx_11_0_arm64.whl (209.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

picows-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl (228.0 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

picows-1.6.0-cp39-cp39-win_amd64.whl (478.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

picows-1.6.0-cp39-cp39-win32.whl (458.7 kB view details)

Uploaded CPython 3.9 Windows x86

picows-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp39-cp39-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp39-cp39-macosx_11_0_arm64.whl (209.0 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

picows-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl (227.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

picows-1.6.0-cp38-cp38-win_amd64.whl (479.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

picows-1.6.0-cp38-cp38-win32.whl (460.0 kB view details)

Uploaded CPython 3.8 Windows x86

picows-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

picows-1.6.0-cp38-cp38-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

picows-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

picows-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

picows-1.6.0-cp38-cp38-macosx_11_0_arm64.whl (209.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

picows-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl (228.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file picows-1.6.0.tar.gz.

File metadata

  • Download URL: picows-1.6.0.tar.gz
  • Upload date:
  • Size: 29.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0.tar.gz
Algorithm Hash digest
SHA256 ca8973f34269b9d8e2be02e6afb093d8c3bbd3a6800d75afc0958765cabc9c9e
MD5 3a608ea984ed3381e9b15d4604751320
BLAKE2b-256 c9bfe1cac4406369f6bc902eb11fc0068c4aa3d4de31d6397e420260e08698f1

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 473.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 65b2c4ef5e20efac9eaefb8f6b3d4320fbcd39aee9a5f7dece9aa51246d02ffa
MD5 d311ed9ffed85274a828172e0346cbe6
BLAKE2b-256 aa593f60b4b011043d8a4bb981c278541fd4874e275181f3c95abc6046c17727

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 452.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 92af88d57d253914d454512dc887ed1852c15b2b32ee5830088fd6654c9f3023
MD5 744bd1880e2ac2ec8174ef6770b319ec
BLAKE2b-256 e4b5307ef6757dbe1058861bf624e84829c8c21f1eb80ae21ad8d8864b873757

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35d678c10a8a936048895979371ad54ad539209f91f1673c9a9a4b99e5fe2379
MD5 d7575149a65d5aa6a2ca5e7e659ca34a
BLAKE2b-256 d2b6e538d803c8b32f696ea70cab7c1ec9cbdb37f8996653e2320e7f41a642b5

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c85a09a13988396ef0de4568be86165de893b06ef55c9a73024c96862732e1ad
MD5 3a77f84db5e486603e716b8e840d8dd2
BLAKE2b-256 816966c3e97e53ef65b77cf6ad9d0053993b6cd7b0af3aafe33e55745f432f4d

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50bd9e23a4860b147a7352d2c08a129704bb261a7b72dfc567b881c7a1983c54
MD5 d0047fa8060131af00760ff49ac456fb
BLAKE2b-256 6f287b29633f7aaad441f1acf40e3725f60a503ac2f69baac762ed78ac6f83b4

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad2e98d82513093116cd9dacb2a7a098eca712353f1470021c7172ff76a3a7e2
MD5 a7ca28c46807c817d547a8ca88d0af37
BLAKE2b-256 73d4e414e6f978af9223552ceed94974a360c37a925b065c5a0517f77286c045

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb806275d072493de35dee893498e1967fcbfc9406839fa1429dd1c9f55797fe
MD5 1fb2c3b14c72459c39cd92f26c8ad779
BLAKE2b-256 6beac86eb3e83b865b2c94ff282626f28ae180f4a6e97cc96a8f8aeccae68347

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b8e57948b1a6bac5d32832edf3ca2a8ec1987be3cbc7b7ee6c6e82f9474bc073
MD5 0aaf95e4c5ea515d778dcc5ab5044526
BLAKE2b-256 6fbedebd5b88310fdb8ad3a4c6ccc9b9832767fe6baea7f64a5751e47521a5b9

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 473.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 97b68c47a8d1b875c3d704942a9399b05adb9c714ebe61684bdb5b4fecbcee0a
MD5 a51e3c42f899d259126beade3e2434af
BLAKE2b-256 90b4bb6d999c795a0cbf06b0d82cfa17f89e8af63eed483a112380fd7c6feb89

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 452.4 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6e65d5c624a6d8c852f0131b7403ec1cfd0168e8f9c750debb1eeb6396459edb
MD5 11362966245196340cfe42ceb4efb419
BLAKE2b-256 9004c972964b57670c829969a8fee43c67de8dbb15c0ae16bfcaa449d4849fdb

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97600bb019ed24b35b5645397e7793fe28d03963945a167e932bed756e3a386a
MD5 b2ab2263514d163ffab78f2b5f028072
BLAKE2b-256 8af8a3dc08ab4f9cb82f16f0b4518bd0a00689ba56ebeeea948cc99ba196f57f

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 85de074cf92f8d864f0a91ac8a2fa283c727f7e986b639bd820edc73e6c55cf8
MD5 241f8ffe75fb048172631edd82da491e
BLAKE2b-256 ec887774c339196b7217114175d71cc369ddc9e938cad4fc010f863ec3ebb687

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97e04d25e01ba6bfad6ecb2945cd25c632fbf125b35cd4c6c7a707105172e314
MD5 d16c5bcc4d9150d12d654ef20085fe82
BLAKE2b-256 e4a210cfaac838d34ea652d335c4ddc67cef732a079a57bd14fc2c9ee61ff783

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b6bfafe77001acebaa8e12bc8c4189bc5d5b47dd497890b399dd8b4f707f2929
MD5 793312e8dc767cb626861e3d97bbbdbd
BLAKE2b-256 8f9caab7072762431182ddb7c23ef030f6b5e796abafc23a644c6d3160251d94

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90512c641ff3a0ce981fe06f31b6a50c7eb9260e2691bb24e94638f2c13624c1
MD5 9f1f1badc938883abb303d781a059ba7
BLAKE2b-256 8cb55ea5689d11d9d1760699298e49f38c9e46ec0a933f80bdcdba40ea716c7b

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0db9d311b18425e60a180086905eff37895186eb7cf1fec14d19c5e40206d5d
MD5 b9e295c7193764673607186f196cda7d
BLAKE2b-256 4ebe7f6b4b0a4f458b3046a5e7ff860e7aa6379b3514e4b881dca5fe67ec43cb

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 480.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9a8734db80f011e5b4a90247dc8cfb8906257ce824316b1c3a64476ee85fe2cd
MD5 e4922af89be5da0730b2d5df40d07cb2
BLAKE2b-256 ef91cc51d94b52f6206efef43a5fe0c839066395e63ba516a353e6ec1fbbc997

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 459.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 43f6f96f847264b387d67296e487abf351cf4e32de8baf4cc432ec304513a2a8
MD5 a9006592bcadd6cb54a0ca9c8847ab56
BLAKE2b-256 01dd6e61c62ea6340d5c32ffc5cafc0a7ec5705ae30b9fd25c4362c75f0eef7d

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2cc3e9187d60d634f8b4b5448da92d774555ff623fd1592a10e1dbe7b72f5d7d
MD5 8f08ffd11ca5cfb1a48eb22706541a8c
BLAKE2b-256 998d0ae61da721d5ab9951d65464a46f921dc18ff1ca4f3c7ef2585df3adb0d7

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f3f0226305971a1d790b6841256aeaf05990810c096861b2d94a53daad0da8ab
MD5 d06f197d0ee31f18c4ceb132059c21cb
BLAKE2b-256 1cc8e7a124a36e20735fe40ca876391c80ad525551ea3e5ba764b2000cc1112e

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6affdaa721cd02a4c130cc4b198781a768034389b3d667f7183439eedb12c457
MD5 f40f8139b3bf77212bb7948f678298ab
BLAKE2b-256 a0d38af84ff37a318ea90266a23919484c355d1094fa804eaaacf0aa72bfc10e

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 724b639057ffa9e98065e081d3ede7d4ceb92752dafc026746314e812b9a21db
MD5 40a20434c8f6e54f07291f2af0270e9e
BLAKE2b-256 1bc51a918e3959ad87655c52fc7e407d5afa0e41cbb6f9621f5c83aae62e5dad

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77fd728dbbb08a4a7f943bc657a2f3ff9a64d34f1dfd2a8e4b456d961e21472d
MD5 d13a0e961082a08e731daf45facab2dd
BLAKE2b-256 3c5cf65266e927359d3d743755bf9e61f3c6f5495050b56515c025c278a65b27

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da063cad496aa873fdec2af4e724d46167af381ae3b4ed7ee2d72d6c7dea7879
MD5 cbeba2a7a5679d943ed88af6da8ca527
BLAKE2b-256 27872b2998e126a2cbbdcb776a313d10b71ab1d4e71f92c49fc2d5d8319a96bf

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 478.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3e4f2b92a2213d4a87c6daaf47065dc368392cfb285f759a474dc8b224f5d052
MD5 ab1080e742a70fa5cd0998c16fe0763f
BLAKE2b-256 58b5f384b538ebc7b91c254dd4e860a5e6a2dde8ab7201baeb1c0faf42a29a85

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 458.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 39efb9e982120bf68cc4119c3e0dab3e4a664aad265b4990bb8e1f27a85768f8
MD5 eb1c866e6265bd4775a4368fa81b11d9
BLAKE2b-256 b4bc7edceb32ed664b791ef8e33e1b2e52f8c128c90f584137fbe07e5f46f8b0

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b4b5247479035672e4a42a691dde041e9245fe65e3a74511fbead1857713f19
MD5 c4fd4c4cc5b442b0217a740bcb974feb
BLAKE2b-256 412504dd69e315d5d9b879429eded589999673f4ae6c3cdd4c03a79d70472ccf

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9080dcfff06e4d8bd20351b8eef56317003e1b8be8ca9596bb79ef645d9dface
MD5 a381ca443f2d28db36c73da47a8bb225
BLAKE2b-256 31b16684eb7f4a8ea125f5e6b775f24b6ca822c462b7fe7c3079899490c4f253

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efb39218b4c053a523cb1ca0b7faa7d36eb44d2195e8f1c4b131d7e444b7031f
MD5 1a58cb3086ea88c76f691082e8599c75
BLAKE2b-256 be6a80c48e62940cf0d782fcd44e6c8ac4d7c35a1acde12471598f198810a10e

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 14ebd76c3055ee7f303e743eebfa4215c187c4c092a4a5d44ecfbb93b24afe04
MD5 6b5aeb39971ad9fc7b40c1749cfdbbef
BLAKE2b-256 ec5d4f4503003fd42dcf81c749aa692706f3924da71b32a477c676081b270563

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e69339bc6fb357b597ef0cebd4fe5fe604b440f6b99a90d24e7e2ca4cd8eb549
MD5 d84df62e78c0436bf8bcc043b0619b7e
BLAKE2b-256 0fc41bf3917e6fd8a6eae042395e6d424b3a84529e389c74c498183a053ea0b1

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cb756cbdb0b9f561ac652d783cdcf16895ef18546de599a4af24c898d4c07a9f
MD5 88b3b1a63d3a3f65e6d70ffe3ee2f08b
BLAKE2b-256 8b17ef361205496d584bfca3d12d0b6020d1d434a7939519d4cadb404a647a76

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 478.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d7c22805fbdfe687a5deb74395a1f4b9cfc0b532375602e26ac5de387b67abec
MD5 d2997360f7e15c44d4a45b9406b16691
BLAKE2b-256 fda433161669b7296ccdafaa5401e26e8d9c47fa2f08f2c92ce907bcaff2c6af

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 458.7 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e98753e4058dd65f0d22b6cfadbd169f83adeaa9dd045b1b16fd071f4ab0907d
MD5 716ebc7758866cb1374dd53ed542a51c
BLAKE2b-256 c47d8596d70609c7dcc3ce94c2babe24394eac1ec7b7d78419517729aabc1b76

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 351c0f50f8495a1cc25ce30fe31ebb658f1a9aa7e24e9e57bc611dcdd41803c4
MD5 211e48793f0205b4c1d2214518a20a0f
BLAKE2b-256 4113d511f72780ee6b6be3b84a048d7a1dc97887bf48a62cb786e3549bdbe7e9

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 094d5688e64fcda352fee742d8780e833de03d8b709e54ec3fef9ffbfeb731e5
MD5 ea88cb738e1754bd4c8ad5afec5c8e84
BLAKE2b-256 b6139b3f9740630934c36333f3e87b23fc7808995d99e713af8958692e61f869

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8314ad4477c507019ade9061b0e48c57651eb2ec42af7a6f6a77428c02c388d
MD5 f5316abb656f67989d79eb57ceb976be
BLAKE2b-256 ae5644d60d69ac736f23bdaeb58769d60d79732080e7814c129c04634bd9811d

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 43f4f84aaec7e42401ba98b36e5e1d00030e1b59590d5a99404d8a481fc63ebf
MD5 47ca38c21672a27a81b4660fd0b4bdb2
BLAKE2b-256 95d9dbecb3fafeb96aed6565ec5d3332b0be6477ba1c9b65c8ccba4d8510aef9

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be2eac1793357c31c1ce9e068b367d300f51f997e7042147c26ba7576574b1fb
MD5 6750f75c53f6eaea1561c0b169870418
BLAKE2b-256 5d4068be002259d37c00e730ae82749b239d0a2eb92021201924cb226d76684e

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 06e20fb0ea0817a128868d2d595c70a6ef24f2badf374096fbad9639f4df44f7
MD5 2994d7d7e401151a04f3bdd1067dc3d9
BLAKE2b-256 2ac5b06ded2fccc468bd00b0292350abc5d74384913a6f7a5896bb3eb22191b2

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: picows-1.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 479.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9514310851d4645af2c8fc7ca75bbfe9c196852c96905ad5c9fbd007dfc2886e
MD5 e0417000bc66afb551ba497d03e9a7e3
BLAKE2b-256 2be5386b6cf8ef04e03dbf299e32447d677ee6340e168a28f22db3b1c0db54ab

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: picows-1.6.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 460.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for picows-1.6.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 e64d71764ecb7c9fdbf5c25590e507750ac230e3d66996bb77cc17d4a1920494
MD5 fd1b976923b410cc8fe436cff345cae5
BLAKE2b-256 d14c6b258dbc852a973aee42734bad3f36ea0e054398374507b14942996043c3

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 577de62955c4a552837f5723d9221969bfd9b4a4a4c7f0d27e075c6c683d7d14
MD5 4d45c241bc293037281b236441468d5d
BLAKE2b-256 d69ca6f2f61dfc3dc22dad08c814f729b9889bfbb9d0c05716d911726e9a1d17

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f4e0d2620c2a877dc7c3d64ed0e08e0cb85e9a5c7bb9b27c7c8e929a9ffb4a9a
MD5 ca7a624bd04897773be739e74b20ebb8
BLAKE2b-256 e98205393961368a2ff38eede0fa89db43c52d17b44f354057eb1899bd4bf3be

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d6a57afff53e9b318f32cce3d83305fb8e3a036e00494a5c1f1ede769d3bace
MD5 4cddd4d7025d80597f477caee0e6423a
BLAKE2b-256 3e543262421e4e2b481730713fd3ea2c79be1691f76e2ff0fd79e0f374df9d0f

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 faafbfd3d4bdabcf3bdffd8a234f7791dedd7afc8a323b3822fe8deee2d6dce2
MD5 a7d5d3d47d31b2ec843b5c36b92f5c0d
BLAKE2b-256 ab708ccf935eea089b7cc163c0a561d6ae79c7b335c1a201fe7b7c75a7c3965a

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd7c58c4e093ea629a6dab192d0a938d92a5dd3b6f4b60b2ebf0a16f9c2b9218
MD5 dc780c7e5bbaa6929bb578422cbdf97c
BLAKE2b-256 640fcbff2d800699d35f2ae5fe3ca71f0c30ee8990826446460ea6953a0f92fd

See more details on using hashes here.

File details

Details for the file picows-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for picows-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a47a20b1407948336f3b35cef9b102cdd811972c4cb435058e1a5bc2a5117170
MD5 221eca95181abf046bca96cde0b99b53
BLAKE2b-256 29afcb42807389b4e174432f449695079e7e384fa895003390f9c542beacbf83

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page