Getting users into nostr, fastr. A basic nostr `Client` class built in the nbdev (fast) framework to get people started nostr.
Project description
nostrfastr
What is this?
- This package attempts to be a well documented and tested instance of a very basic client framework in nostr that can help others understand nostr quickly or get started sending messages in minutes.
- Contained is a collection of tools built on top of this basic
Client
class showing some potential uses of nostr any how quickly we can build on it in python.- A “sentinel” node that serves as a barebones client to rebroadcast user data across additional nostr relays. While this is a relatively simple concept I haven’t seen much discussion around the potential benefits and implications.
notifyr
- a decorator that will alert on success or failure of any decorated function via nostr DM- a vanity address generator decorated with the notifyr function so you can leave it running and get notified when it finishes
Why nbdev?
This library uses the nbdev framework to
aggregate some useful tools from
python-nostr into a more
structured client
class that could serve as the basis for other python
tools. nbdev
is great because it allows for relatively easy
development of code in-line with readable and explanatory documentation.
This webpage is a rendering of the same notebooks that are exported to
form the package code. If you clone the Github repository you can view
and run the code you see in the documentation. It will almost certainly
not be the most perfomant way to implement much of what I am doing here,
but I hope it can make the
nostr protocol more
accessible to a wider audience.
Known issues
notifyr
- see thenotifyr
page for more detail on these issueskeyring
may need uninstalled dependencies on linux builds- Current spec of nostr DMs is likely not adequate for secure usage of this module for sensitive data.
Install
pip install nostrfastr
or alternatively, clone the github repositor and refer to this guide to get started working in nbdev.
How to use
from nostrfastr.client import Client
Connect and perform an operation…
with Client(relay_urls=['wss://relay.damus.io']) as client:
print('Are we connected?')
print('\t', client.relay_manager.connection_statuses)
print('Are we connected?')
print('\t', client.relay_manager.connection_statuses)
Are we connected?
{'wss://relay.damus.io': True}
Are we connected?
{'wss://relay.damus.io': False}
And use the client to build something useful with nostr - like a bot that notifies you of your python processing status on long code runs
from nostrfastr.notifyr import notifyr
@notifyr
def raise_error():
raise Exception('Oh no! Process failed!')
@notifyr
def success():
return 1+1
Or generate an vanity address and have it notify you at another nostr address when it’s done
from nostrfastr.vanity import vanity_notifyr
vanity_notifyr(startswith='23', style='npub')
/Users/ryanarmstrong/python/nostrfastr/nostrfastr/client.py:479: UserWarning: the current implementation of messages should be used with caution
see https://github.com/nostr-protocol/nips/issues/107
warnings.warn('''the current implementation of messages should be used with caution
PrivateKey(npub123kyc...nwdqt768zj)
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
Built Distribution
File details
Details for the file nostrfastr-0.0.2.tar.gz
.
File metadata
- Download URL: nostrfastr-0.0.2.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02729b82f0e02144b5f5646f40d1bab4ea75799f01023c03d728567727be6acb |
|
MD5 | 41a3600a0fb79be3b31398c7ad8587b2 |
|
BLAKE2b-256 | 4d474e023fff35887ffc689c062e1636e2e87830c0410bf0b1e2b5e1c9398623 |
File details
Details for the file nostrfastr-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: nostrfastr-0.0.2-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a93ba1949ec36bad72dfc6abe7cedb97e13845bdffcb18205490f2c81936354 |
|
MD5 | 444a325b187697a52b8b90717191228a |
|
BLAKE2b-256 | 358cac814d339ccce545b3d32380e8f6c366ca8d2b48944998458df16cb22bbe |