Skip to main content

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 the notifyr page for more detail on these issues
    • keyring 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

Documentation can be found at https://armstrys.github.io/nostrfastr/

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

private_key = vanity_notifyr(startswith='23', style='npub')
print(private_key.public_key.bech32())
/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

It might take 0 seconds to find a npub pubkey that starts with npub123. Note that this is a very rough estimate and due to the random nature of finding vanity keys it could take MUCH longer.
npub1237z2shf8rlgs8xqg0cggz7dhxjtkszy205wesht2xr3nat86m7s30lqw5

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

nostrfastr-0.0.4.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

nostrfastr-0.0.4-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file nostrfastr-0.0.4.tar.gz.

File metadata

  • Download URL: nostrfastr-0.0.4.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for nostrfastr-0.0.4.tar.gz
Algorithm Hash digest
SHA256 bee7ec0d5c1d1f0500b17fd7e9f3490928f36f4e6c6b76d5fd089ce789453726
MD5 5a1deeaf3f11117794e266add06f36bc
BLAKE2b-256 7994a6ea1d1b5324b65b202ddce46edbc4e2e7ea66a6f3e580e856cff0989319

See more details on using hashes here.

File details

Details for the file nostrfastr-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: nostrfastr-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for nostrfastr-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ba6fdea93bf15ca39b8350701758790ad482ff7f4cfde20406c36b623b74fe0e
MD5 0e479edaf3065599016f1d8cc017f911
BLAKE2b-256 7eea7da2ffe9c5eb51acd7ea90f82a1d9345ea70b0a30962de5064861bf6f3d4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page