This release is a pre-release and may not be stable for production use.
webtransport-py
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の内容に連動する)
- ngtcp2 / nghttp3 / dwnx は上流ブランチの特定コミット (
- 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.dev28
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 26.3 MB
Release files / webtransport_py-2026.1.0.dev28-cp315-cp315t-manylinux_2_39_x86_64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
8b8f3a06850316cb7728af9ef89e7b9db26a1535eb905d3c5c3958c481533ce4
|
|
BLAKE2b-256 checksum How to use checksums |
4dd62a09c46e796e972ce63d542f139f7e36ea144bfdacfd12843f3001116a30
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp315-cp315t-manylinux_2_39_aarch64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
e38780bdc0f6d9966a5458afc3d7b505846651cae545dce2b305a2783d4acc82
|
|
BLAKE2b-256 checksum How to use checksums |
b72657df4bf10ae244ab9e9282c0a3ec8497a4cfba1c5d9e89c9f719ab4fa9d3
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp315-cp315t-macosx_26_0_arm64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
ea34eca9993a654fcf623843eb45802f3017d85ead95736a803e62549002df8e
|
|
BLAKE2b-256 checksum How to use checksums |
321fcf22f92a38372c48b0fce9ad7fd4270ca9ee90eb304aa06aad9abef40913
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp315-cp315-manylinux_2_39_x86_64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
48f0c4e789eb0c0222857854ae7c52c58e2f8c95423a65dd9fbd62c6fe9ec68e
|
|
BLAKE2b-256 checksum How to use checksums |
310bbe2fa3a4549f3905ad72aac15dd4c019e7939543425ed62a5a999d67d071
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp315-cp315-manylinux_2_39_aarch64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
a9a3144e32023400ed7415d2903bddfc488eb0401826e7da33c2af10bed190f2
|
|
BLAKE2b-256 checksum How to use checksums |
efadae6f20a43148eec433bcd8add86f51ae70f31f249cb857261c6b0a4087bc
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp315-cp315-macosx_26_0_arm64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
38b27a5a28c6fcf635431ad1b1b8f44c3932b79cee36c4e2dc70b607d3605e91
|
|
BLAKE2b-256 checksum How to use checksums |
970febc57afc35d76047507aea5f014dd06a6e53e7c6502f84592c12cc4f66a7
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314t-manylinux_2_39_x86_64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
1ca000a9b9bb5a00295ff2e03b0cb1b582fe051f18245e00307dd5c7c52ba23e
|
|
BLAKE2b-256 checksum How to use checksums |
97268fc416ed14d318ce25b03bce5a6539fc3b28936fa749192bc0334bc71376
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314t-manylinux_2_39_aarch64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
ec688f6dec26bfb365d0387355b690050243ff512a0f12d7673c053eeff79874
|
|
BLAKE2b-256 checksum How to use checksums |
55b2752b5d2ef177046ccbc631d4b256fb954a1aa85f2b2d545b78dd4e9484f6
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314t-macosx_26_0_arm64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
c6d213c44107704e0dfbefb558b80ddbaed13ed7e9b24e0e3bd4034a6f9b2d8b
|
|
BLAKE2b-256 checksum How to use checksums |
bcb837debcbf19c63e02e83d715fb7188bb11e2c4a1c2cab55d2d1cc9eb1703c
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314-manylinux_2_39_x86_64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
1c7248e4d581591609489522f211d035c2611e3806c09fcd3da9c172751b0bfd
|
|
BLAKE2b-256 checksum How to use checksums |
050d99d8e832dd8315a051ae22be4f9152587c6d300775d83805a84eb8af479d
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314-manylinux_2_39_aarch64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
514a8c644595e3298cbbd9d61f4111e8a1dc1363a90d5960ac5891ee2c00b0cd
|
|
BLAKE2b-256 checksum How to use checksums |
4210b39194939b92b41bd286c1fccde55e07394b3c2d975fb7203ea989629df8
|
| 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 14, 2026.
Transparency logRelease files / webtransport_py-2026.1.0.dev28-cp314-cp314-macosx_26_0_arm64.whl
| Download URL | webtransport_py-2026.1.0.dev28-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 |
51dd4c43c76b90fe4b6c96c4b144ca876008f0804b8c88a43508b016ebf7f1e1
|
|
BLAKE2b-256 checksum How to use checksums |
27dc4fec1494e13711fc81ef3384ebeb7a6c2fc37ac975ca2c4f1230d5dc3457
|
| 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 14, 2026.
Transparency log