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

Uploaded CPython 3.9+Windows x86-64

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

Uploaded CPython 3.9+macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ea2896c0b9c8c45595bddac4e0ed14793a19f9b8ce39eb2246f8b9601b9d15ab
MD5 2b021dc462ca52bed56907ac70925498
BLAKE2b-256 293e9fdec3aa0cdb3c9a224499b1fba0f757dc86d793c02e7601dceed33d85c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e14f336afcaeb5f18cad6b052ddea9788931ddf2f3275a4a5eb7c0ac64fd9f28
MD5 d28338e20769e3b026b116cb98e164b2
BLAKE2b-256 7d49cca6fc6b2de83f5727f9f2bb74628924fcff40fd2444037869bb6ee7df34

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e70162cc36a97c9e1bdc44f06b34ffaae941ed44bc80f593e32f3cbd70b88a2d
MD5 1095e8ac085382d3bb98718980e5abc7
BLAKE2b-256 eec078ccb2e724316d3044d0c94fa9beda9090bc85b91470625db3e1e8dc90c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc6-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 873941c6a0c5b2125717eee964c276c97469e14f82bc50abaa863f71666db15a
MD5 8d21577aea31631b3a83e31c8dfbb76f
BLAKE2b-256 9ca49b6efa3d6ac501e18d21ab91efa86c09d7067d2298d768ea0b20a23e6017

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for hashiverse_client-1.0.5rc6-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 588287f9a0c87b3becbc55ec3ac11ceb06801a7ab7989806219e2cd6271d7baf
MD5 72f7af47e25eab0482b13a5229a9c403
BLAKE2b-256 404f8237ac5b9555cc5e056e05035730b1442e1a5f27a9a0ccb58503cbad68a8

See more details on using hashes here.

Provenance

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