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

  • Support both secure and unsecure protocols (ws and wss schemes)

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.0.tar.gz (27.4 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.13 Windows x86-64

picows-1.4.0-cp313-cp313-win32.whl (429.4 kB view details)

Uploaded CPython 3.13 Windows x86

picows-1.4.0-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.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

picows-1.4.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.4.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (199.6 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

picows-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl (214.1 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

picows-1.4.0-cp312-cp312-win_amd64.whl (448.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

picows-1.4.0-cp312-cp312-win32.whl (429.7 kB view details)

Uploaded CPython 3.12 Windows x86

picows-1.4.0-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.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

picows-1.4.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.4.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (201.7 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

picows-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl (216.6 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

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

Uploaded CPython 3.11 Windows x86-64

picows-1.4.0-cp311-cp311-win32.whl (435.9 kB view details)

Uploaded CPython 3.11 Windows x86

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

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

picows-1.4.0-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.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.4.0-cp311-cp311-macosx_11_0_arm64.whl (200.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

picows-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl (218.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

picows-1.4.0-cp310-cp310-win32.whl (435.7 kB view details)

Uploaded CPython 3.10 Windows x86

picows-1.4.0-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.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

picows-1.4.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.4.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.4.0-cp310-cp310-macosx_11_0_arm64.whl (198.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

picows-1.4.0-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.0-cp39-cp39-win_amd64.whl (454.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

picows-1.4.0-cp39-cp39-win32.whl (435.9 kB view details)

Uploaded CPython 3.9 Windows x86

picows-1.4.0-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.0-cp39-cp39-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

picows-1.4.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.4.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.4.0-cp39-cp39-macosx_11_0_arm64.whl (198.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

picows-1.4.0-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.0-cp38-cp38-win_amd64.whl (455.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

picows-1.4.0-cp38-cp38-win32.whl (437.0 kB view details)

Uploaded CPython 3.8 Windows x86

picows-1.4.0-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.0-cp38-cp38-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

picows-1.4.0-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.0-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.0-cp38-cp38-macosx_11_0_arm64.whl (199.0 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

picows-1.4.0-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.0.tar.gz.

File metadata

  • Download URL: picows-1.4.0.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.0.tar.gz
Algorithm Hash digest
SHA256 c70c4f92e65579a42a950ba91b8d4d7333b5246a673f5cb079774f0152199156
MD5 4acb303eb1315c840363cf9948ea63dd
BLAKE2b-256 7f2567dea6ca22a037dd0f3a4c739767b058c04171765cc98409f0e70238af6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 92318f6f077073a7e1ea60931767b9e87713d396d33ef81f5d96e4be3b653b31
MD5 d4b80462cc1a605b0a97b7a7df760098
BLAKE2b-256 9b50a20aa25d1352c7226c4eb72e0d086cafaac8db9b6426dd9060f81d69cf72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 429.4 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.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9dce24ea8bd1a55afde20ad3a5825bc07b7c87d876fbd72ff6c4824afd21a79c
MD5 be358e11ce2537cca4e441f9694a10bd
BLAKE2b-256 f70602e8b4942d7c6a8f91c51b69643d56ef04c2ed494a43e88dbf4350d0dffb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 364feffd11529f864631c5496896759cbfedc8393a7a924b9cdcb3393167a380
MD5 0665ef93c3e4f552b03368463166567a
BLAKE2b-256 184a641495f777c44c77ed6be54911b33fa684fbe3e7057cc5545af0ec7429c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 745b7777fa4c6336b05267b3faa4d352f94504b63f8a2fc075752828919113f1
MD5 d5d00c53f5a42a6857131c235f6c7c17
BLAKE2b-256 8c09ac309b23a2cae86c7928f4b1be503a16a2433608b2da9708996fb50c3548

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8905ed5ae87327b86a0c37f736d1f69d552d514b42cab2f0591a9945aac41c2
MD5 bffd54022e85002854cbf4f1fa8b1438
BLAKE2b-256 e75a718e1b0177af1c31c637d69630ecbc35f39bf38769c94a07a4d78edc3c51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32c598fffb967f2e35b80747806c1e851b335d827199224cd63ea7ccf06f9e9e
MD5 9b46333deaa2023a1db0c5330b89197a
BLAKE2b-256 8882485de525fa459d6916527840785fdda41b8e0340ca92506fee1bda0f03e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1f8efb9104b8cf187952fdb7f236f9da064d366fb2f50d9aef68b81ec491e93
MD5 baf62da565dcf4be81544b28c2e38415
BLAKE2b-256 7c4fdaf7c35e7f64d59c4548dddd7b34aa13a86fb54bea016ee7f1aded524c23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 87ac3d698237542ce1b56b0e38df419cf60d1d58e9d4381d2cd8c7ed443138eb
MD5 594f7b39ad72df63809171ed19f0ae4f
BLAKE2b-256 d08b90317373620f3f711b986851a858e0b6f911a308b1f9312efeb11668a2fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 448.6 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0fa6971484813a75f6e3a927cd5181b384604ef89e16ce04f856eab80157223d
MD5 cea73218e6bec87125a3dc08492cd8b8
BLAKE2b-256 68847448090ef8ebb3318659d212b84232a8f64bf91c80e06d38b47bdf16dd60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 429.7 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.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 1afde154ffe444f1183b2cdf975907d806d2898b987b8d62d3a4c76a42a3c376
MD5 cb7a6bf64e25d32fb00304dc9b082e67
BLAKE2b-256 bc659174ff3c751bb54961a289f90afd24ca253f54ea8c3de6491882690e569c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56c79f9eaf4150c497407f6362c1b20384653b68ed999d17d713699f54adbdc2
MD5 1660d07f8f52f3b2f105f9fcdcffc07a
BLAKE2b-256 806ffeb38ea99db675411ccb61f936adda7cc8e2bdd7ecbcd8ff3d51384d1b32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f8bdd4793a28261f903deb58f8f0b6ea2206ecafe15e8d4037dd07f144defaad
MD5 9aa17c125bfb2efba1a33d2c5f0d3d80
BLAKE2b-256 666001967d6ce6a343b2593e1730b60f4ec32e5300f27739ebdaa4465b13b095

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a711b424f73c038284e8116d074bf566e268a9447fb8716032641ab77033cdd
MD5 66d9fc26213f06dcb14f62d493a78fe2
BLAKE2b-256 0ea0c71afc9dad84b3a8679de4668f7d7b5976d2561853855d13af6b346df9f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f29ce9f57c6dfa49135d0750e7a74beb5c4e09ec9d34d4e422bc3ac765e75c56
MD5 1d3b89e9bd5e2c76ebc09e89adcdea93
BLAKE2b-256 743b08a923430edda4014b5f2d83d476dfc7f5bac191e152e80d948d4dd341fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8c3e478193211361eb9e932574890d2f6b31faa5343878bafca12d40589530b
MD5 35c57eca328a32513579ba7666bd2cae
BLAKE2b-256 16ce1e9419b2f9f6a113c363145c47fe6e31b45764b5a4399c24f0f09eac92f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7319384ffbda26e276c64591ea662bf94e304b5cb6d5eee9ab5eded757fd9dac
MD5 cf6543d21b18b51e890787eccf672378
BLAKE2b-256 06061f555e2b67650ebaec301d90cf55cfcfc4fea0b1bb5e1c0c556aa5ccd51d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b9c6271eb8f22a1b54d22ea7ea6729fe7f17f78d6ac296e332fae7a2c5d44762
MD5 026ec3b24a3183536b841667fe7abb49
BLAKE2b-256 3304a97278489c919a8dc7c40bfbedd0eff67943dc341c4e6a3ffd894823b235

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 435.9 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.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 8569ea9de44c369173db778649fdb14cf8fb65988bc6f4a3c3c7d3bdb2fcdda2
MD5 3c618de32507fc684b8a52cbefed18b4
BLAKE2b-256 d01241432e06bf33e3febee92ea9e5b1f9456a43d5a2c0290c8d11fe6d0abb5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 390bdb31cd6ea89f313b0d98f31ed61fa3be4750092f274a2a8a7b36891207f5
MD5 9bcedfebcca242e313fb599c8dd89bc9
BLAKE2b-256 9cb87f471e53cc92d18aef0a59e418c43fe31ea05a1660ab65f29a8e0c51f121

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8319fc8a5ba1a56100043660a0a7e7355ee928c1b29826ec5632a5e9f0a84f80
MD5 58a895dfcb74db0dd6357bc45f85a8fd
BLAKE2b-256 e5d3b0a3f45153830770d9b235ad3ca174fe2c48e5b93bf35e3c4ae6a3dc6d2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7232c00b67a177bebddda9d1d1c0bae941770cb25949932e01f80441d37d2f14
MD5 32fff9db38d346c0580532ab1ad249c2
BLAKE2b-256 e69880a2211d32a6d969f804b24e815ae6510d2526b8534dbee99f1b8db5b6f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 752bf3893516e44e577053c564c6b822b2b25a48f9aff8e2ccbf10c91c113174
MD5 f205f10870a08345173928f031e63627
BLAKE2b-256 6272e668f5f9bc6ec77380a03fad800a6328d7694b418517f9adaf3656c58cab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a2719258c374ec79c970da5e63091ac9670f8ee9aef38dfb4b138fde162d8cc
MD5 a34342917038160025252e414d30968f
BLAKE2b-256 5e6c8f8ee1a0990e909598defcbe73e684fb468843bbc0e4d4d098df4cd5f9bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0eceae6dfbbaaac9867b08a275f1e002b7b6282be149d56c2a1ea7abc49b2462
MD5 afb85434459ab10da1a143c103c1ce27
BLAKE2b-256 0127d103ae406d12ce29f54393cfbf3104b9dd4a80c6c1b2c4aae15ea5c06638

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4e775877d153b1b9610e0a612c9efaba02fa5148d9cdc410a29764759548ef9f
MD5 7de7c70d0036ee27afb46d8a84b4d300
BLAKE2b-256 8cece9a476b1bca1b1ad31e53487d25a0da5d90a8f8eb4176c7aa46aee307f73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 435.7 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.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e9a04d540e841b15ce6b9f6e602526d60fb4c7fbf3de8ce4a950f94423f84a9e
MD5 9125eb0a2f956f2002ce0a09161682aa
BLAKE2b-256 103a28e586c3545fbdc84f1a7978e876b166528b4f14f8f7918b3ed698c288cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3993c8508086b34174c0fee34119594b1a7456d9304216cd3c6b9068ee775ef1
MD5 b52008c6c7b3bc13771495bdeaa6ad9b
BLAKE2b-256 a6fcda652b5522353141322684e6e55e7947de8e469681294513d251e43eb066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dd005fe79487948c2bd4d7126d733430fa2a0e48eafb3b4f1183ebaf00b7917a
MD5 708b7cdd05bce24182a187b134981e53
BLAKE2b-256 35d594529c4a35ee423ab3b7797a0e902c6db95ed1f9cdfd424d0cc544ce3ea7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8571c13c613702bbd3488a8cbb6e536e81ec14d65a31bf7131a2af033acd310
MD5 79d136c0995ae9d7c29623ddb67304a8
BLAKE2b-256 5408e43621821666a764c02607a1c96365cd65a560679f55a8ed4bf4b0db05b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 17ac496dc80ed6f5507652cd4522ca6f17ddeaded05da2251423d9e763e02dd6
MD5 8f229fe3800607556125360d90db9c1b
BLAKE2b-256 7fb658e8bd66ef45212b6ab0e2bfffc03254749602d44d051b263b24e26fce5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bd48b71b29e18b710129086c4f35587e67251b9f44c5824f2637c92f8fc3f5a
MD5 827721e73c8be0b3c8198d229154b772
BLAKE2b-256 ee97588d48a8f959a825a2d6a073c0c1bda7e8884317e9345aed092c07fbfd20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 713436ad6d617b5b9252874091218fa365959bef8f5fa56d62c781b2dc203bd3
MD5 61c4d8d696abaac77ae8f1a63727466d
BLAKE2b-256 08ddfa9b22a6016c76954bcb78de6ea4ca164deaf3d417b7de73e1d2cd0eded6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 454.2 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d295a9fa51c1caa4c843db35293ad1aabf983aa6f4835a9b6eaf5785c585db9a
MD5 759ce5a03c18ba658e97d37660fbbe25
BLAKE2b-256 e1f7338c40966515ad7dd3e509e04a66da7df0595f681d95286f5536d880dc1e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 435.9 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.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f878bb9ae8b73bb9ef0bc62455212feac0002064fe3abb30e8c480110c36b3c7
MD5 8d2991192862db9b5f95debdff218fe5
BLAKE2b-256 3af5bba617608d4d10475f982dc4243ec1f2f92538e1ef095ad35fd1b1f226ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97a08140fefc9647941afaf95462148f1330cca74c3f5d2dfdd6cdae1d1cc30d
MD5 b10ce09dbc1bf5834a60d5f0e59ef35e
BLAKE2b-256 2da5ce6cac61fb42df8dfdade5525920592997c71bbe0623c7dd4818c951c090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fb6639fc31b889e640c503b6534c72abd18453cd17cdf485b92294f742ff65c2
MD5 21484081eb869733066433e03c39a396
BLAKE2b-256 2bdefca74b3797b5b6c99c8706afe6d15ba0d48a14eaacc28a28c661c862e89a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 908390f20602fa55d07aec44f4e34135eb489904a7cbf80c72ec76e1694a15e4
MD5 3532a0ebbeb18f263ef47cd444e0389a
BLAKE2b-256 b267f67f7f7add8da71afbd38afc11ba1ae6c7e376cd9b2475c8d2849f5e99a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 82345c46799b9a7bf87519aa9a58922c7258deb4018c1b8ae0ab78e4a0eb9ac4
MD5 0993049dd20c6985573e9d1cdc4ae2f5
BLAKE2b-256 90e18b69ca6e47d8aa0223d0ca344d57bc06d31efa79ffc288363dd9ba719fcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1a1f098ff0c373fd449d11c4d7504fc304ca2c381fdf3b9f5a44ef15b558f9f
MD5 3ceeb9bc0d24c0cc7bdc760fc235addf
BLAKE2b-256 b5b2e877956867a8b4104bee6e71345889a84b02dee47a46284be8e89229e7ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4615a46ac30446239cfdb4913f5c80f0ef722135fc83c7531e3471a985aeb265
MD5 42bea3bd1a3937a6a9bb1ae45121d140
BLAKE2b-256 61fc79d1082896cd6a9f1a7517e677f3ed54460b3d79c052614b9b9a6b3179f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 455.9 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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 de4c497841c1c9826d2d8c43b9a7b428ce22cc3e8352e23745d19b020f49a0b8
MD5 2be9a88ef390d15341986107ba4b733a
BLAKE2b-256 6f95f9b6d8773f0f706c4be466fa7285b361dab97568138aa9ede5d4ca3743cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: picows-1.4.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 437.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.4.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 aba4b1eb052724707d03b5a9712815d32cfd3f6b67a123223f8e1fcf67668f04
MD5 060de8e7b915e30a361fa2b8f442e424
BLAKE2b-256 353219cd55d8eaa66b3bbe4fd51899981e66e1e598f9e6949015ca5d38fbe359

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fcb524553b71d5dc3a3690a6cba8dd39eb07f3f164ec99a85077730012613e3b
MD5 622f164c7fcb8bcb6905833cf894649a
BLAKE2b-256 81be666d670fd16dc4c047610667b4d2317f97b627383a4b8b838534a8f34578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6868f11ac233c8fc430fb7b9c484326dc396be257729e0d59636af5fd103bb00
MD5 885b001da1d13ba69e74d5f93ab807e1
BLAKE2b-256 c14f83d0479dac250958ed3605507e45a77c1225c9c02bac36105b7b15836cc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb1e205b37182da8de392f5de8b2aaef0a5166cf820810252605e5cefa4bc76c
MD5 a01b83ea7039397e9865603d99842e18
BLAKE2b-256 0a4d41251d303fc6d4d0c5b09a4e983f06bf2aaf6d533decae010686f514cd3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 920e9f7ec3add9b6934053c31dde16b8bd36e1f800ba4c1514fab1bcc83dbbf5
MD5 b71de13fb2cb7fdc19ffb0679a8ef4c5
BLAKE2b-256 35c18feef6e21e170df1ec6c4e64ddc67869f794f05819b89b3fedc1a855e1c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb58487d09011feda555e337c8fd64e99444988e838c9d87965c3649b6533a3d
MD5 665e823702ac9ca370377858c77b87d5
BLAKE2b-256 e6f6c436d3f3824c779feaf92c3d81ecec4d6626a72b35209d6b9f29f923cd9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dc908b870aef5f33d0b9ddb7ef30b2f0275c8bcb61fc053a7687a48a068188a7
MD5 c81e82c77f35704034007e951a2dd482
BLAKE2b-256 bb2efe70100d0c8a11241b08836418e73a8b6d09ee2debfaac2aae8eeadd85db

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