Skip to main content

Typed, async‑first Python client for the Pletyvo decentralized platform and it's protocols (Python ≥ 3.9)

Project description

[!WARNING] This is an unstable version. Changes may be backwards incompatible

py-pletyvo

PyPI - Version PyPI - License PyPI - Python Version

Typed, async‑first Python client for the Pletyvo decentralized platform and it's protocols (Python ≥ 3.9)

Install

pip install -U pletyvo

Usage

Engine

To begin using the client, you need to create an engine — the core component responsible for all communication with the Pletyvo gateway. You can create one using pletyvo.DefaultEngine:

import pletyvo

engine: pletyvo.abc.Engine = pletyvo.DefaultEngine(
    config=pletyvo.Config(
        url="http://testnet.pletyvo.osyah.com",
        network="AAEAAAAB",
    ),
)

The pletyvo.Config accepts:

  • url: The gateway endpoint.
  • network | None: the network identifier encoded as a base64 string. By default, has an already set network on the node side

Service

A service is a high-level interface that aggregates protocol-specific HTTP services. This top-level object internally composes pletyvo.DAppService & pletyvo.DeliveryService. The service requires a signer — an object responsible for producing cryptographic signatures over event bodies. The signer must implement the dapp.abc.Signer interface.

import pletyvo

service = pletyvo.Service.di(
    engine=engine,
    signer=signer,
)

Want full control?

You can instantiate each service manually by passing required dependencies.

import pletyvo

service = pletyvo.Service(
    dapp=pletyvo.DAppService(
        hash=pletyvo.HashService(...),
        event=pletyvo.EventService(...),
    ),
    delivery=pletyvo.DeliveryService(
        channel=pletyvo.ChannelService(...),
        post=pletyvo.PostService(...),
        message=pletyvo.MessageService(...),
    )
)

Dependency graph

pletyvo-dependency-graph

dApp

Platform docs: dApp

The dApp protocol defines how signed events are created, verified, and published on the Pletyvo network. Each dapp.Event consists of dapp.EventBody and a corresponding signature, both of which are required for persistence. You can create a dApp service using either the shorthand or manual constructor:

The dApp service itself does not construct or validate signatures — it only transmits fully-formed signed events.

import pletyvo

dapp_service = pletyvo.DAppService.di(
    engine=engine,
)
dapp_service = pletyvo.DAppService(
    hash=pletyvo.HashService(...),
    event=pletyvo.EventService(...),
)

Cryptography: signing with dapp.AuthHeader

Most dApp calls that create or update data must be signed with an ED25519 keypair; read‑only requests work without it.

py‑pletyvo lets you obtain a keypair from a random seed, raw bytes, or a file. If you prefer BIP‑39 mnemonics, generate a seed with an external helper such as osyah/homin and load it into the signer.

from pletyvo import dapp

signer: dapp.abc.Signer

signer = dapp.ED25519.gen()
signer = dapp.ED25519.from_file(...)
signer = dapp.ED25519(...)

Pletyvo: decentralized applications (UA)

Delivery

Platform docs: Delivery

The delivery layer exposes three narrow services — pletyvo.ChannelService, pletyvo.PostService, and pletyvo.MessageService — bundled under pletyvo.DeliveryService.

import pletyvo

delivery_service = pletyvo.DeliveryService.di(
    engine=engine,
    signer=signer,
    event=event_service,
)
delivery_service = pletyvo.DeliveryService(
    channel=pletyvo.ChannelService(...),
    post=pletyvo.PostService(...),
    message=pletyvo.MessageService(...),
)

Project details


Download files

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

Source Distribution

pletyvo-0.1.0.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

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

pletyvo-0.1.0-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file pletyvo-0.1.0.tar.gz.

File metadata

  • Download URL: pletyvo-0.1.0.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for pletyvo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 028781d5d7f5da1e0bf699bd460b3b64e17fa4b4abbbe9ce0010eb48268e745c
MD5 dbbf4c6e9c2a6e3e6dd71e5496de6a76
BLAKE2b-256 278d868f9b01bca4d28629ec5a9e0ac6bd87fcb5ab8a0a99df5d15d0081caf68

See more details on using hashes here.

File details

Details for the file pletyvo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pletyvo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for pletyvo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bebe83aa3be1829a83d0169439a62c7c59faf55098b643d8406f383aa7382c8d
MD5 fe64e1b1b4427c68c76fb8e73efe0deb
BLAKE2b-256 aa335e757e5b1376f11638b1512b932a2df20110260f5d0a870450eb30f18d3f

See more details on using hashes here.

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