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

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.5rc4-cp39-abi3-win_amd64.whl (6.7 MB view details)

Uploaded CPython 3.9+Windows x86-64

hashiverse_client-1.0.5rc4-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.5rc4-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.5rc4-cp39-abi3-macosx_11_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

hashiverse_client-1.0.5rc4-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.5rc4-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc4-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1897e285ec06d69a56959672f0a959e7f0ec28920235dc4b36cddc4b041483d0
MD5 ccc9cb08e52dd70c617fc132bc2350e7
BLAKE2b-256 13cd7522ff8f0618c4027e5918d573716d4ede679dd8df6a78216bab9397f545

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.5rc4-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.5rc4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad16c864e5ac2996ca8fc2b2ac64110554bf76084998c61fda40f2ace3a7deae
MD5 cf56c7d7a6fec7c98ca0ef61088ff060
BLAKE2b-256 99932c8ae9a4591f411ea9309ed4f17e41d48ff43d7951c2ac66a93147ed8c75

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.5rc4-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.5rc4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3a896136ca7943737d70fe8e67634abb413c18410ebaf4bd157d66691250313a
MD5 1e955043ce30b90645c358f0c10cfd5d
BLAKE2b-256 5cfcb56306806a85bf25c8e6915d6b03b909d0c0d4f5baaf2995dece271fef84

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.5rc4-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.5rc4-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc4-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3cb7e5b2fcc3ca525fba3f7348350d2e4026d56a46547e5236f24f04637343b
MD5 d510d767ef8e8d181dfd9f5d59b86192
BLAKE2b-256 0f7536c3c6a1824a13af06d4449e7cee7aba82330af54d838f66ad983ec90e29

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.5rc4-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.5rc4-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc4-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 06f05256a821cc4010fa7cd5fd637747c044ff31956e091bc4b06df905e0c201
MD5 923edf0f21002daf736fde6c3082f61a
BLAKE2b-256 9256add190cd2271ec04b4826ca735a18eee1905f5428ba8ace2deb2c79bb7b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for hashiverse_client-1.0.5rc4-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