Skip to main content

A Library for accessing the Swarm network written in Python

Project description

SwarmLib Repository

This library facillitates access to the Swarm network.

Examples

The SwarmLib makes it easy to create Swarm Agents. There are two types of Agents: Consumers and Providers. See the examples below.

Consumer

A consumer is an agent that only uses the Swarm resources. For example:

from swarm_lib import Consumer
consumer = Consumer(keys_file="keys.json")
query = {
    "operation": {"@type": "swarm:ReadOperation", "returns": "swarm:Image"},
    "usageDuration": 30
}
image_executor = consumer.get_executor(query)
if image_executor.contract_providers():
    result = image_executor.execute()

Provider

A provider makes resources available to the Swarm. For example:

from flask import Flask, request, jsonify
from swarm_lib import Provider
from onboard_camera import read_frame

app = Flask(__name__)

provider = Provider(
    description_file="./description.jsonld",
    policies_file="./policies.json",
    keys_file="./keys.json"
)

@app.route("/camera-service/image", methods=['GET'])
@provider.enforce_authorization
def get_frame():
    try:
        return jsonify(read_frame())
    except Exception as e:
        return jsonify({"error": "could not get frame from onboard camera"})

if __name__ == "__main__":
    if provider.join_swarm():
        app.run(host="0.0.0.0", port=provider.port(), threaded=True, debug=True, use_reloader=True)
    else:
        print("Could not join the Swarm Network")

Usage

Install with pip:

pip3 install swarm_lib

Follow the examples above to build your own Swarm Agents.

Contributing

Dependencies

sudo apt install python3-pip python3-setuptools python3-dev
pip3 install -r requirements.txt

Publish a new version

To make a new release, follow these steps:

  1. Update the version in setup.py
  2. Run python3 setup.py sdist bdist_wheel to create a distributable release
  3. Run python3 -m twine upload dist/* to upload to pip

If a password is asked and you don't know what to do, ask the maintainer (Geovane Fedrecheski).

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

swarm_lib-0.0.18.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

swarm_lib-0.0.18-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file swarm_lib-0.0.18.tar.gz.

File metadata

  • Download URL: swarm_lib-0.0.18.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.26.0 CPython/3.7.3

File hashes

Hashes for swarm_lib-0.0.18.tar.gz
Algorithm Hash digest
SHA256 078d8cbdd6cb7d4c134888497f975e3e51ce6e06c0b8a2b55f0e3cc7fda653c7
MD5 3bd250163a0cf854de95e336d073d24b
BLAKE2b-256 a3bfc788cd2c4527a850550fd47380ff1124af61020ed5b9a055e77d10695630

See more details on using hashes here.

File details

Details for the file swarm_lib-0.0.18-py3-none-any.whl.

File metadata

  • Download URL: swarm_lib-0.0.18-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.26.0 CPython/3.7.3

File hashes

Hashes for swarm_lib-0.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 2a5b5653737ab42aebc5d0430c1cff04de1c8b317597ffdb71cf3cc28cdc1b4a
MD5 8e99ff5d0f98c617dc2854cacaf9e9e0
BLAKE2b-256 2b56cb4526b8629b4a5d8ba0b8fab99e95be0f412c60e1eae867c94d0024442e

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