Skip to main content

etcd-client-py

PyPI release version Wheels

Python wrapper of etcd_client built with PyO3.

Installation

pip install etcd_client

Basic usage

from etcd_client import EtcdClient
etcd = EtcdClient(['http://127.0.0.1:2379'])

Actual connection establishment with Etcd's gRPC channel will be done when you call EtcdClient.connect().

async def main():
    async with etcd.connect() as communicator:
        await communicator.put('testkey'.encode(), 'testvalue'.encode())
        value = await communicator.get('testkey'.encode())
        print(bytes(value).decode())  # testvalue

Connecting over TLS

Use https:// endpoints and pass the certificates as PEM bytes. with_identity() is needed only when the server requires client certificates.

Set with_handshake_timeout() as well. Without it, a server that stops responding during the TLS handshake blocks the connection indefinitely, because ConnectOptions.with_timeout() and with_connect_timeout() do not end it.

from pathlib import Path

from etcd_client import Client, ConnectOptions, TlsOptions

tls = (
    TlsOptions()
    .with_ca_certificate(Path("ca.pem").read_bytes())
    .with_identity(Path("client.pem").read_bytes(), Path("client-key.pem").read_bytes())
    .with_handshake_timeout(5.0)
)
etcd = Client(["https://127.0.0.1:2379"], connect_options=ConnectOptions().with_tls(tls))

Working with key prefixes

EtcdCommunicator.get_prefix(prefix) returns a list of key-value pairs matching the given prefix.

async def main():
    async with etcd.connect() as communicator:
        await communicator.put('/testdir'.encode(), 'root'.encode())
        await communicator.put('/testdir/1'.encode(), '1'.encode())
        await communicator.put('/testdir/2'.encode(), '2'.encode())
        await communicator.put('/testdir/2/3'.encode(), '3'.encode())

        test_dir = await communicator.get_prefix('/testdir'.encode())

        for resp in test_dir:
            # ['/testdir', 'root']
            # ['/testdir/1', '1']
            # ['/testdir/2', '2']
            # ['/testdir/2/3', '3']
            print([bytes(v).decode() for v in resp])

Automatic runtime cleanup

The tokio runtime is automatically cleaned up when the last client context exits. In most cases, no explicit cleanup is needed:

import asyncio
from etcd_client import EtcdClient

async def main():
    etcd = EtcdClient(['http://127.0.0.1:2379'])
    async with etcd.connect() as communicator:
        await communicator.put('testkey'.encode(), 'testvalue'.encode())
        value = await communicator.get('testkey'.encode())
        print(bytes(value).decode())
    # Runtime automatically cleaned up when context exits

asyncio.run(main())

The library uses reference counting to track active client contexts. When the last context exits, the tokio runtime is gracefully shut down, waiting up to 5 seconds for pending tasks to complete. If you create new clients after this, the runtime is automatically re-initialized.

For advanced use cases requiring explicit control, cleanup_runtime() is available:

from etcd_client import cleanup_runtime

# Force cleanup at a specific point (usually not needed)
cleanup_runtime()

Operating with Etcd lock

Just like EtcdClient.connect(), you can easily use etcd lock by calling EtcdClient.with_lock(lock_opts).

async def first():
    async with etcd.with_lock(
        EtcdLockOption(
            lock_name='foolock'.encode(),
        )
    ) as communicator:
        value = await communicator.get('testkey'.encode())
        print('first:', bytes(value).decode(), end=' | ')

async def second():
    await asyncio.sleep(0.1)
    async with etcd.with_lock(
        EtcdLockOption(
            lock_name='foolock'.encode(),
        )
    ) as communicator:
        value = await communicator.get('testkey'.encode())
        print('second:', bytes(value).decode())

async with etcd.connect() as communicator:
    await communicator.put('testkey'.encode(), 'testvalue'.encode())
await asyncio.gather(first(), second())  # first: testvalue | second: testvalue

Lock timeout

Adding timeout parameter to EtcdLockOption will add a timeout to the lock acquiring process.

