Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

webtransport-py

PyPI image License Actions status Discord

About Shiguredo's open source software

We will not respond to PRs or issues that have not been discussed on Discord. Also, Discord is only available in Japanese.

Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use.

時雨堂のオープンソースソフトウェアについて

利用前に https://github.com/shiguredo/oss をお読みください。

webtransport-py について

webtransport-py は Sans I/O アーキテクチャを採用した WebTransport の Python ライブラリです。WebTransport over HTTP/3 と WebTransport over HTTP/2 の両方に対応しています。

また、WebTransport だけでなく QUIC、HTTP/3、HTTP/2 を単体のプロトコルとしても利用できます。asyncio、スレッド、独自のイベントループなど、任意の I/O フレームワークと組み合わせて利用できます。おまけとして QMux も Sans I/O API と asyncio API の両方を提供しています。

特徴

  • Sans I/O アーキテクチャ
    • I/O 処理をライブラリ外部で制御可能
    • 任意のイベントループやフレームワークと統合可能
    • Sans I/O
  • 二層 API 設計
    • Sans I/O API: プロトコル処理のみを提供する低レベル API
    • asyncio API: すぐに使える高レベルなクライアント/サーバー実装
  • WebTransport over HTTP/3
    • Sans I/O API と asyncio API の両方を提供
  • WebTransport over HTTP/2
    • Sans I/O API と asyncio API の両方を提供
  • QUIC
    • Sans I/O API と asyncio API の両方を提供
    • 双方向/単方向ストリーム
    • QUIC DATAGRAM
    • 0-RTT / Session Resumption
    • 証明書のカスタム検証
    • Connection Migration
    • ngtcp2 を採用
  • HTTP/3
    • Sans I/O API と asyncio API の両方を提供
    • nghttp3 を採用
  • HTTP/2
    • Sans I/O API と asyncio API の両方を提供
    • nghttp2-v2 を採用
  • QMux
    • 任意の双方向バイトストリーム上でストリーム多重化を提供
    • Sans I/O API と asyncio API の両方を提供
    • dwnx を採用
    • DATAGRAM は未対応
  • 依存ライブラリは deps.json で特定のタグ / コミットに固定する
    • ngtcp2 / nghttp3 / dwnx は上流ブランチの特定コミット (ref)、nghttp2-v2 / AWS-LC はタグ (tag) で固定する
    • 更新時は deps.json を書き換える (ビルドキャッシュのキーも deps.json の内容に連動する)
  • Python Free-Threading 対応
    • PEP 703 – Making the Global Interpreter Lock Optional in CPython | peps.python.org
    • Python Free-Threading Guide
    • 同一オブジェクトへの並行アクセスはオブジェクト単位の排他で保護する (接続・セッション系クラスの公開メソッドが対象。生成系 static・設定・イベント等の値オブジェクトは対象外)。Config は単一スレッドで構築し、共有後の並行書き換えは行わないこと。quic.Config の検証コールバック内で同一 quic.Connection のメソッドを呼ばないこと
  • クロスプラットフォーム対応
    • Ubuntu x86_64 / arm64
    • macOS arm64

インストール

uv add webtransport-py

使い方

WebTransport

HTTPVersion で HTTP/2 (TCP + TLS) と HTTP/3 (UDP + QUIC) を選ぶ。既定は HTTP/3。

クライアント

import asyncio

from webtransport import Client, HTTPVersion, WebTransportError


async def main() -> None:
    client = Client(
        url="https://localhost:4433/webtransport",
        http_version=HTTPVersion.HTTP3,
        verify_peer=False,
    )

    async def on_datagram(data: bytes) -> None:
        print(f"データグラム受信: {data}")

    client.on_datagram(on_datagram)

    try:
        await client.connect()
    except WebTransportError as exc:
        print(f"接続失敗: {exc}")
        await client.close()
        return

    await client.send_datagram(b"Hello, WebTransport!")

    try:
        await asyncio.wait_for(client.run(), timeout=5.0)
    except TimeoutError:
        pass

    await client.close()


asyncio.run(main())

サーバー

import asyncio

from webtransport import Client, HTTPVersion, Server, Session


async def main() -> None:
    server = Server(
        host="0.0.0.0",
        port=4433,
        http_version=HTTPVersion.HTTP3,
        certfile="cert.pem",
        keyfile="key.pem",
    )

    async def on_datagram(session: Session, data: bytes) -> None:
        # セッションハンドル経由で返す
        await session.send_datagram(data)

    server.on_datagram(on_datagram)

    async with server:
        await server.run()


asyncio.run(main())

