Skip to main content

Python client for the Hashiverse decentralized social network

Project description

hashiverse-client

Python client for Hashiverse — your open-source decentralized X/Twitter replacement. Wraps the Rust hashiverse-lib via PyO3 for native performance.

test-hashiverse-client-python publish-hashiverse-client-python

Install

pip install hashiverse-client

Requires Python 3.9+. Pre-built wheels are published for Linux, macOS, and Windows.

Quick start

from hashiverse_client import HashiverseClient

client = HashiverseClient.create_from_keyphrase(
    key_phrase="my secret keyphrase",
    data_dir="~/.hashiverse",
    passphrase="my secret passphrase",  # encrypts key files at rest (default: "" = no encryption)
)

print(client.client_id)
client.post("Hello from Python! #hashiverse-python")

timeline = client.get_hashtag_timeline("hashiverse-python")
for post in timeline.posts:
    print(f"{post.client_id[:8]}: {post.post}")

What you can do

  • Create or reload a cryptographic identity from a key phrase, with optional at-rest encryption.
  • Post messages to the network.
  • Read hashtag timelines.
  • Fetch trending hashtags.
  • Persist keys to a local data directory and reconnect to the same identity later.

See examples/hello_hashiverse.py for an end-to-end walkthrough covering identity creation, key reload, timeline reads, and trending hashtags.

Reloading a stored identity

After create_from_keyphrase has run once, the key is persisted in data_dir. Subsequent runs can skip the keyphrase and reconnect via the stored key:

client = HashiverseClient.create_from_stored_key(
    client_id_hex=client_id,
    data_dir="~/.hashiverse",
    passphrase="my secret passphrase",  # must match the passphrase used to create the key
)

Connecting to a local server

By default the client uses the public bootstrap addresses. To point at a local cluster (handy for testing), pass bootstrap_addresses:

client = HashiverseClient.create_from_keyphrase(
    key_phrase="my example keyphrase",
    data_dir=data_dir,
    passphrase="my secret passphrase",
    bootstrap_addresses=["127.0.0.1:443"],
)

A local cluster can be started with the test harness from this repository — see the "Running the example" section below.


Developing this package

The rest of this document describes how to build, test, and release hashiverse-client itself. End-user usage is covered above.

Prerequisites

  • Python 3.9+
  • Rust nightly toolchain (see rust-toolchain.toml in the workspace root)

Development build

cd hashiverse-rust/hashiverse-client-python

# Create and activate a virtual environment
python -m venv .venv

# Windows
.venv\Scripts\activate

# Linux/macOS
source .venv/bin/activate

# Install maturin and build the extension into the venv
pip install maturin
maturin develop

maturin develop compiles the Rust code in debug mode and installs the resulting Python package into the active venv. Re-run it after any Rust code changes.

For a faster extension (recommended if exercising PoW or network operations):

maturin develop --release

Production build

To build a distributable wheel:

maturin build --release

The wheel is written to target/wheels/ and can be installed with:

pip install target/wheels/hashiverse_client-*.whl

Running tests

The test suite exercises offline client operations (no server required): identity creation, key management, and storage operations.

cd hashiverse-rust/hashiverse-client-python
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install pytest
maturin develop --release
python -m pytest tests/ -v

Running the example

The example connects to a local hashiverse server, creates an identity, fetches trending hashtags, and reads the #hashiverse timeline.

  1. Start a local server cluster using the test harness (in a separate terminal from the workspace root):
cd hashiverse-rust
cargo run -p hashiverse-integration-tests --bin test_harness
  1. Run the example:
cd hashiverse-rust/hashiverse-client-python
python examples/hello_hashiverse.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hashiverse_client-1.0.6rc1-cp39-abi3-win_amd64.whl (6.7 MB view details)

Uploaded CPython 3.9+Windows x86-64

hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

hashiverse_client-1.0.6rc1-cp39-abi3-macosx_11_0_arm64.whl (6.4 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

hashiverse_client-1.0.6rc1-cp39-abi3-macosx_10_12_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file hashiverse_client-1.0.6rc1-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.6rc1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 6f48116c50f6ea9e9316fa2de90c0fdede30113126c4c489bf3b0f26fb42b1c8
MD5 d1ae784d8fa33ab18d543faadce25ef8
BLAKE2b-256 315b8a789329485aefe438f5680c297fd21a675d670c9e07e17c9a6ef0ef5635

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.6rc1-cp39-abi3-win_amd64.whl:

Publisher: publish-hashiverse-client-python.yml on hashiverse/hashiverse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ba5f9d093ce8925e9dc80f67b88cb7972907e7c210c933dbed746f4c34fb03a
MD5 6fa5035edbd63df4b5964fcf26de69ed
BLAKE2b-256 82f114e188908431c94d3efac62987447726c48473dbbec906e2367f03863402

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-hashiverse-client-python.yml on hashiverse/hashiverse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 12128ca287de35f831e4ca147d561651c8d86730fda9a16bad63ffcbd1dc930c
MD5 45c8d8725dbb29802752f7f4346585c7
BLAKE2b-256 51929cfbbf120f758f4a3dee815f891c787be97d388915a1103d930ed42d93ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.6rc1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-hashiverse-client-python.yml on hashiverse/hashiverse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hashiverse_client-1.0.6rc1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.6rc1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0dc0b61b1657fac0a9664f36cc94aa11be11ee6b3378c650998d290465ebf507
MD5 0f6ed72238ad41d56eb2775f7068cff3
BLAKE2b-256 357af3a45c9e3f12e46af039e7c367ce7de9c72c0394006cbd320496118d8cc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.6rc1-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: publish-hashiverse-client-python.yml on hashiverse/hashiverse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hashiverse_client-1.0.6rc1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.6rc1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8dc79b37da69757cd63cf52d7cfecf3fc9af0a5b72a4a8922f8dcbeeb45d9665
MD5 73d37e41f28fd244aa0c1fafbeb0f270
BLAKE2b-256 b1a8c2bf1bf5a4ee5c6736ae52d758cc9f75a121ebdd94d62870380da8fbb527

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.6rc1-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: publish-hashiverse-client-python.yml on hashiverse/hashiverse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page