async def second():
    await asyncio.sleep(0.1)
    async with etcd.with_lock(
        EtcdLockOption(
            lock_name='foolock'.encode(),
            timeout=5.0,
        )
    ) as communicator:
        value = await communicator.get('testkey'.encode())
        print('second:', bytes(value).decode())

Lock TTL

Adding ttl parameter to EtcdLockOption will force the lock to be released after the given seconds.

async def first():
    async with etcd.with_lock(
        EtcdLockOption(lock_name="foolock".encode(), ttl=5)
    ) as communicator:
        await asyncio.sleep(10)

async def second():
    start = time.time()
    async with etcd.with_lock(
        EtcdLockOption(lock_name="foolock".encode(), ttl=5)
    ) as communicator:
        print(f"acquired lock after {time.time() - start} seconds")

# 'second' acquired lock after 5.247947931289673 seconds
done, _ = await asyncio.wait([
    asyncio.create_task(first()),
    asyncio.create_task(second())
], return_when=asyncio.FIRST_COMPLETED)

for task in done:
    print(task.result())

Watch

You can watch changes on a key with EtcdCommunicator.watch(key).

async def watch():
    async with etcd.connect() as communicator:
        async for event in communicator.watch('testkey'.encode()):
            print(event.event, bytes(event.value).decode())

async def update():
    await asyncio.sleep(0.1)
    async with etcd.connect() as communicator:
        await communicator.put('testkey'.encode(), '1'.encode())
        await communicator.put('testkey'.encode(), '2'.encode())
        await communicator.put('testkey'.encode(), '3'.encode())
        await communicator.put('testkey'.encode(), '4'.encode())
        await communicator.put('testkey'.encode(), '5'.encode())

await asyncio.gather(watch(), update())
# WatchEventType.PUT 1
# WatchEventType.PUT 2
# WatchEventType.PUT 3
# WatchEventType.PUT 4
# WatchEventType.PUT 5

Watch with prefix

Watching changes on keys with a specific prefix can be done with EtcdCommunicator.watch_prefix(key_prefix).

async def watch():
    async with etcd.connect() as communicator:
        async for event in communicator.watch_prefix('/testdir'.encode()):
            print(event.event, bytes(event.key).decode(), bytes(event.value).decode())

async def update():
    await asyncio.sleep(0.1)
    async with etcd.connect() as communicator:
        await communicator.put('/testdir'.encode(), '1'.encode())
        await communicator.put('/testdir/foo'.encode(), '2'.encode())
        await communicator.put('/testdir/bar'.encode(), '3'.encode())
        await communicator.put('/testdir/foo/baz'.encode(), '4'.encode())

await asyncio.gather(watch(), update())
# WatchEventType.PUT /testdir 1
# WatchEventType.PUT /testdir/foo 2
# WatchEventType.PUT /testdir/bar 3
# WatchEventType.PUT /testdir/foo/baz 4

Transaction

You can run etcd transactions by calling EtcdCommunicator.txn(txn).

Constructing compares

Constructing compare operations can be done using the Compare class.

from etcd_client import Compare, CompareOp
compares = [
    Compare.value('cmpkey1'.encode(), CompareOp.EQUAL, 'foo'.encode()),
    Compare.value('cmpkey2'.encode(), CompareOp.GREATER, 'bar'.encode()),
]

Executing transactions

async with etcd.connect() as communicator:
    await communicator.put('cmpkey1'.encode(), 'foo'.encode())
    await communicator.put('cmpkey2'.encode(), 'baz'.encode())
    await communicator.put('successkey'.encode(), 'asdf'.encode())

    compares = [
        Compare.value('cmpkey1'.encode(), CompareOp.EQUAL, 'foo'.encode()),
        Compare.value('cmpkey2'.encode(), CompareOp.GREATER, 'bar'.encode()),
    ]

    res = await communicator.txn(Txn().when(compares).and_then([TxnOp.get('successkey'.encode())]))
    print(res)  # TODO: Need to write response type bindings.

How to build