http_version に HTTPVersion.HTTP2 を渡すと WebTransport over HTTP/2 になる (certfile / keyfile が必須)。プロトコル固有の API は client.h3 / client.h2 / server.h3 / server.h2 から呼ぶ。

低レベル (Sans-IO) API と全 API のリファレンスは skills/webtransport-py/SKILL.md を参照。

QUIC

クライアント

import asyncio

from webtransport import quic


async def main() -> None:
    client = quic.Client(
        host="localhost",
        port=4433,
        verify_peer=False,
    )

    if not await client.connect():
        print("接続失敗")
        return

    # 双方向ストリームを開いてデータ送信 (FIN でストリームを閉じる)
    stream_id = await client.open_stream(bidirectional=True)
    await client.send_stream_data(stream_id, b"Hello, QUIC!", fin=True)

    # サーバーからのエコーを FIN まで受信する
    try:
        data, _ = await client.recv_stream_data(stream_id, timeout=5.0)
        print(f"データ受信: {data}")
    except TimeoutError:
        print("受信タイムアウト")

    await client.close()


if __name__ == "__main__":
    asyncio.run(main())

サーバー

import asyncio

from webtransport import quic


async def main() -> None:
    server = quic.Server(
        host="0.0.0.0",
        port=4433,
        certfile="cert.pem",
        keyfile="key.pem",
    )

    async def on_handshake_completed(addr: tuple[str, int]) -> None:
        print(f"ハンドシェイク完了: {addr}")

    async def on_stream_data(
        stream_id: int,
        data: bytes,
        fin: bool,
        addr: tuple[str, int],
    ) -> None:
        print(f"データ受信: {data}")
        # エコーバック
        await server.send_stream_data(addr, stream_id, data, fin)

    server.on_handshake_completed(on_handshake_completed)
    server.on_stream_data(on_stream_data)

    async with server:
        print(f"サーバー開始: {server.host}:{server.actual_port}")
        await server.run()


if __name__ == "__main__":
    asyncio.run(main())

HTTP/3

クライアント

import asyncio

from webtransport import http3


async def main() -> None:
    client = http3.Client(
        host="localhost",
        port=4433,
        verify_peer=False,
    )

    async def on_headers(stream_id: int, headers: list[tuple[str, str]]) -> None:
        print(f"ヘッダー受信 (stream_id={stream_id}): {headers}")

    async def on_data(stream_id: int, data: bytes) -> None:
        print(f"データ受信: {data}")

    client.on_headers(on_headers)
    client.on_data(on_data)

    await client.connect()
    await client.request("GET", "/")

    try:
        await asyncio.wait_for(client.run(), timeout=5.0)
    except TimeoutError:
        pass

    await client.close()


if __name__ == "__main__":
    asyncio.run(main())

サーバー

import asyncio

from webtransport import http3


async def main() -> None:
    server = http3.Server(
        host="0.0.0.0",
        port=4433,
        certfile="cert.pem",
        keyfile="key.pem",
    )

    async def on_request(
        stream_id: int,
        headers: list[tuple[str, str]],
        addr: tuple[str, int],
    ) -> None:
        print(f"リクエスト受信 (stream_id={stream_id}): {headers}")

    async def on_stream_end(stream_id: int, addr: tuple[str, int]) -> None:
        response_headers: list[tuple[str, str]] = [
            (":status", "200"),
            ("content-type", "text/plain"),
        ]
        await server.submit_response(addr, stream_id, response_headers)
        await server.send_data(addr, stream_id, b"Hello from HTTP/3 server!", fin=True)

    server.on_request(on_request)
    server.on_stream_end(on_stream_end)

    async with server:
        print("Ctrl+C で終了")
        try:
            await server.run()
        except KeyboardInterrupt:
            pass


if __name__ == "__main__":
    asyncio.run(main())

HTTP/2

クライアント

import asyncio

from webtransport import http2


async def main() -> None:
    client = http2.Client(
        host="localhost",
        port=8443,
        verify_peer=False,
    )

    async def on_headers(stream_id: int, headers: list[tuple[str, str]]) -> None:
        print(f"ヘッダー受信 (stream_id={stream_id}): {headers}")

    async def on_data(stream_id: int, data: bytes) -> None:
        print(f"データ受信: {data}")

    client.on_headers(on_headers)
    client.on_data(on_data)

    await client.connect()
    await client.request("GET", "/")

    try:
        await asyncio.wait_for(client.run(), timeout=5.0)
    except TimeoutError:
        pass

    await client.close()


if __name__ == "__main__":
    asyncio.run(main())

サーバー

import asyncio

from webtransport import http2


