ayafileio
English | 简体中文
"The fastest file I/O in Gensokyo, swift as the Wind God Maiden." — Aya Shameimaru, always flying at full speed
Async file I/O with real kernel backends: IOCP on Windows, io_uring on Linux (kernel 5.1+), Dispatch I/O (GCD) on macOS. No thread pools pretending to be async — one ayafileio.open(), and the right backend is picked for you.
Changelog
See CHANGES.md.
Backends
| Platform | Backend | True async | Notes |
|---|---|---|---|
| Windows | IOCP | Yes | NT kernel I/O Completion Ports |
| Linux | io_uring | Yes | Kernel 5.1+ |
| macOS | Dispatch I/O | Yes | GCD kernel-level async I/O |
Features
- Zero thread overhead on true-async platforms — no background threads
- Kernel-level completion: IOCP / io_uring / Dispatch I/O, direct to the kernel
- Thousands of concurrent operations on a single file handle
- aiofiles-compatible API, plain
async/await - Text and binary modes with automatic encoding/decoding
- Runtime-tunable configuration shared by all backends
- Python 3.10–3.14, including 3.14t free-threading
Installation
pip install ayafileio
Requires Python 3.10+, Windows 7+ / Linux (kernel 5.1+ for io_uring) / macOS 10.10+. No external dependencies; precompiled wheels are available.
Quick start
import asyncio
import ayafileio
async def main():
# Write to a file — fast as the wind
async with ayafileio.open("example.txt", "w") as f:
await f.write("Hello, async world!\n")
# Read with automatic decoding
async with ayafileio.open("example.txt", "r", encoding="utf-8") as f:
content = await f.read()
print(content)
# Binary operations
async with ayafileio.open("data.bin", "rb") as f:
data = await f.read(1024)
await f.seek(0, 0)
asyncio.run(main())
Open once, read many times
Open/close overhead is already in the microsecond range, but reopening the same file in a loop still costs you a coroutine round-trip per iteration:
# Slow: repeated open/close
for i in range(10000):
async with ayafileio.open("data.bin", "rb") as f:
data = await f.read()
# Fast: one handle, many operations (~6x faster)
async with ayafileio.open("data.bin", "rb") as f:
for i in range(10000):
await f.seek(0)
data = await f.read()
Checking the active backend
import ayafileio
print(ayafileio.get_backend_info())
# Windows: {'platform': 'windows', 'backend': 'iocp', 'is_truly_async': True}
# Linux: {'platform': 'linux', 'backend': 'io_uring', 'is_truly_async': True}
# macOS: {'platform': 'macos', 'backend': 'dispatch_io', 'is_truly_async': True}
Configuration
All backends share one runtime configuration:
import ayafileio
print(ayafileio.get_config())
ayafileio.configure({
"io_worker_count": 8,
"buffer_size": 131072, # 128 KB
"close_timeout_ms": 2000,
})
ayafileio.reset_config() # back to defaults
| Option | Default | Description |
|---|---|---|
handle_pool_max_per_key |
64 | Max cached handles per file (Windows) |
handle_pool_max_total |
2048 | Max total cached handles (Windows) |
io_worker_count |
0 | IO worker threads, 0 = auto |
buffer_pool_max |
512 | Max cached buffers |
buffer_size |
65536 | Buffer size in bytes |
close_timeout_ms |
4000 | Close timeout for pending I/O (ms) |
iocp_batch_size |
64 | IOCP batch completion harvest size (Windows, 1–256) |
io_uring_queue_depth |
256 | io_uring queue depth (Linux) |
io_uring_sqpoll |
False | Enable SQPOLL mode (Linux) |
API reference
AsyncFile
class AsyncFile(Generic[T]):
def __init__(
self, path: str | Path, mode: str = "rb",
encoding: str | None = None,
newline: str | None = None,
errors: str | None = None,
auto_flush: bool = False
): ...
# Reading
async def read(self, size: int = -1) -> T: ...
async def readline() -> T: ...
async def readlines(hint: int = -1) -> list[T]: ...
async def readall() -> T: ... # alias for read(-1)
async def readinto(buf: bytearray | memoryview) -> int: ... # zero-copy [binary only]
async def chunk(chunk_size: int, *, buf: bytearray | memoryview | None = None) -> AsyncGenerator[memoryview, None]: ... # streaming chunks [binary only]
async def read_at(offset: int, size: int = -1) -> bytes: ... # positioned read (pread), leaves file position untouched [binary only]
async def read_many(spans: Iterable[tuple[int, int]]) -> list[bytes]: ... # batched positioned reads, submitted in one event-loop turn [binary only]
async def write_at(offset: int, data: bytes | bytearray | memoryview) -> int: ...
async def write_many(writes: Iterable[tuple[int, bytes | bytearray | memoryview]]) -> list[int]: ...
# Writing
async def write(self, data: str | bytes) -> int: ...
async def writelines(lines) -> None: ...
# Position
async def seek(self, offset: int, whence: int = 0) -> int: ...
async def tell() -> int: ...
async def truncate(size: int) -> None: ...
# Control
async def flush(self) -> None: ...
async def close(self) -> None: ...
# Properties
@property
def closed(self) -> bool: ...
@property
def name(self) -> str: ...
@property
def mode(self) -> str: ...
# State
def readable() -> bool: ...
def writable() -> bool: ...
def seekable() -> bool: ...
def fileno() -> int: ...
def isatty() -> bool: ...
# Iteration
def __aiter__(self) -> AsyncFile[T]: ...
async def __anext__(self) -> T: ...
Supported modes
| Mode | Description |
|---|---|
"r", "rb" |
Read (text/binary) |
"w", "wb" |
Write (text/binary) |
"a", "ab" |
Append (text/binary) |
"x", "xb" |
Exclusive create (text/binary) |
+ added |
Read/write combinations |
Positioned and batched writes
async with ayafileio.open("data.bin", "w+b") as f:
n = await f.write_at(1024, b"payload")
counts = await f.write_many([(0, b"header"), (4096, b"block")])
assert await f.tell() == 0
write_at(offset, data) returns the number of bytes written. write_many(writes)
accepts an iterable of (offset, data) pairs and returns counts in input order.
Both require a writable binary file, reject append mode, and preserve the logical
file position. They accept bytes, bytearray, and contiguous memoryview
buffers, which the backend copies on submission. Positioned writes rewind and
discard any readline() read-ahead so subsequent reads see the updated content.
An empty batch returns []; an empty buffer returns 0. Offsets must be
nonnegative, offset plus length must fit a signed 64-bit integer, and each buffer
is limited to 4 GiB minus 1 byte. As with write(), callers must check for short
writes.
Batch operations gather native Futures directly, avoiding a Python Task per item;
read_many() uses the same optimization. Submitted requests are drained before
reporting submission or I/O errors, but batches are not atomic: some writes may
have succeeded when an error is raised. Concurrent overlapping writes have
unspecified ordering; await each write_at(...) separately when ordering matters.
Cancelling the wait does not undo already submitted system I/O.
Configuration functions
def configure(options: dict) -> None: ... # apply unified configuration
def get_config() -> dict: ... # current configuration
def reset_config() -> None: ... # reset to defaults
def get_backend_info() -> dict: ... # active backend information
Wrapping an existing file
def wrap_file(fd: int, mode: str = "rb", *, owns_fd: bool = False) -> AsyncFile[bytes]: ...
Wraps an existing file descriptor (int) or a file-like object with fileno() as
an AsyncFile, backed by the optimal platform backend. Binary mode only.
Pool management
def drain_handle_pool() -> None: ... # release all cached file handles
def drain_buffer_pool() -> None: ... # release all cached I/O buffers
Useful after bulk tempfile operations or between benchmark rounds.
Benchmarks
Crawlee-style dataset append (open/write/close per record)
5,000 records, 50 concurrent writers, each writing a single line and closing the file — simulating Crawlee's Dataset append pattern:
| Platform | ayafileio | aiofiles | Speedup |
|---|---|---|---|
| Windows (NVMe SSD) | 41,336 items/s | 9,658 items/s | 4.28x |
| Linux (NVMe SSD) | 17,688 items/s | 11,455 items/s | 1.54x |
| macOS (NVMe SSD) | 29,837 items/s | 25,522 items/s | 1.17x |
| Windows (6yr old HDD) | 20,251 items/s | 13,011 items/s | 1.56x |
On the Windows NVMe run, ayafileio's P99 latency is 42x lower (0.044 ms vs 1.854 ms), and jitter under load is 16.2% against aiofiles' 96.7%. Even on the old HDD the numbers stay predictable.
Test environment: Windows 10/11, Ubuntu 22.04, macOS 14; GitHub Actions NVMe SSD.
Single-file random read at high concurrency
100,000 concurrent tasks doing random 256-byte reads on one shared file handle — no open/close overhead, pure I/O path:
| Library | 1K concur | 10K concur | 50K concur | 100K concur |
|---|---|---|---|---|
| ayafileio (IOCP) | 7,487 ops/s | 46,616 ops/s | 28,165 ops/s | 19,290 ops/s |
| aiofiles (threadpool) | 7,706 ops/s | 7,320 ops/s | 2,131 ops/s | 2,130 ops/s |
| sync threadpool | 9,492 ops/s | 9,469 ops/s | 8,840 ops/s | 8,660 ops/s |
| ayafileio vs aiofiles | 1.0x | 6.4x | 13.2x | 9.1x |
At 1K concurrency everything is about equal — the IOCP setup cost is still being
amortized. Past 10K, aiofiles' thread pool saturates and throughput drops with
more concurrency (7,706 → 2,130 ops/s, a 72% loss), while IOCP gains throughput
thanks to batched completion harvesting via GetQueuedCompletionStatusEx. The
sync threadpool flatlines around 8,800 ops/s no matter what — that's the thread
contention ceiling.
Test environment: Windows 10, Python 3.14.5, WDC WD10EZEX 7200RPM HDD, 20 MB file, 256 B random reads.
Stress: 500,000 concurrent reads
Half a million asyncio tasks all reading one file through IOCP:
| Metric | Value |
|---|---|
| Concurrent tasks | 500,000 |
| Completion time | 21.6 s |
| Throughput | 23,116 ops/s |
| Peak memory (RSS) | ~583 MB |
| Errors / exceptions | 0 |
The dual-IOCP worker architecture (2 threads total) drains all 500K completions. aiofiles would need thousands of threads for the same workload — and would still be slower.
A note on tuning
We benchmarked 14 configuration combinations (iocp_batch_size, buffer_size,
buffer_pool_max, io_worker_count) on the HDD at 100K concurrency. Every single
one landed within ±3% of the defaults — the auto-tuned defaults already saturate
the disk's physical I/O limit, so there is nothing left to tune by hand.
On NVMe drives with >500K IOPS, raising iocp_batch_size to 128–256 and
buffer_size to 128 KB may squeeze out a bit more:
ayafileio.configure({
"iocp_batch_size": 128,
"buffer_size": 131072,
})
Contributing
Contributions welcome: fork, branch, add tests, make sure the benchmarks still pass, open a PR.
License
MIT — see LICENSE.
"Slow is a crime, right?" — Aya Shameimaru, editor-in-chief of Bunbunmaru News
Release files for ayafileio 1.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 6.7 MB
Release files / ayafileio-1.6.1-cp314-cp314t-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 150.8 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d7ce86eda14e1865a6a606d2e8a4393a007c966f8086f3bf9a5b805615c596e2
|
|
BLAKE2b-256 checksum How to use checksums |
fcf35c1f8299ddece762c6986b1fa785cc27f023aa4e4c4db24995ff5528abc8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-win32.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-win32.whl |
|---|---|
| Size | 138.0 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-32 |
|
SHA-256 checksum How to use checksums |
9fc6e0e0499071bb8abde0f93ab9d6961edd55f8404e0ad181c43047df7a293e
|
|
BLAKE2b-256 checksum How to use checksums |
7e34890149bf7626b8c604fe56c1facc900a7a4c054bd263539457af568f1674
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 149.5 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
9ab6ac1804be212cc5ea2a42fb10d2219647c39e9b6c1432f85d104c6c330a4f
|
|
BLAKE2b-256 checksum How to use checksums |
2f5d0c12f3f424bf0caf2473a25d09e890a7cc954e7243c9f75f2e700dbc3f1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 145.6 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7adc4639e7c509278c9f37e923c296d5771f67af8f4d816c5bfd8ed29ee2e516
|
|
BLAKE2b-256 checksum How to use checksums |
f9e142c8857712626fb44e214d859d50d6f3015446fd7e464090f1eb9590fc03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 138.1 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
85722d9d90e1b88bff0115a1565a10710057c86332a71130b13718a59dd7f80d
|
|
BLAKE2b-256 checksum How to use checksums |
829edc08557d8d058fbed10796584e7d5c1f43b8aa9be16c2e4b0bd381c8c1c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-macosx_13_0_x86_64.whl |
|---|---|
| Size | 118.0 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
b8c0ed0dce8b18d1046f4539158a6b8430707aa42dbdaf4d79135dc084320eb3
|
|
BLAKE2b-256 checksum How to use checksums |
1fe3499ba36c3c18af9f680890bc3f34c3294a59e9ca3f83ee136418762fe157
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-macosx_13_0_universal2.whl |
|---|---|
| Size | 194.9 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
058ae31cc190db2b00ca57cb4b10d6e4dda6a7526488fa6f40b7f2231626c4ce
|
|
BLAKE2b-256 checksum How to use checksums |
3461bd8d11384e561ba8919e010ba4da782e6fdffb5cfd1e33cf1e908951ff7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314t-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314t-macosx_13_0_arm64.whl |
|---|---|
| Size | 105.0 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f718704f592c9bc0d56964718b86a6734b1c4a8b5179cda22c12007835c56272
|
|
BLAKE2b-256 checksum How to use checksums |
d5c311f6e8fa44c7edfded8f1a1acd0273bef8e9473fb2de0c50ac63c195224d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 146.7 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b7c08de56532874e0dceb97ad5dc5d99dbc946d25e5f625383286011e6908102
|
|
BLAKE2b-256 checksum How to use checksums |
0ec90b78905b3a35c550a37f2c2f4878b3b765ce9a54966a1de3c5e80500f22a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-win32.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-win32.whl |
|---|---|
| Size | 135.5 kB |
| Tags | CPython 3.14 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
2a34e95f920175d1390b9ea3f3a08236f656590e73ca2f9b1ecc0319878582dd
|
|
BLAKE2b-256 checksum How to use checksums |
1cee24980326c2a9af144fe27ee554ad29ffef8bdc6432d218bef95ca452956c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 146.0 kB |
| Tags | CPython 3.14 Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
08c657a54afae4a0d58479b8e5076f875d4a806df02fe2c494ca074b84ec2e51
|
|
BLAKE2b-256 checksum How to use checksums |
6ca39762c179a93d093bfca9726e6c50eba388ba5954404415be5b63d0c2528c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 143.8 kB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3a2d30243782d807013da9d0c8a71a5df2fb98bc8f7ef38e16b9a3a0918e0ae
|
|
BLAKE2b-256 checksum How to use checksums |
74a730ac32c64233d8a585b1fe1bfa9077ed2d731310189ca2f664eeb841733b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 135.8 kB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
434d7a9b7b22e15418221ed95f2ab4f7c21a7ae30211ea2f9b1e6b1cd7317b2c
|
|
BLAKE2b-256 checksum How to use checksums |
a9649a9529cd170cbe640db198de6256ae097b120de7374a3ad173607961fdd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-macosx_13_0_x86_64.whl |
|---|---|
| Size | 115.6 kB |
| Tags | CPython 3.14 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
501288d2007c132bd498c7bf8cbc52b751574f1fc8970b80aebffe2242c7514e
|
|
BLAKE2b-256 checksum How to use checksums |
173a8b4c87c8a9f2fec15ab345f8136ac97bc958e7fb85583c6773c954cb5bb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-macosx_13_0_universal2.whl |
|---|---|
| Size | 190.7 kB |
| Tags | CPython 3.14 macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
2b2746fe80a62179167ed32f7a582917f89edcff66c4c7ef8c5005fa8a001c4d
|
|
BLAKE2b-256 checksum How to use checksums |
d4d814288d498f1ef953adff98efb0f4a6c66e00b5d6b460968c42654f32b618
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp314-cp314-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp314-cp314-macosx_13_0_arm64.whl |
|---|---|
| Size | 103.2 kB |
| Tags | CPython 3.14 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3c5d687e58dd836f83bca2607ddad70bf18856cb6da51d10c2c9ca5f0cece4c4
|
|
BLAKE2b-256 checksum How to use checksums |
694806884b1bd464fbf0bb28b4fee9084c9019395b74a7288982176019fa45ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 143.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e1a553cdbbecbc6f2af6e029d8cb8d09eb3d23699d1dadd11506ee962c7af14b
|
|
BLAKE2b-256 checksum How to use checksums |
df37da21f941aeb9adec53be8d786d9cf2a222bde3c7dcb1c9ced943f8c43069
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-win32.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-win32.whl |
|---|---|
| Size | 132.5 kB |
| Tags | CPython 3.13 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
3a84d921972fd90f34fef6b2cc9c49e815782a75b4b7c12764f6c2d1e0c214f2
|
|
BLAKE2b-256 checksum How to use checksums |
adca2f438d43cb6656ab050d97a8231ce70b572722e265fc687e4fbb0e05c533
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 146.0 kB |
| Tags | CPython 3.13 Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
1eeba2a17729cdce463d5ead3a935b36520640ef2d31dedf7fef83409e023312
|
|
BLAKE2b-256 checksum How to use checksums |
ce2cacc0469c3c8d274b475edf3247a4d5f52d256d4fa8a88260ef16954d0663
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 143.8 kB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
980003afc4b9f5d99394b56c61784fb80b8d142700648b4ab83b5a4b47c3d010
|
|
BLAKE2b-256 checksum How to use checksums |
09cc9b1475fc1d33882e41f3ffff2185b0f9ef4293376550c1a7288eb35e8652
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 135.5 kB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
46588f7c3fd7dba7af5583961d59c5d3be8d7f7a103ea451af4fa7aa2a82addd
|
|
BLAKE2b-256 checksum How to use checksums |
6e76aedded8344e16a5114fe20a082a372c82be9631c7bb582a8d592f6fc9be8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-macosx_13_0_x86_64.whl |
|---|---|
| Size | 115.6 kB |
| Tags | CPython 3.13 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
92535398d726e7972a82d7fa9d383bbd4d3a0eff2ec935ef4402560693c4f889
|
|
BLAKE2b-256 checksum How to use checksums |
f90425a811af5f63b5a05597553a79f1a7d71a9836860161ab58ebadd9b64638
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-macosx_13_0_universal2.whl |
|---|---|
| Size | 190.6 kB |
| Tags | CPython 3.13 macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
3d2331f7d4cbaaeda2116d9731819707aa219d65a4d0573d8b0e4e1d58557bc1
|
|
BLAKE2b-256 checksum How to use checksums |
7a8b3f6b26a294b2ac5cde2a075eb3192c354fd88302436db56f72cad9c5be25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp313-cp313-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp313-cp313-macosx_13_0_arm64.whl |
|---|---|
| Size | 103.2 kB |
| Tags | CPython 3.13 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dd4163fa1aef7f17d0b99217993363cd7d8a639292ee0114031a1c4fe80789f5
|
|
BLAKE2b-256 checksum How to use checksums |
84d1e93196740b93a879229ee28e388d44664e326dce955ad9ed5136c0ef3aeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 143.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
79fa8c445ced5b18c5c174dd254d3083bcd3ced628a6c4d2287f484c9c8773d4
|
|
BLAKE2b-256 checksum How to use checksums |
79dd861cd61e199bff1f5695e38481915eca68e9e1977e3b98741325d42943ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-win32.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-win32.whl |
|---|---|
| Size | 132.5 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
8be78838cb69415e2467a09d25b8e39a07f967d964ff4d99c08eabd1a89cc735
|
|
BLAKE2b-256 checksum How to use checksums |
996f57887397569e9d0a759ecb8fff64e7e96e2e5046cf1cc98fafbd7974e807
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 145.9 kB |
| Tags | CPython 3.12 Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
e8e184e726643ccc516889fa2b741910bafaec4deba477760ba2d5ea47d8bfe8
|
|
BLAKE2b-256 checksum How to use checksums |
edf3c9f8f0fec049bcac8dd24b7c04151b00c9542d9b0bec77a84f7764d521a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 143.9 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a82d74b3831601c0294a06bcd6ccd6f8743f808bfe3d387eea8232098e12ced4
|
|
BLAKE2b-256 checksum How to use checksums |
bf8e6c302a510a1feca98c670db63bed5b950fe52f99aa8214d9f166f931e207
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 135.5 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
84468e0fce3a8a7dbfdcfd1de768569181401ff879b2655c3deba9a3a11e88b1
|
|
BLAKE2b-256 checksum How to use checksums |
58132d09ddbeee0bf4773de1a6177cc7c845f901f3547613a7a876e9d2d3a165
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-macosx_13_0_x86_64.whl |
|---|---|
| Size | 115.6 kB |
| Tags | CPython 3.12 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
65af9d0ddbaf4b9e5af32184544e9178fcaa9cf4821dcb549ab026988d39ed4b
|
|
BLAKE2b-256 checksum How to use checksums |
fc4d5678988e32093ee640c43065137fe8c94cef5f3ffa22b609cb27fd777c36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-macosx_13_0_universal2.whl |
|---|---|
| Size | 190.6 kB |
| Tags | CPython 3.12 macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
c11d59d29a739f44b6a5b4cde408fbd9dfdfea555f8688ce6775f6f09a4bc63d
|
|
BLAKE2b-256 checksum How to use checksums |
dda58298f5d6cf45d95cc75640d6b2af6f879a4f66e77a34020c820d34242cd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp312-cp312-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp312-cp312-macosx_13_0_arm64.whl |
|---|---|
| Size | 103.1 kB |
| Tags | CPython 3.12 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ad147daf066fa600188b13af21338c0287aa8b9f91e7390681395b9428e52ac9
|
|
BLAKE2b-256 checksum How to use checksums |
99df1c4ba8daf1c93a405bcc3a0640363bf14c671b7ae09e66814e14b72a7d38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 143.4 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d934d05fa38265f68d646bcc546b416a1f4b2e08ce246f426efc4f3b8150803f
|
|
BLAKE2b-256 checksum How to use checksums |
771e380c203dcc78bf55fc59b32570633ea2fabf47ab127e68390a6473d68651
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-win32.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-win32.whl |
|---|---|
| Size | 132.4 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
1ae1486399f114127e37b98876a63aee9a50e174d69d911043220c4d1a383526
|
|
BLAKE2b-256 checksum How to use checksums |
b7be95f7f91083767e9a17f4ee70e22cd38d7e538f29d2b69f1bc12ba011e3e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 146.5 kB |
| Tags | CPython 3.11 Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
3933552070e5b251966e8127dfb6fe2996a99bbae886870fe7e9bdff6f6f59f8
|
|
BLAKE2b-256 checksum How to use checksums |
85ab67c161e24c037859154f1f64239f7bdf93735e9ce6ddce08333059b6fd3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 143.9 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d6bb15cdfb569ba5441d81e3e056c8593ee54304ff2672d5e5f23a3b3cad862f
|
|
BLAKE2b-256 checksum How to use checksums |
266f14ace8921e937150ba043d3aee8ae007c0d5fddddf282f42f7207f952f85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 136.1 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d9b6c33458d0980dbda21662eb87d7db4b6991a9f175b6f0a163014a7f837d3e
|
|
BLAKE2b-256 checksum How to use checksums |
5471162c7572757352690630cb1eef82a7406321bca86cc4b6cc5ec17ae6d3bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-macosx_13_0_x86_64.whl |
|---|---|
| Size | 115.8 kB |
| Tags | CPython 3.11 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
8c88b7a2ddc051219ed010692c1279166c1225eb937b18fc21495306c2eb5b32
|
|
BLAKE2b-256 checksum How to use checksums |
f62279f6d2c20cb0ecbe87549998a8a290bffe3ee02c83261b2d6a64c475c9ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-macosx_13_0_universal2.whl |
|---|---|
| Size | 191.5 kB |
| Tags | CPython 3.11 macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
120e1ebfa8cb31659de388ded0d3bdad8dc1c89e91e42cdbd84d176315857ae1
|
|
BLAKE2b-256 checksum How to use checksums |
eee3b09cecf93ea541390e54090511299e73b8161f00250c97e79fbc810eadd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp311-cp311-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp311-cp311-macosx_13_0_arm64.whl |
|---|---|
| Size | 103.8 kB |
| Tags | CPython 3.11 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2dcd0a892c03f74349a0060fb0c89de77a8e2ebf93701d7e3c09026cf1111aea
|
|
BLAKE2b-256 checksum How to use checksums |
a19bdb0580d7939184cc04ccf9836d4e1adef9c696abf14ee43a5fcd06eaefa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-win_amd64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 143.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4a205efab29ce9db7c090968dc2fd092b0ef448be7557448db597af109e8ffc1
|
|
BLAKE2b-256 checksum How to use checksums |
92a4ec6c01bba9a7f94ef40a14578e38f0352f0e817f293a836eee66c90ab1d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-win32.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-win32.whl |
|---|---|
| Size | 132.2 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
3dc0e4aec8947d5db946555a953f0d83571bd482fef988c167c6d2bd37d14ee6
|
|
BLAKE2b-256 checksum How to use checksums |
6e8721cda893906702210bc32bf1477e87a18c0ccc4a9b30ab3f75e8d7b62501
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-manylinux_2_39_riscv64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-manylinux_2_39_riscv64.whl |
|---|---|
| Size | 146.7 kB |
| Tags | CPython 3.10 Linux glibc 2.39+ RISC-V 64 |
|
SHA-256 checksum How to use checksums |
cdb6879fc6449ed69d4916dc4ba6ba3663878c3106257d0743db106231c9c4e5
|
|
BLAKE2b-256 checksum How to use checksums |
72aafc316be4da118c92febd1f42d48e67ec58f6c5b70b33cc28f2a90160e79a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 144.1 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
27afd945f644b9a2b2b6f0db355a4e252cbf57614cc933b3730f4ed9008dd366
|
|
BLAKE2b-256 checksum How to use checksums |
4970c80f2c9b5bf3ac0d6237a2aa2c04676f513a9198da629d8c87a58fab119c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 136.2 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
102fbd25d946c4d02e584c7ef0884ec568504b7eede5e84b115dc8b4febb44de
|
|
BLAKE2b-256 checksum How to use checksums |
141304fe17d43005dcef168b141db1fe6e8041754b8efd65685a3fc73bcc246b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-macosx_13_0_x86_64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-macosx_13_0_x86_64.whl |
|---|---|
| Size | 115.9 kB |
| Tags | CPython 3.10 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
c31729355f132eaf8c75cec77eae16967696b41f08ef2b234d35eb4e6d120352
|
|
BLAKE2b-256 checksum How to use checksums |
a38aa50346516b2eac152b69a0d98cf5b4608091649713ac2896e96da1b455c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-macosx_13_0_universal2.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-macosx_13_0_universal2.whl |
|---|---|
| Size | 191.7 kB |
| Tags | CPython 3.10 macOS 13.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
0eecdfd4e355c18b3e562c0db9c83f9170ffdf00e2d1f3d66101c86daecb20be
|
|
BLAKE2b-256 checksum How to use checksums |
b7680f686814b6e9a158484345a3a7359215e49462dd16c87103491ac1b21ccc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ayafileio-1.6.1-cp310-cp310-macosx_13_0_arm64.whl
| Download URL | ayafileio-1.6.1-cp310-cp310-macosx_13_0_arm64.whl |
|---|---|
| Size | 103.9 kB |
| Tags | CPython 3.10 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b9913aa64ddb25cd1435d3e5bb7e94920b1f6745a6aecbeb91766cf377a5cacb
|
|
BLAKE2b-256 checksum How to use checksums |
188e7d1e9a66a31005e3a1c77ffb55bf52bc75a932e2d8b9ead4b7fd9c520553
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|