Prerequisites

  • The Rust development environment (2021 edition or later) using rustup or your package manager
  • The Python development environment (3.10 or later) using pyenv or your package manager

Build instructions

First, create a virtualenv (using the standard venv package, pyenv, or your preferred tool). Then, install the PEP-517 build toolchain and run it.

pip install -U pip build setuptools
python -m build --sdist --wheel

This will automatically install build dependencies like maturin and build the wheel and source distributions under the dist/ directory.

How to develop and test

Setup development environment

This project uses uv for fast Python package management. Building the Rust extension requires Rust 1.88 or later.

# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install all dependencies and build the package
make install

# Or manually:
uv sync --all-extras  # Installs all dependencies from pyproject.toml
uv run maturin develop  # Builds and installs the Rust extension

Code quality checks

This project uses ruff for linting/formatting and mypy for type checking:

make fmt       # Format all code (Python + Rust)
make lint      # Lint all code (Python + Rust)
make fix       # Auto-fix all issues (Python + Rust)
make typecheck # Type check Python code
make check     # Run all checks

Running tests

make test      # Run tests using uv
uv run pytest  # Or directly with uv

# Tests use testcontainers to automatically spin up etcd

Metadata

Release files for etcd-client-py 0.6.0

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

Source distribution (sdist)

Source distribution for etcd-client-py 0.6.0
File Size Uploaded Provenance Actions
etcd_client_py-0.6.0.tar.gz 183.9 kB With provenance Details for etcd_client_py-0.6.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for etcd-client-py 0.6.0
File Actions
etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details for etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details for etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
etcd_client_py-0.6.0-cp314-cp314t-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details for etcd_client_py-0.6.0-cp314-cp314t-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
etcd_client_py-0.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for etcd_client_py-0.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
etcd_client_py-0.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details for etcd_client_py-0.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
etcd_client_py-0.6.0-cp314-cp314-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details for etcd_client_py-0.6.0-cp314-cp314-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
etcd_client_py-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for etcd_client_py-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
etcd_client_py-0.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for etcd_client_py-0.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
etcd_client_py-0.6.0-cp313-cp313-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details for etcd_client_py-0.6.0-cp313-cp313-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
etcd_client_py-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for etcd_client_py-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
etcd_client_py-0.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for etcd_client_py-0.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
etcd_client_py-0.6.0-cp312-cp312-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details for etcd_client_py-0.6.0-cp312-cp312-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
etcd_client_py-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for etcd_client_py-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
etcd_client_py-0.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for etcd_client_py-0.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
etcd_client_py-0.6.0-cp311-cp311-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details for etcd_client_py-0.6.0-cp311-cp311-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Total release size: 54.0 MB

Release files / etcd_client_py-0.6.0.tar.gz

