Skip to main content

Python implementation of a W3C WoT Runtime and the WoT Scripting API

Project description

WoTPy

Build Status Coverage Status

Introduction

WoTPy is an experimental implementation of a W3C WoT Runtime and the W3C WoT Scripting API in Python.

Inspired by the exploratory implementations located in the thingweb GitHub page.

Features

  • Supports Python 2.7, 3.6 and 3.7.
  • Fully-implemented WoT interface.
  • Multicast discovery based on mDNS.
  • Asynchronous I/O programming model based on coroutines.
  • Multiple client and server Protocol Binding implementations.

Feature support matrix

Feature Python 2.7 Python 3 Implementation based on
HTTP binding :heavy_check_mark: :heavy_check_mark: tornadoweb/tornado
WebSockets binding :heavy_check_mark: :heavy_check_mark: tornadoweb/tornado
CoAP binding :heavy_multiplication_x: :heavy_check_mark: chrysn/aiocoap
MQTT binding :heavy_multiplication_x: :heavy_check_mark: beerfactory/hbmqtt
mDNS discovery :heavy_multiplication_x: :heavy_check_mark: jstasiak/python-zeroconf

Couroutine APIs

WoTPy is based on the Tornado Framework. Users therefore have two different API options to write code based on coroutines:

  • Users on Python 3 may use the native asyncio module. This is, in fact, the recommended approach. It should be noted that Tornado on Python 3 acts basically as a wrapper around asyncio.
  • Users on Python 2.7 are restricted to writing Tornado coroutines (asyncio is not available on Python 2.7).

ToDo

  • Add missing sections to docs and deploy on a public site.
  • Subscription to Thing Description changes.
  • Validation of data schemas.
  • Enable Action handlers to return Observables.
  • Update protocol bindings to accept event subscription and cancellation data.

Installation

pip install wotpy

Development

To install in development mode with all the test dependencies:

pip install -U -e .[tests]

To run the tests in all supported environments:

WOTPY_TESTS_MQTT_BROKER_URL=mqtt://broker-url tox

Docs

Move to the docs folder and run:

make html

If you attempt to build the docs on a non-Linux platform or with Python 2.7 _autosummary will complain about being unable to import the unsupported modules (e.g. MQTT on Python 2.7). In this case the docs will be missing the sections regarding unsupported features.

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

wotpy-0.8.9.tar.gz (93.0 kB view details)

Uploaded Source

Built Distributions

wotpy-0.8.9-py3-none-any.whl (150.2 kB view details)

Uploaded Python 3

wotpy-0.8.9-py2-none-any.whl (150.1 kB view details)

Uploaded Python 2

File details

Details for the file wotpy-0.8.9.tar.gz.

File metadata

  • Download URL: wotpy-0.8.9.tar.gz
  • Upload date:
  • Size: 93.0 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.9.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for wotpy-0.8.9.tar.gz
Algorithm Hash digest
SHA256 81cf29e4a40c898608120d728a40cfdd5a4425c000aec00cc324d12e1f5a9d3d
MD5 1ae64df64af98c5e701f5c81c34e8596
BLAKE2b-256 9732a250906e7c3bfa1d0101b58ea3e8b532cb6c354f48a3ee1274f15c3dfcff

See more details on using hashes here.

File details

Details for the file wotpy-0.8.9-py3-none-any.whl.

File metadata

  • Download URL: wotpy-0.8.9-py3-none-any.whl
  • Upload date:
  • Size: 150.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.9.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for wotpy-0.8.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6c92fcb8e06b641f1bd66a09f9c3b757858ccb4628e4c18c680c1776791c4cae
MD5 d9d8e46edb6b356d92f9612a63bd2c54
BLAKE2b-256 c69d5a34df4e4acba79cdd8b56a7197ceaadba811fc51781c02698206e0275ea

See more details on using hashes here.

File details

Details for the file wotpy-0.8.9-py2-none-any.whl.

File metadata

  • Download URL: wotpy-0.8.9-py2-none-any.whl
  • Upload date:
  • Size: 150.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.9.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for wotpy-0.8.9-py2-none-any.whl
Algorithm Hash digest
SHA256 b0ee23f899e1a9ed08ee0fbe19f4ad9b698fa5eb0f0424d85502cc71fd272f5f
MD5 27267f07620396c29dce067c49b5500d
BLAKE2b-256 98147485bd655354760dda7c15a10abb8090b4a68a63a4c38fc8389fdf718569

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