async def main() -> None:
    server = http2.Server(
        host="0.0.0.0",
        port=8443,
        certfile="cert.pem",
        keyfile="key.pem",
    )

    async def on_request(
        stream_id: int,
        headers: list[tuple[str, str]],
        response_writer: http2.ResponseWriter,
    ) -> None:
        print(f"リクエスト受信 (stream_id={stream_id}): {headers}")

    async def on_stream_end(
        stream_id: int,
        response_writer: http2.ResponseWriter,
    ) -> None:
        response_headers: list[tuple[str, str]] = [
            (":status", "200"),
            ("content-type", "text/plain"),
        ]
        await response_writer.send_headers(stream_id, response_headers)
        await response_writer.send_data(
            stream_id,
            b"Hello from HTTP/2 server!",
            end_stream=True,
        )

    server.on_request(on_request)
    server.on_stream_end(on_stream_end)

    async with server:
        print("Ctrl+C で終了")
        try:
            await server.run()
        except KeyboardInterrupt:
            pass


if __name__ == "__main__":
    asyncio.run(main())

QMux

QMux (draft-ietf-quic-qmux) は任意の双方向バイトストリーム上でストリーム多重化を提供するプロトコルです。

クライアント

import asyncio

from webtransport import qmux


async def main() -> None:
    client = qmux.Client("127.0.0.1", 4433)

    async def on_stream_data(stream_id: int, data: bytes, fin: bool) -> None:
        print(f"ストリームデータ受信: {data}")

    client.on_stream_data(on_stream_data)

    await client.connect()
    stream_id = await client.open_stream()
    await client.send_stream_data(stream_id, b"Hello, QMux!", fin=True)
    await asyncio.wait_for(client.run(), timeout=5.0)
    await client.close()


asyncio.run(main())

サーバー

import asyncio

from webtransport import qmux


async def main() -> None:
    server = qmux.Server("127.0.0.1", 4433)

    async def on_stream_data(
        session: qmux.Session,
        stream_id: int,
        data: bytes,
        fin: bool,
    ) -> None:
        # 双方向ストリームのみエコーする
        if stream_id % 4 == 0:
            await session.send_stream_data(stream_id, data, fin=fin)

    server.on_stream_data(on_stream_data)

    await server.start()
    await server.run()


asyncio.run(main())

ssl に SSLContext を渡すと TLS 上で動きます (alpn_protocols が必須です)。

from webtransport import qmux

config = qmux.Config()
client = qmux.Connection.create_client(config)
server = qmux.Connection.create_server(config)

# 受け取ったバイト列を渡し、送信すべきレコードを取り出す
client.receive(record_from_peer)
record = client.pending_record

レコード (varint の長さ + QUIC フレーム列) をバイト列として入出力します。トランスポートパラメータは帯域内で交換するため、TLS が無くても 2 つの接続をバイト列で直結すればハンドシェイクできます。

Python

  • 3.14
  • 3.14t
  • 3.15
  • 3.15t

プラットフォーム

  • Ubuntu 26.04 LTS x86_64
  • Ubuntu 26.04 LTS arm64
  • Ubuntu 24.04 LTS x86_64
  • Ubuntu 24.04 LTS arm64
  • macOS 26 arm64

リリースビルド

make wheel

開発ビルド

make develop

テスト

uv sync
make test

サンプル

examples/ ディレクトリにサンプルコードがあります。

第三者ライセンス

本プロジェクトは ngtcp2 / nghttp3 / nghttp2-v2 / dwnx / AWS-LC / nanobind (同梱の tsl::robin_map を含む) を静的リンクしています。各ライセンス全文は THIRD_PARTY_LICENSES.md を参照してください。

ライセンス

Apache License 2.0

Copyright 2026 Shiguredo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Metadata

Release files for webtransport-py 2026.1.0.dev31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for webtransport-py 2026.1.0.dev31
File
webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.39+ x86-64 Details
webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.39+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp315-cp315t-macosx_26_0_arm64.whl CPython 3.15 CPython 3.15 free-threading macOS 26.0+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.39+ x86-64 Details
webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.39+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp315-cp315-macosx_26_0_arm64.whl CPython 3.15 CPython 3.15 macOS 26.0+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ x86-64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314t-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 26.0+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ x86-64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ ARM64 Details
webtransport_py-2026.1.0.dev31-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details