Download URL etcd_client_py-0.6.0.tar.gz
Size 183.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8d07bf12b1c4ceffa5e206aca061cb8f8ee849b65db224ac386ef81f752e26a5
BLAKE2b-256 checksum
How to use checksums
710001a2c5104da752f41e019cf359bc56164364767ffbcd46bc880cb34fee6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a16a58b50a958cf508a0e4726e2af68d0a2d41ac9c30be03085d82f3590dad54
BLAKE2b-256 checksum
How to use checksums
14ed3076f0ba976dc402e24033d4e6234d78f0215b985fab7ce49fa7ab79a41a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
9e1e49b09b56f24c5fc961749d7eacb7ef4e753c35f5372c28267a01f59626d1
BLAKE2b-256 checksum
How to use checksums
0ce3475d4ae456ac19aae1126b1203619e5567848cfc60e811c74ecab235b7a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314t-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314t-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.1 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1b94e831a7819dba658be83a51654d6599b8ba0edfe7b58fb5763d176b8ad00e
BLAKE2b-256 checksum
How to use checksums
a46af6fbbae1be7a078a3f2e5f6248846dba9bb11faac4ec913497639d1dcce5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
73f1d6eaec89f088e20c2029dac92ff1aebe8c5430b1bf33486b2b27a5677eb7
BLAKE2b-256 checksum
How to use checksums
9facc4d2d171684e3222124b0b3ac9c8cedf3b6134bc834d0695f5d2ac946ab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.9 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3a74d402ca8c28362c99e8ad1c5a9231a5632b54391bfd09d7df3c272894c1bf
BLAKE2b-256 checksum
How to use checksums
eaf8bcf7098660c43b40c31a82c8643d4e8f8ca97bc3da946b3c4aeff68b2c7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp314-cp314-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL etcd_client_py-0.6.0-cp314-cp314-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.1 MB
Tags CPython 3.14 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1d50a06a3907e8cb5047264ac3ac7ab19bc2a83176e93829c5bf0f8b41a1d7df
BLAKE2b-256 checksum
How to use checksums
b2b38ae3093528de8a75e317d7de8c3efae1d9ed4c298d9edb473531806acaa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL etcd_client_py-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.8 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d7863a2839589441145bf0bbf773c66db834213c883b803b3a683acea30712bd
BLAKE2b-256 checksum
How to use checksums
5f04033d0ffd95f128b3d6512c0caa621ff7f1d1d6a9869cfcd42c4c674cf1c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL etcd_client_py-0.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.9 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6127fb590a0166ea1a0afe69d766bc6b6d436b09f44289599954a13e2940fc5e
BLAKE2b-256 checksum
How to use checksums
85d46c8fb6c9807d36c3f6fa29b78ad23f73a052ea6445fd53ea49ed6e5a26ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp313-cp313-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL etcd_client_py-0.6.0-cp313-cp313-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.1 MB
Tags CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bbd2aef2931b037b6421a630364dbb2b6054a9b3b76399ea72d4253c5ba96610
BLAKE2b-256 checksum
How to use checksums
e5eea4660b5f25a82b4c00f101eab2bf1e371f5fac2b0468f0f3fa95338433d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL etcd_client_py-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
18bb804d8673845450528c09ed479838e7be444ed4f77699f168216f33f487dd
BLAKE2b-256 checksum
How to use checksums
d6f1907bcb9e8a619264acd615799a45c1297cc79a551c5fd2a316ad6ef52371
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL etcd_client_py-0.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.9 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2722f12b47f8c1e3c391b62d1e6448b08bc4f88c330efe002e80569df523f36a
BLAKE2b-256 checksum
How to use checksums
22347f72f130cc82f1d8817d1951160ad18af3a2b33ee276bc051e14d282b8e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp312-cp312-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL etcd_client_py-0.6.0-cp312-cp312-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.1 MB
Tags CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
aae9433241d8c4a33628a3c6a45220907c1859485ba77aa9c8f2d9ae3631dcc2
BLAKE2b-256 checksum
How to use checksums
43fc52357d52d2c12d0d9e4964070a514e8d4eb0165fb0cfb6f932f7b0fe19a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL etcd_client_py-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f26599287a18cbc87f2d7e84cebd888bc1275b97e1e5d9517b1a2e4e3a520c2c
BLAKE2b-256 checksum
How to use checksums
9916facd02e8a636f980d61649cabd596986ed95d68c866fa12632a86a34f534
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL etcd_client_py-0.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
49ab952fca32383186930d43d56e7e11a008f451ce45d189794a2313d77f996b
BLAKE2b-256 checksum
How to use checksums
269f476db465ff4a279b8f2b95544433c199612f747f70001b5b309ba25e814e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / etcd_client_py-0.6.0-cp311-cp311-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL etcd_client_py-0.6.0-cp311-cp311-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.1 MB
Tags CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e135114e70b7b53fbcc27d25aef663e9ada662f7040af57c158f155eeb1371e2
BLAKE2b-256 checksum
How to use checksums
a83848c281128c45ab120367cf2c241fde6381fa4e464351bb4f881114777ac2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Security for etcd-client-py 0.6.0

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 16 files in this release have been uploaded with provenance metadata.

Select from 16 files

Attestation for etcd_client_py-0.6.0.tar.gz

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 Nov 6, 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.

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