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.

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
    $ pytest -s -v -k test_client_handshake_timeout[uvloop-plain]
  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.4.1.tar.gz (27.4 kB view details)

Uploaded Source

Built Distributions

picows-1.4.1-cp313-cp313-win_amd64.whl (448.4 kB view details)

Uploaded CPython 3.13 Windows x86-64

picows-1.4.1-cp313-cp313-win32.whl (429.2 kB view details)

Uploaded CPython 3.13 Windows x86

picows-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

picows-1.4.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

picows-1.4.1-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.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

picows-1.4.1-cp313-cp313-macosx_11_0_arm64.whl (199.6 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

picows-1.4.1-cp313-cp313-macosx_10_13_x86_64.whl (214.2 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

picows-1.4.1-cp312-cp312-win_amd64.whl (448.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

picows-1.4.1-cp312-cp312-win32.whl (429.4 kB view details)

Uploaded CPython 3.12 Windows x86

picows-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

picows-1.4.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

picows-1.4.1-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.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

picows-1.4.1-cp312-cp312-macosx_11_0_arm64.whl (201.7 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

picows-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl (216.7 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

picows-1.4.1-cp311-cp311-win_amd64.whl (455.7 kB view details)

Uploaded CPython 3.11 Windows x86-64

picows-1.4.1-cp311-cp311-win32.whl (435.7 kB view details)

Uploaded CPython 3.11 Windows x86

picows-1.4.1-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.4.1-cp311-cp311-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

picows-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

picows-1.4.1-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.4.1-cp311-cp311-macosx_11_0_arm64.whl (200.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

picows-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl (218.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

picows-1.4.1-cp310-cp310-win_amd64.whl (454.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

picows-1.4.1-cp310-cp310-win32.whl (435.5 kB view details)

Uploaded CPython 3.10 Windows x86

picows-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

picows-1.4.1-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

picows-1.4.1-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.4.1-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.4.1-cp310-cp310-macosx_11_0_arm64.whl (198.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

picows-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl (215.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

picows-1.4.1-cp39-cp39-win_amd64.whl (454.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

picows-1.4.1-cp39-cp39-win32.whl (435.7 kB view details)

Uploaded CPython 3.9 Windows x86

picows-1.4.1-cp39-cp39-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

picows-1.4.1-cp39-cp39-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

picows-1.4.1-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.4.1-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.4.1-cp39-cp39-macosx_11_0_arm64.whl (198.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

picows-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl (215.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

picows-1.4.1-cp38-cp38-win_amd64.whl (455.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

picows-1.4.1-cp38-cp38-win32.whl (436.8 kB view details)

Uploaded CPython 3.8 Windows x86

picows-1.4.1-cp38-cp38-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

picows-1.4.1-cp38-cp38-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

picows-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

picows-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

picows-1.4.1-cp38-cp38-macosx_11_0_arm64.whl (199.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

picows-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl (215.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for picows-1.4.1.tar.gz
Algorithm Hash digest
SHA256 1be7e1891f4a9e8d126934547549d837d8cc13c03b987ff9d98d5e3ecd821b7a
MD5 0e113a6b2a271b37ec692e5e36f10e67
BLAKE2b-256 87c2e4f8f7f1cf305e842bef04faaf8eaaa58929b5def9a579555ebfa4d49149

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 448.4 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.4.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b85b25d2972be32ba17f767ce5f00216903e23cb0eb502ab9aa4852a89dc046b
MD5 2fe0677c5e5e39a6b65a98c8948e2f64
BLAKE2b-256 ae8965db60c97922083d48ada2ed199dfe3e93f4df7f368ca9db720ea04b17c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 429.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.4.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 8a28d30c21c2d3f04c3b174ebeabdc6834892b74091a98575e6123aab48704fd
MD5 c25f8828e497e6d7f9152926dcdd800b
BLAKE2b-256 ed510133c94f1d43bb71a0af93c729829eb0a8efc72772108e013cb5c4762468

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea4767aa3972a2fc85b29c462cebc46c43310c7683400f4f9163671716f8a9bf
MD5 9d97a967964c4013dc152082aba0404f
BLAKE2b-256 806f8d2a63d483a622d3384ac106279c3a71d7c96493f3d4747795380fd3c7e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 04903b8cbe86966aa203b42675402b693fa6bb1b69f088a12366ebdeaf2a6660
MD5 329f123b9b49a146bb71da1b5a88fc09
BLAKE2b-256 65b2d9d13b1fc860ddcae291650b53b3fadf80f18e2c0931129e9434b31c9d87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2fc881ae9b5b0312884d90ecc17ce2ce73cc31a3649863cfac2081775b8d1bbc
MD5 3966468a7c1d77fe55de9dcbfc103f8b
BLAKE2b-256 8d992b5d63e9dcb9c85b44dab964242b1338b69708a4091c5f31a0d44049353c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7fb47ef6b7ee3142947b32da5163fcf739d0877c86841e39b2a5bcb609dc0560
MD5 f6f6a83fdf387d04b073d8c5dd699135
BLAKE2b-256 83fe6e7881aaf2363de4bd4f067003276edfab000cab083404bbe6d4ba8fb4fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7710931ef85b1ba24f59c9dff9a239e1bdaa5d424a25c497fdcb8ba2d0c7c705
MD5 42a0440dfeba014d837e5f7c51964a1e
BLAKE2b-256 5d39c03dcb784f8d2b551a7257acef5c372681ef5d0667abbeeab813c6a5d3f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 72d3e1a1c7c956fbf52fc32b7dfb7819e3c65acf148c8016ae66f3263305e94f
MD5 6df90ef37992da5bf19fb76974ed8a95
BLAKE2b-256 e6b70092b61fd61225f25b57c1827df5207d630be5206e1b21a4192f05ffb761

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 448.5 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.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a0e92043c13dcecf91052bb9fc34c6ad10b457662813b1bcc062cf1d30b5d2dc
MD5 a2b0e71f38ec8583228b58c255832ce0
BLAKE2b-256 32ee31c043c8f6f5945bb6aa18a34225a1f3e145671cd43459a0e62d9fc23c47

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 429.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.4.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 391f42d9038381f4218c8bb6bde27d013bd49bbfb17d4b4f06738ae344a20aca
MD5 767293950fc0e6861bd82218ff9d7f41
BLAKE2b-256 5e6bbef54253e0ed5c34b433ffaf251742e9b68527d07522352fb3843ed4adb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 42b9953cca1da9f97978deba185c8486640026409dbe9cc5d2a2442bcede3f23
MD5 99958b49be891080a7d4ecad6c3c3d52
BLAKE2b-256 905560da0c4976845ea12888706410fe0ab7392c4331f5d6f44a49f97b29a9a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d56fd3ce8aafeadaa036e9ccfca4392451513e74140851e6b15994ce6ae68178
MD5 87630a07cd11bcc49fa41ed516546265
BLAKE2b-256 af121e328ab824cbed3f590099d665c7a92fb1a24ada8a64d123a2d32ebf901e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78185d66df2ce7e26fbc81e23d29f5f1ce21d3f9ccddec3b143738a5d5a39d2c
MD5 410e69aac021786c15d1ec7f4869efb2
BLAKE2b-256 6c0ccb0bcfb3fca245bd791049622425ffdb34cf631a36cc3c8e8413cf9e956f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 73ab53dc348d33bd6e47b729e9098a9f3e5088d98e3c7d28b6440c94847cb03a
MD5 b26546c6da9ec97e4fd87c013379c661
BLAKE2b-256 7e0830cdb55820cadd12d247288930abb5edae5e575146ba50d405dca36bff66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7f84ed6ee9a290d42ba4917f1bf86307132a8b75bb4b6f9d3af4501ce0ae140
MD5 12c6dafcc07b4a1e5628a3be305d2e82
BLAKE2b-256 65a5f993914340fa237129ca92c554c0cd6211d63e2d09ec90247d984d298a73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ad65279f0a99ba161013de0acf179295daea03f79d8e9168992edd78272af92
MD5 10bed49cd7698bb24063dcbf7963a70b
BLAKE2b-256 c54aeb7b24e39a3f791bf273ce7f5e6d5032847842d9c0e2652ad76f763d256a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 455.7 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.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c39f20317276e9dfef9330165eb60750addbbfec310b4c4cff574548175154b9
MD5 0e4edada5eb8ea7c56582288f986d559
BLAKE2b-256 6f56c6398c67854506c3d167eb86b8bbd27641ba56fc5ea3e76bfcb37122811c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 435.7 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.4.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 fbcf66fb9d12bab348907d703ab971362e705d05108c54aab8bbfde811656a0e
MD5 eb22bdec534b87114f4d2887f29e232a
BLAKE2b-256 6ac57e2e9e64a345767ef251cd55bbcc5edf6eea73733ce026bd765f9418e7b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cd0eecdf61b1671b1ffbb93a3f0e101d39ed08cce08ec952858416d7860ef15f
MD5 ea25d34e753279539d1a2a90337b3c9b
BLAKE2b-256 9606277d3b9e492d232b9126280790df865b04a7ce8aa40b6c178bf7e4243e38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c64d8aeaf886fa3b00686aedfe057c08a504af4b9f90a8837db9b6499c29b081
MD5 8b201d7c0cd1c690b90473440057099b
BLAKE2b-256 cc3dd47d93432dd4422f5e45f458b7f9f066a0bae2100c613a7bfd9714e80151

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c80c2a3b8edb25da446b0c23988cc5d7d2dace058d80cdece5e853e839454c5
MD5 32b59554c7a2983d6d79b860a5c95a6b
BLAKE2b-256 128aa8b267380fd899dd4b88b7ced0c6f8242e169454be290ccf41ad692c9075

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 19e5ab98438eec4c0bafe307543a4fceb0de1f38f20ea0a82e9f190efddc8564
MD5 6dc66874f26bddec145ab5225b0c3aa0
BLAKE2b-256 856be0f4d53b33bb623415cbb458af3a96b264ba6e7232b7e4659b9b6accdf05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfde294d1f0fb3eced42dc605b6e11365e1e3420f9b66d5c634728548bd0234c
MD5 fc2023a2bcc2cc8331c5c2a2dc0dc19b
BLAKE2b-256 f07b92df0c1c134480eab1013a2e3b01fbabb831c8db4c5e48ae3373972549ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 699030d5f4c1b6db3928582495ef2c6ee0a3d49375cc07e6bd15eb7c22ecd826
MD5 5a1f69a191def662514e7828e9ba4947
BLAKE2b-256 690ad6a111beb169f732248837c654bcffb8bfb64a2b9d69e7a58cb504fdaa13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 454.1 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.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1c6539738ef9232d46dd7c02959807315fe690dab1b13fd70ba2cca16400351e
MD5 8e1c82b4c55083f4051d159db7325c4a
BLAKE2b-256 53e8ec2a274100a940677f13b050d1faaf0f201670d0ec2efb4d34426b194650

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 435.5 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.4.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 c4d6a5e2d146b8ba2420848ec9fe94a3c3183c827091a2abfd96f8cb35fbd82a
MD5 02d865d892f60e35440e25ba0805324d
BLAKE2b-256 f09e34a64e6d41c4ed53e7652c80c7b3297fa6e7c1be3fa3a97877922eb52c93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c0b97ca3ad420418eaecfc9617c0ae42b85e88367acf9a7b007e764d4241172
MD5 d815061f7d2f7b34e44568b6e771566c
BLAKE2b-256 4ea76f64d2fe239a8274d17f2895bdf0554f3b3336e1614755d4602a3a0b6d66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 91aeea1588b307d305b5dfb66eb8bdd1428e4b95518cc7c53a310cfef7d91699
MD5 b8bc9f6fe9bafb119c46cf656879ac73
BLAKE2b-256 cd689b95c9f5a78739f8584b5d20f0beb28e5a47884ea28dc4be30b4c6954081

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 602db12776278f1d99a7235d7ee05b59ff52dec198dbb0a7d1fd572d64fef51d
MD5 5c4f782ec01be2b8456b3bd431df2b09
BLAKE2b-256 a140504ce1a5af3cf377f1b8027fffb146427591e6a7cb1f0c32b7074279730f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7255588550954c533573816d38070beae2684a3490fd90b644ea623ce36bc6f7
MD5 a6df031da369feabe4a2e4cf284cc521
BLAKE2b-256 4c21ddb7c6db3e0e5c98205047c27c01c10bc6d6b9fdf89f1ed4eecbf0550821

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a3d02166c0acefa6a293d8810a7797e702cbc90cf76093224def505549b06ec
MD5 4ec8c570a2f7bc3ecf54d080262e8c3a
BLAKE2b-256 1b239af6ea0fa1b60dcfc6e59866a5c8b0e4670f1a0f1d59d764f3326603e900

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ba0fa0fc869376fb003bfb16b84e8445fa73c62c9388628eb1d351c3e9eab702
MD5 7b765d1a0f171584bfffac60fd1acd27
BLAKE2b-256 83a40e40532dc8ed155a3cd779a122661dcef1202fd104200d4d21f6ffd8e879

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 454.1 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.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 449a3500c860b2b192c36796f3a64a644802a11172f9a871b90dc5791c3fe2b3
MD5 6932df4b4694b04b5dd3da1b8fe7698b
BLAKE2b-256 2fdbb677b28b3e0c1abb8df670d9b3ad3d6758c38c3f9a793cea3acb2bc8b699

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 435.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.4.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 ada9e5205d43077e46660df861c86ccc6ed0fc4244bff74696a28cadb21a21ac
MD5 4dd39c6b3fe3b96175792217cbb5b25e
BLAKE2b-256 d5aca80c480b4c6c622fb3273824ef4123f3d588c59dd484930eb497421f1bfd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 31f5c82f76206ca7adb72b0c85020ec5d1a89c6dcc4eb55a94639d1078d6e995
MD5 22626df8548e20a7e903a538b3167faa
BLAKE2b-256 89320ee5477aebf63372268112f0f4edfe2becdd09ea128fdd43c16926a6f1b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e6f25e21873111fb5d52dc8ed02c97787b559079a304cce5d2e059ca4ccd10c0
MD5 a3a03efa190059fb860d307f36175cd2
BLAKE2b-256 d61e3e8fbf759b359b0f6729ce4cdebc9d27ab8a266b48024d8153cd8a729b48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afc6086099150d2e332b5482536f3d0984e1c10439db5c5aabf9e1491a1c3bd2
MD5 fcc6c0cb121e4bf21f81604926372108
BLAKE2b-256 ed2fb99e8163814b0a8461ac419098b6074ec454075a8257d1940ae4d2ed5767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 605da7fa7b0933d1d35f128a971b1941e2c7d860a1a69ab5c30e5c6b646fe3e2
MD5 bdc08daf3ab4ee769ffc607f97ffe39e
BLAKE2b-256 4310e8a78e6d1a0692be7acf9beff232318aa5da44f489f92f8569619f8f2a07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac9f138506f539593bba10338fbaa6a5251813131b233fab8089ea34fc8eab63
MD5 d2414a94ec7995a4ccfd729374acf600
BLAKE2b-256 2c8fcd54a602b704788ceb75a098214b68b83d83ec8e4f744177751163c3cfc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3117d169a41173fa320d2eb29e5f6ec3fa71d8c8e02488728733b61234921d81
MD5 ac4d33018411966d00d1ff0ccdabd6f9
BLAKE2b-256 b0b294b552eb5b194d2195183cba81dc7b43e9e03ddb5448b3b6dcc78be69577

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 455.8 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.4.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 34aa18b63894d41d3efd7e24727b6b53f1d21725f87017db77c966476174ca6c
MD5 584ab81c96b3a06df8116bb8aea7722b
BLAKE2b-256 47a99b189bf57e3c0c3ace2b2dd44daac0266ec98412498062c87d18706b0e78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 436.8 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.4.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 8c3aa0743c9171c3084d050caa0352f3974d76dc9e5d977faa7d0746ce4516f5
MD5 036d1732aa3797a8e7eb77e5dbd0e04f
BLAKE2b-256 d111b9ae2d0aa937ebc7c57eed2fb93a506c655053615914e9ea07f7ad7270f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fef1ce7e7b5a3f9cf8beb20ff51541d2330c7d9b667a3da5f77fcbd2d6239490
MD5 58a0b8ce691a6e26a6643b47e9ce574b
BLAKE2b-256 4e5e5dc5e2651f9dcc326d831edcdc5bd16056da677543465808fcd4c5ce7174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7e4c2684180dd553ab4ad9473e86c002ecc867090a530c49a20e3a63b57036a1
MD5 49e238ed538ee2ad7663b111b9c84339
BLAKE2b-256 73befbeaafaddbee2430a0b7d7022566c413430214be347ff31694d794e2b375

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8b1238edd0d3d60eadf64464c1fa77bfab3b88ba8addc1d3cc4c1a5be591487
MD5 4627f41092db708760a023dc5252c60c
BLAKE2b-256 1051e5b6ee357d6b19038a938c807d850213aa03c1005df13121481e9ac52b18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 93620b60e0237cd106de9803f373f3a3b008da7f2a39bd71993bc0a54f2e33e5
MD5 2d514be834550a60b92ed0470b8f566f
BLAKE2b-256 8746ef9450066d08d5fec947aa8e8ad5e3c0953be6eb9bdc28b4298fc1d0201c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c59c10e30a0d532eb2e27956f91a1b58f1031a8a04573839a67232efb8522013
MD5 024cb9e973f2abaf13b6261ce046ab69
BLAKE2b-256 51dfcb7d09cc3c98abd630482112e6fc59ead4b73a1d5a734723f0e635e4957c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 05ec73da7c3b06f24a2d0f5e011ce9ea45bcda44a69ef505cb8fcfd215579bae
MD5 9768dae2d93c8bb60d8eeced98b35ce4
BLAKE2b-256 f1cdf4d5d217580a207606f0f22826782feec48ffacd8c2f75b25d53a443bd79

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