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

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/

Rationale

Popular WebSocket libraries attempt to provide high-level interfaces. They take care of timeouts, flow control, optional compression/decompression, assembling WebSocket messages from frames, as well as implementing async iteration interfaces. These features are often implemented in pure Python and come with a significant cost even when messages are small, unfragmented (every WebSocket frame is final), and uncompressed. The async iteration interface is done using Futures, which adds extra work for the event loop and introduces delays. Furthermore, it is not always possible to check if more messages have already arrived; sometimes, only the last message matters.

API Design

The API follows the low-level transport/protocol design from asyncio. It passes frames instead of messages to a user handler. A message can potentially consist of multiple frames but it is up to user to choose the best strategy for merging them. Same principle applies for compression and flow control. User can implement their own strategies using the most appropriate tools.

That being said the most common use-case is when messages and frames are the same, i.e. a message consists of only a single frame, and no compression is being used.

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

Uploaded Source

Built Distributions

picows-1.3.0-cp313-cp313-win_amd64.whl (418.7 kB view details)

Uploaded CPython 3.13 Windows x86-64

picows-1.3.0-cp313-cp313-win32.whl (399.2 kB view details)

Uploaded CPython 3.13 Windows x86

picows-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

picows-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp313-cp313-macosx_11_0_arm64.whl (185.2 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

picows-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl (198.9 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

picows-1.3.0-cp312-cp312-win_amd64.whl (418.8 kB view details)

Uploaded CPython 3.12 Windows x86-64

picows-1.3.0-cp312-cp312-win32.whl (399.8 kB view details)

Uploaded CPython 3.12 Windows x86

picows-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

picows-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp312-cp312-macosx_11_0_arm64.whl (187.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

picows-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl (201.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

picows-1.3.0-cp311-cp311-win_amd64.whl (424.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

picows-1.3.0-cp311-cp311-win32.whl (405.0 kB view details)

Uploaded CPython 3.11 Windows x86

picows-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

picows-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp311-cp311-macosx_11_0_arm64.whl (185.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

picows-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl (202.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

picows-1.3.0-cp310-cp310-win_amd64.whl (423.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

picows-1.3.0-cp310-cp310-win32.whl (404.9 kB view details)

Uploaded CPython 3.10 Windows x86

picows-1.3.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.3.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp310-cp310-macosx_11_0_arm64.whl (184.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

picows-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl (200.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

picows-1.3.0-cp39-cp39-win_amd64.whl (423.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

picows-1.3.0-cp39-cp39-win32.whl (405.0 kB view details)

Uploaded CPython 3.9 Windows x86

picows-1.3.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.3.0-cp39-cp39-musllinux_1_2_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp39-cp39-macosx_11_0_arm64.whl (184.0 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

picows-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl (200.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

picows-1.3.0-cp38-cp38-win_amd64.whl (424.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

picows-1.3.0-cp38-cp38-win32.whl (406.2 kB view details)

Uploaded CPython 3.8 Windows x86

picows-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

picows-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

picows-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

picows-1.3.0-cp38-cp38-macosx_11_0_arm64.whl (184.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

picows-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl (200.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b8bf8b87f238f27c3b1bb13918d0101aa9fd90b76ff66eeda162256369e13b40
MD5 fb02e1f60b237f040bccda725b9a9f76
BLAKE2b-256 1a334523a7fef244faa1c24cf0c5c30f72cb0112d456092906d3bc85dff987c6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 05d82a82a7ff9cc5b77490c3bfea60ccc27f9b97e5d7da0725a5ded70adb694d
MD5 b078680cbc048f0a7cff3c924e22cace
BLAKE2b-256 d305604c0516e0b19ac321f28a591571cd7345f63835797c4ca26bcbeb24c392

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 b74d8338b6e0fa4e14557515d29ab79df0c9119bafd979207e74cf010768b523
MD5 ffe287f7cbd4c822ffacf097e6e53982
BLAKE2b-256 d5cdc9bb360e8d65a614302bf09d5c658e5b65514dff475c6c5c490df448c550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f7a546422c2817c62b2bc265359fce17a3897524597ce15a91f97445187d295e
MD5 11b55ca5d324ac9752cd81c8b310887a
BLAKE2b-256 d2fff53e91c3fd5a9fe07de068bf4944f41725f10d09096814fe46cf6069ace6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a96b9f00fb696bf96fca8642b85100aa5c4137fa82eb2638e482c04e99a62edf
MD5 540ecaa6524055533052e76cf70348ad
BLAKE2b-256 376559655877b7ae25cc2bbae2ef84bbb3b239221650dc884094b3860ad97057

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a701323a46a7bfc80fdcb3ddfa2506139503fbf18bb370171db0cd815733503
MD5 e0d6a731c7024c93e8ca21662cfb0c08
BLAKE2b-256 d97fcb98ad3ba4679c828a3d165d640470750011d671771f28cd29b4caae6db6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 abed34de982f72a583dbafd3f585d5ea2da05332ae9edbf21a97abc4296f75a8
MD5 485366672e881a92b20aa7dbb75af634
BLAKE2b-256 578514fecc712bb26b5830dd9b4b59fe5a005f37e14f43689a09c31c20b027b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19336ab71eacf48b6fe8d0e09d95fb2785440d87e217b6f9b5b514ad04c2c193
MD5 1f0fe8ac2a34eb394f1f1f36ec7b29aa
BLAKE2b-256 a19387cb5e183fd330f9a01bd384a7bc519c1f3456aa311e9a8d484924f514ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 fa8381b66e71360a28b59d96a584876fdcf47bdf45e1aae60fd0c408ffcc0319
MD5 52bd560108885d93fed23da537112c1b
BLAKE2b-256 33f3b70ff16427ff8b841fc5e9500790af82905a4b8cb5936583ebd6a72bdbe0

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b77ec1e97eebec19ffee73a91953c3ede499e58946b85a8e3673e17ec03298ee
MD5 fa298b807be2421ae545ac8a8c9a30f7
BLAKE2b-256 0b334bae6f9be5d9923066655609a219ebba3c29d6d8e799d4b62e6ec439d058

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0380a97532ce4406af94ad05e93c9f9fb7955d3914270c51b8a73395c1a50d0c
MD5 a719f13112f54a8bbc835b52b4b5d68a
BLAKE2b-256 4f8eac9ca8c55200eeb8b5f94f094cec27a50aab807b94eeebf6c1bae718fb9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7177b2a94586ad99d3a269ad9d4dde69b9f34c257d9a29fc326e7495fbe8e3ef
MD5 d79bf12a5aac23a89c73e7be1fc6334e
BLAKE2b-256 7b0ee8e4d00dc673d15370f72841e03d7aff2951dfd78314cfaeb683908ccc34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2125ea82fbffbc8865e6169a7652d6a8037c78ef2bef73da14a6acffd6e7a024
MD5 2875a27c76d0d06af391bc4b3cffae96
BLAKE2b-256 6f6ffbc5e67b66a967f98971c2ad0b813c868a0c0ffdb6d10f9446d814dbb6e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9580af7e2b83df245b3e1f4edb903427c5fcd3b62cc5d04c6cc45d4f69ed7d96
MD5 5851013933e57c034a7bb70d2b703ab9
BLAKE2b-256 551ff74c1bf7067e6495385e0afb5269d5e3cd8c6c5787ffcee3aa20d81ab687

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 741095c0eb2bb6ab9132a0637de26c2812dce39da24f364f95ba7b2a7e87d48d
MD5 77c9ee26d2559f657bcc447fcbac2838
BLAKE2b-256 5f2b89cf81a99ad3d25f1fff19ab554d3a08a324ecd48ab738d3f19058911a03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48a7ea35aa354caf8ad1dc65eeb0bb11dce31c923fdd5e3ccb3f38486a000538
MD5 12a42604d59f47d9b24cddbd5fc48f9e
BLAKE2b-256 6c0d747192cff96a67e71de8f76ab8a98293d172e69db3dc4e877e8c894ee66d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e961a5469119923abcba4fa09034adb985c9d2cbb632fbce217f99c0e6f452ca
MD5 2e26766d9bf09329a8d0f32adcf9704f
BLAKE2b-256 d13cd97e0625bc82587e7257aeaaf7f032e1e0a99fd0f4d0ed0f8ae967cc5293

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 faba38d460263ff161ddeaff5998dec0264702911995d4919e1555a0663a6867
MD5 ccb1ab7ac4f5cc06c671eaa679e47de1
BLAKE2b-256 bf9b798642030bf7ce157f6be07cba36f1ef02dd176d46e11f1d37b79a75c4f1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b7c40118d1d1bfa6a0f43170ec2125aabba8ab5707fbc593501607d3de8c86d0
MD5 eb9f630e13c61e5fe3802c6c674eb70f
BLAKE2b-256 00c487614b99ca21c7fba5625afe4ebeae413885393c1d4463eb1ba6bf62641a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0798a50d352dbe591ba63225ad20fb1921cb55a141e04927a6f9a05d546bde4f
MD5 4f3b71e8e4dfec0e9b343e65e9b03ea8
BLAKE2b-256 684708ce158c63a0b7ecf53cd9f8e859c2f22f51a75216c70395536695506ce1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 821876bc46648035f05ceb4c717cd201e460cb4ff604be85611149d0ca910668
MD5 934a40c91c1739721cf2c6b6e89089c3
BLAKE2b-256 ae3a590a31925d32f5d3dde572eaf826e308252c363c94ea9a9d21c2dd47491d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de842fd9ae994d59921eb948b7b6acd7fce621a7082da728d662898d45d2538d
MD5 05ae6a61203a66a03ee88c9ed40a5b10
BLAKE2b-256 b2c429bbe74ead4a9a0e61a837e4a0adcd131e5871745177e5e89239108d29cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0bb971aa0c80c9e73798f28f516c52d9b2b860c1bdcb3338930722150444d51b
MD5 747847857305d9a48440981f9964a5c3
BLAKE2b-256 ff7c38772a3ca1823d7aa1877ea36d044c353b753e72ad7fd414a4d6da4fc0e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 982e694907e0b3309708241650674f0448223d437c4ffeee7548d603c6bee382
MD5 057afd4df36c95dd65d827691faf8b71
BLAKE2b-256 fab5dcbb04f0a0630fb01953241f7f010c56acfc98cc9bbeb1ba4d314ac0c1df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2ad11077f0b57e4916a210618287bcc858609d7f13070c28c5169b1a793c3877
MD5 ea7bff43189f06bf56629e087ddd8342
BLAKE2b-256 e0d183cdb29270f03adf72092a5b2b25507d3a9268c3eb592c5fd9218c4543cd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e2ef0b753015d8a7df5c4c1c5e7db1cb4189de482a062ec25af87bdbc58f1b2f
MD5 76e12f708bf71b497fb448c02e0cba18
BLAKE2b-256 c3cd8dae62d4b947cf812412500ada219bd5b3121b14f199be56ed290cbff502

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 c1b1fa881cee3c6bfe84f3a5b9c6f359e962001d9755f348864db7797f6a6946
MD5 c440554943bb32a98e49894d4e017182
BLAKE2b-256 cf77e25a5d6991bc2bac25bd353aae94749e320b9517635b166e1756d6ef65e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a3b54faf065ce84095ea6ecd44de255b670a96e86bc72400ba1951be3adfa6a
MD5 769a070ae95a4fdca8fd33471f69e534
BLAKE2b-256 c59b9be600b7a8f97a0a314725d2c01b473b3022c89a7bc7e5b0d389ad3e9888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26c1b1bb7091f51b0995d42909a3051e6fabbea366dc1ae1d10e38635d02421c
MD5 67d4c5375348bb3ce4d2aa514e4311af
BLAKE2b-256 959b9aea9520f1115b112c8c049356f6333bcccab1c122ab2c9c1c59c01ee887

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9dfdaa47748d93ab92bc24ec4f3a810c77d8ab32856eaf11fbd58b9428c2f66c
MD5 8b33f1e3ce3e94dae658d241b817943f
BLAKE2b-256 8cce25db47c105e14b49a350b85d0c431ed6c9dabcf00b950b115be7cc47177d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32300634563c0e75067ab46f78e5406a2d35d06e8f8435c59cb8d9be89483779
MD5 abfab890424ebd83654d1397ef778f8d
BLAKE2b-256 0f2ea86be65cb113f4ec8dd35b7bd680ed0bd8f8b4445106404b8f237f7bc7bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c433a61a91bf3688c2226e6af53587343126498be5a2cd96d86cc4e8b1edb20
MD5 832e71875f5f4c4c70e054dcc7f55af7
BLAKE2b-256 d6889223e1f3c37e5bf54fc08cc79df000e275a6a260f543b8fa588167733171

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 71a4e3c4f1b04c35f29f76676feb45b5260a4a0d53353eb332b9d50d5e371025
MD5 51339ab7a353dfe58319e68da8c61b5e
BLAKE2b-256 8dd5967b1445943e4c11dba2e1bdcf61c82141f9f6c6fe7b7a8011c928d9c115

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 81b795eea1e0294b08d99ca11f61c88ff346d835a7fd8c98074a9dde9891fa16
MD5 48a19ba5fd1bdc1f7f2b6ef4570120f5
BLAKE2b-256 a65f45f91fb9e8a41860d4468f3cb74b64130a3b7f689f30a40c0a135c9bfe14

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 bc6dfcc6ac42bb402f572454ef6e12a20340b361593e2af7c25794f429717dea
MD5 e117a10193cb4d9cf689185d86509b3a
BLAKE2b-256 0067863346303417c4a52848f35e2b62a924449ef3b37965e441a15920baf958

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2340b40610588f303c31ac3fc7fe906ccecfe0fa7143d132dc21f9da7c38e794
MD5 d1b0d910e42ed204244d937cccb19b8b
BLAKE2b-256 ac05be61f362be04ec0feb6eb41144a6d58ed816f83795b3977ce55b2678f60a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a1ef6b7fa1d7e2669c02865c44042dd0f1fbe71ea337c71114a636de7b66cb5d
MD5 c58433688c079251486bebf5ecf8d2f6
BLAKE2b-256 bef04d569c56d3694df89f82f1adec96da2c37315fb99717694ddc47a3335e97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d926d025dc66167689fb332253f35cfc36e034b42f4bf3db091c19425544d1d7
MD5 7fcbc16861e867b06353e1040999a365
BLAKE2b-256 1a0ca4904ae1a455ffa7cd1d57d711f9c20598e567ab28c833d1203e3203694a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a1d28e212bf1458a1be914560e426c212616617788088283a633279f9457d373
MD5 1d3c89c218115681723c7f686ba8ebd2
BLAKE2b-256 9fa9404e1d3242fea63dc0d3a18467fa3a3b270d6b48b5e0a09f61b4047a4cac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af98bb8125ed57ef0f075cf1a6cebae72bc36ebaeaa12527b6c29bff7f78a7ef
MD5 479c64ee6a0291dd2be5edbc792b2c31
BLAKE2b-256 ea57b747080f0cf71fd5d49574d342bb946b951cf6bcf099001744155d56e975

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3b6db0f04887f51957df1b3e2d80a99ea2dd4ce13dbe9b40cb7e08ab647fab32
MD5 ad9b4a1c5864661fbbdb1e13e26a6e34
BLAKE2b-256 6048c12687c8d91a33499b25baa3f4b3f202741ce92b0a51efabfd81d5955625

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0ba7b6512da3cee6507182656a2481d07304a9e8421eb8913716bb0073dc44d1
MD5 34ead145bf0ce2426c28a55cee029d2d
BLAKE2b-256 a79ccfa6992f9ba2548b1591b06909a10eb07aed8ffa2fe1ef05625a27d5454b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for picows-1.3.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 760c91889d0e4294719b64228e1e7c7f160beb5a5c381ea7db15b99e78b1207a
MD5 20d3f7353e604b8ff88b4e61590329c1
BLAKE2b-256 af2ea32ee2c9840e490272eaac2f521f409059a878e1627423aee4a8653de14b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6656a85e17977c73ccc2d6b23c156be7716a69803b15d54041b03907982a0e36
MD5 28512eb47a6d39de2db0aac46937e4e6
BLAKE2b-256 a7c46117281d70446ecdd55c113ef086025e09d064dff53103b93c64c82b643a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 50b9bb1a40652b38666d649b2c8b51f324a845c17011563353c7a3c23f80d69e
MD5 9f0d4d1d936dec66394f4be816725da7
BLAKE2b-256 33fab54a2890c216d83173c07bf86f0aab4591dcf4abe81270e8c7838b05ab06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8563e3aa0dcdb55942591ace0ae5362327c3c9adc47976a2853681f6480e0aef
MD5 73034b15e08905ea17a05f1ecb2d4faf
BLAKE2b-256 d50d868ce7188b0423dd894ace5f043edc6b374b47057c82f170040eae04c967

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 81b81ca875dcad14b920f57a1488e4a52e4575a82b03c257419bc9c8061618fa
MD5 cc72c2a4f027f795736eefc26d37e4e1
BLAKE2b-256 cc0c7e64c1098d20af5b09f98bf1d439db5bbc6a1a69216aadf808887d571633

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f86e68e4b6e94407e698028d8a112dbe2e281393764ba0c79b36ce7ae72e151
MD5 27af13f1adeabffb5acc2b325069cfaa
BLAKE2b-256 f01eecca083dcee388b3fa1402e57d78709a17f993dc43a7a5784a6c9d071980

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for picows-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1b4c6ac582f4b130acabe9f2bba4c4c24856813ffd712a99763b7d767aa678f7
MD5 9a1e12c34cc1e17cf6ea9a912a9d8cb3
BLAKE2b-256 dfd63b56df6dd1dd94bf63a962416c3a589a2815034110340fd7af00ddb4a61f

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