Skip to main content

Disruptive Technologies Python API.

Project description

Disruptive Technologies Python Client

build codecov

Documentation

Installation

The package can be installed through pip:

pip install --upgrade disruptive

or from source:

pip install .

Requirements

  • Python 3.9-3.13

Authentication

The package is authenticated by providing Service Account credentials in either of the following ways.

  • By setting the following environment variables:
export DT_SERVICE_ACCOUNT_KEY_ID="<SERVICE_ACCOUNT_KEY_ID>"
export DT_SERVICE_ACCOUNT_SECRET="<SERVICE_ACCOUNT_SECRET>"
export DT_SERVICE_ACCOUNT_EMAIL="<SERVICE_ACCOUNT_EMAIL>"
  • By providing the credentials programmatically:
import disruptive as dt

dt.default_auth = dt.Auth.service_account(
    key_id="<SERVICE_ACCOUNT_KEY_ID>",
    secret="<SERVICE_ACCOUNT_SECRET>",
    email="<SERVICE_ACCOUNT_EMAIL>",
)

See Python API Authentication for more details.

Usage

Once authenticated, most functionality can be accessed through resource methods on the following format.

disruptive.<Resource>.<method>()

A few common uses are showcased in the snippet below. See the Python API Reference for full documentation.

import disruptive as dt

# Fetch a sensor, specified by its ID.
sensor = dt.Device.get_device('<DEVICE_ID>')

# Printing the returned object will list all attributes.
print(sensor)

# Set a new label on the sensor.
dt.Device.set_label(sensor.device_id, sensor.project_id, key='nb', value='99')

# Get touch- and temperature event history for the sensor.
history = dt.EventHistory.list_events(
    sensor.device_id,
    sensor.project_id,
    event_types=[
        dt.events.TOUCH,
        dt.events.TEMPERATURE,
    ]
)

# Initiate an event stream for all devices in the sensor's project.
for event in dt.Stream.event_stream(sensor.project_id):
    # Print new events data as they arrive.
    print(event.data)

Logging

The simplest method is enabled by setting disruptive.log_level.

dt.log_level = dt.logging.INFO

If more fine-grained control is desired, the standard library logging can also be used.

logging.basicConfig(
    filename='example.log',
    format='[%(asctime)s.%(msecs)03d] %(levelname)-8s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
)
logging.getLogger('disruptive').setLevel(logging.INFO)

For both methods, the standard levels DEBUG, INFO, WARNING, ERROR, and CRITICAL are supported.

Examples

A few examples has been provided. Before running, the required environment variables listed at the start of each example must be set.

python examples/example_name.py

Exceptions

If a request is unsuccessful or has been provided with invalid parameters, an exception is raised. A list of available exceptions are available in the API Reference.

Development

Set up the development virtualenv environment:

make

Run unit-tests against the currently active python version:

make test

Lint the package code using MyPy and flake8:

make lint

Build the package distribution:

make build

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

disruptive-1.7.3.tar.gz (59.6 kB view details)

Uploaded Source

Built Distribution

disruptive-1.7.3-py3-none-any.whl (54.3 kB view details)

Uploaded Python 3

File details

Details for the file disruptive-1.7.3.tar.gz.

File metadata

  • Download URL: disruptive-1.7.3.tar.gz
  • Upload date:
  • Size: 59.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for disruptive-1.7.3.tar.gz
Algorithm Hash digest
SHA256 0d4d41707bf910150b44bfd2ccf04e8e54444d3d7ad7ce9e04ff6e8e6182fc82
MD5 ebc0bad0cb04f3b6314452a89f89b1cf
BLAKE2b-256 b5f9f0e86b2c8bce256b529beb4c64170f2dca4581030ffec3f49b8a94d9b652

See more details on using hashes here.

File details

Details for the file disruptive-1.7.3-py3-none-any.whl.

File metadata

  • Download URL: disruptive-1.7.3-py3-none-any.whl
  • Upload date:
  • Size: 54.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for disruptive-1.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b5ca16d24572ad654082efa96b950c27f71da08c0c5a5abdcbfc8b1465d5e284
MD5 36fd705946d7acd9d6c3611a78b79fa0
BLAKE2b-256 2e6c55189299b0d1764a57be560e9f6a0447b54b97d6e3b47950d3b2f0bd955d

See more details on using hashes here.

Supported by

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