Total release size: 26.4 MB

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_x86_64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_x86_64.whl
Size 2.4 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
6ecc2505e0047184ee19741509fb083d66c1e713877c733553917f571c03a8aa
BLAKE2b-256 checksum
How to use checksums
e78dd4b66aa09ce8aaf5bf781d7cab1bf3ba76b61a702fc958e8dea65ff0c554
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_aarch64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_aarch64.whl
Size 2.2 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
30a5ea6e66eed9c9e40a4d7c91ab0a2c5a5db8c5a928dd28c4afd9b69fc4297b
BLAKE2b-256 checksum
How to use checksums
fdf775941529f405bae4f2dd13f6651d5e2274c68729824e50564c0a8fbfa009
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315t-macosx_26_0_arm64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315t-macosx_26_0_arm64.whl
Size 2.0 MB
Tags CPython 3.15 CPython 3.15 free-threading macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
4779a5552349e9ce2c4ba55535a86a391278d4fa8c5df41a7097b3d857ebe577
BLAKE2b-256 checksum
How to use checksums
a910d486c2afbf09b8cf44156f362346b10394f04c226d22c57ad7bc27ba9220
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_x86_64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_x86_64.whl
Size 2.4 MB
Tags CPython 3.15 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
cb7b895e6a809ae464e2ca8eee911673752659c367c08ea5cb9ec902cb9f17bc
BLAKE2b-256 checksum
How to use checksums
76872783abcecb1ca6a259e11ec1eb0c8fbe2dc64f585da4e94da1b183dd5bf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_aarch64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315-manylinux_2_39_aarch64.whl
Size 2.2 MB
Tags CPython 3.15 Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
ed2dd3b2ba3f2ddc5b2dcb3d0f331b22f42d02eb0b8eb7a1e60884efa654cf37
BLAKE2b-256 checksum
How to use checksums
90a8902313e2f6e9e05ef9e4276775117c79cba2c481c5ec32ab0d8071d585ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp315-cp315-macosx_26_0_arm64.whl

Download URL webtransport_py-2026.1.0.dev31-cp315-cp315-macosx_26_0_arm64.whl
Size 2.0 MB
Tags CPython 3.15 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
2ceba95bcb3a9dfee1f2ce7dfec12e8c0f52f7e2e124ed5e98062ed15383f63f
BLAKE2b-256 checksum
How to use checksums
f895475cb3d32e837331afaa7fa04393aed06b6626e77214190bee969237e953
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_x86_64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_x86_64.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
0a9c19404ae184bc0f138410c0557e400d14d04d3beafced0c2620122bf4b4b4
BLAKE2b-256 checksum
How to use checksums
577f16e06e289fe2f44193211a7c1454ebd906d0243db6fd868cd695422eb4ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_aarch64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314t-manylinux_2_39_aarch64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
799d5d97fc3fbadfe96b1212788f1bda0d444eb91aaed1f7bc0ca0ca62c15025
BLAKE2b-256 checksum
How to use checksums
2f63d308d1c1ab37cf19f9cc85435085c0fdd31f40656bcf85ef9d3a8fec3163
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314t-macosx_26_0_arm64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314t-macosx_26_0_arm64.whl
Size 2.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
fdf882251161684c9b39411c7ef19d81810db0aa16959436ccf44e7fec8d8c9f
BLAKE2b-256 checksum
How to use checksums
bde03323f979da3ab3187a1f9224b19d49557b37204bba3021d9b2660e3db60c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_x86_64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_x86_64.whl
Size 2.4 MB
Tags CPython 3.14 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
4aefe77b40344c6561e31a0584b139a559e2f747fd0637df1369d07dee7cab27
BLAKE2b-256 checksum
How to use checksums
27968bdc98740634d312f952eb630cbfaaf4b525637e9a3625625ce748cbbec5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_aarch64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314-manylinux_2_39_aarch64.whl
Size 2.2 MB
Tags CPython 3.14 Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
4cbc1956c1c42d7f38f8024556ada08806515f89416e41b9475896c3a639e27d
BLAKE2b-256 checksum
How to use checksums
00a84c96099e64c501c370b04f4deedf30490350493baa5c28ab88afd7935cbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / webtransport_py-2026.1.0.dev31-cp314-cp314-macosx_26_0_arm64.whl

Download URL webtransport_py-2026.1.0.dev31-cp314-cp314-macosx_26_0_arm64.whl
Size 2.0 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
e68aabca992b3009b0d3bf75985cf0e2e485cae6cba0ba2eeded512499f7ef1b
BLAKE2b-256 checksum
How to use checksums
1da0a4a3b5d29ca049734eb2b3b78d0839b3d0cac29251ae36422a8569243f6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for webtransport-py 2026.1.0.dev31

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 12 files in this release have been uploaded with provenance metadata.

Select from 12 files

Attestation for webtransport_py-2026.1.0.dev31-cp315-cp315t-manylinux_2_39_x86_64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page