This release is a pre-release and may not be stable for production use.
zelpy
zelpy is an async Python client for sending and receiving text and Ogg Opus
voice messages with the Zello Channel API. The library operates entirely on
in-memory data; the included CLI provides convenient file and audio conversion
support for testing.
Library usage
from zelpy import TextMessage, VoiceMessage, Zello, ZelloCredentials
credentials = ZelloCredentials(
developer_token="...",
username="...",
password="...",
issuer="...",
public_key="...",
private_key="...",
)
async with Zello(credentials, "my-channel") as client:
await client.send_text("Hello from Python")
async for message in client.messages():
if isinstance(message, TextMessage):
print(message.sender, message.text)
elif isinstance(message, VoiceMessage):
print(message.sender, message.audio)
Pass complete Ogg Opus bytes to client.send_voice(audio). Received
VoiceMessage.audio values are also complete Ogg Opus byte strings.
CLI usage
# Listen for text and voice messages
uv run zelpy --channel my-channel receive
# Send a text message
uv run zelpy --channel my-channel send-text "Hello from Python"
# Send an audio file
uv run zelpy --channel my-channel send-voice message.wav
The CLI accepts native Ogg Opus audio directly. For other audio formats, it
uses ffmpeg when available. Received voice messages are saved under
./received/ by default.
zello.yaml
The CLI reads credentials from ./zello.yaml in the current working directory:
developer_token: "..."
username: "..."
password: "..."
issuer: "..."
public_key: |
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
private_key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Use a different file with --credentials /path/to/zello.yaml.
Obtaining credentials
See Zello's Channel API authentication guide, then:
- Go to the Zello Developer Console and click Login.
- Enter your Zello username and password. If you don't have an account, download the Zello app and create one.
- Complete every field in the developer profile and click Submit.
- Click Keys, then Add Key.
- Copy and save the Sample Development Token, Issuer, and Private Key. Use Select All to ensure that each complete value is copied.
- Click Close.
The developer credentials expire every 30 days. See the Channel API authentication guide for renewal instructions and more information.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zelpy-0.0.0a1.tar.gz.
File metadata
- Download URL: zelpy-0.0.0a1.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d46bc0dd4e2ed3d57995f59d81a20d4afebfa7c32b6a37d7a88a18ded9562dbd
|
|
| MD5 |
0f8b85bd3b130d27fe0c967555331f15
|
|
| BLAKE2b-256 |
a9fe7c237b2422362e6c1b41a7bc05366a17fc11c5946715ab29ddc3c86fda81
|
Provenance
The following attestation bundles were made for zelpy-0.0.0a1.tar.gz:
Publisher:
release.yml on afourney/zelpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zelpy-0.0.0a1.tar.gz -
Subject digest:
d46bc0dd4e2ed3d57995f59d81a20d4afebfa7c32b6a37d7a88a18ded9562dbd - Sigstore transparency entry: 2336307848
- Sigstore integration time:
-
Permalink:
afourney/zelpy@04f3a1f470177ad48ca3b08a1b4b0160db69daf7 -
Branch / Tag:
refs/tags/v0.0.0a1 - Owner: https://github.com/afourney
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@04f3a1f470177ad48ca3b08a1b4b0160db69daf7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zelpy-0.0.0a1-py3-none-any.whl.
File metadata
- Download URL: zelpy-0.0.0a1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c36a9451f9920599e50c5721d5fe3363a78c0729d56a08f5d22e132b0abc4d43
|
|
| MD5 |
83eb43f426028080be9b3c2ffe016963
|
|
| BLAKE2b-256 |
89cb35a109a713a7b6ff2a660a9e30a5956fedc43711f0dedf43b71d87b6ad01
|
Provenance
The following attestation bundles were made for zelpy-0.0.0a1-py3-none-any.whl:
Publisher:
release.yml on afourney/zelpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zelpy-0.0.0a1-py3-none-any.whl -
Subject digest:
c36a9451f9920599e50c5721d5fe3363a78c0729d56a08f5d22e132b0abc4d43 - Sigstore transparency entry: 2336307853
- Sigstore integration time:
-
Permalink:
afourney/zelpy@04f3a1f470177ad48ca3b08a1b4b0160db69daf7 -
Branch / Tag:
refs/tags/v0.0.0a1 - Owner: https://github.com/afourney
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@04f3a1f470177ad48ca3b08a1b4b0160db69daf7 -
Trigger Event:
push
-
Statement type: