Python implementation of a W3C WoT Runtime and the WoT Scripting API
:warning: Please note that this project is currently behind the current version of the W3C WoT specifications. Our intention is to get it up to speed and implement the latest Thing Description and Scripting API versions. However, we cannot provide a timeframe for this update.
Inspired by the exploratory implementations located in the thingweb GitHub page.
- Supports Python 2.7 and Python 3.
- 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|
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
- Users on Python 2.7 are restricted to writing Tornado coroutines (
asynciois not available on Python 2.7).
pip install wotpy
To install in development mode with all the test dependencies:
pip install -U -e .[tests]
To run the tests in all supported environments:
Some WoTPy features (e.g. CoAP binding) are not available outside of Linux. If you have Docker available in your system, and want to easily run the tests in a Linux environment (whether you're on macOS or Windows) you can use the Docker-based test script:
$ WOTPY_TESTS_MQTT_BROKER_URL=mqtt://192.168.1.141 ./pytest-docker-all.sh ... + docker run --rm -it -v /var/folders/zd/02pk7r3954s_t03lktjmvbdc0000gn/T/wotpy-547bed6bacf34ddc95b41eceb46553dd:/app -e WOTPY_TESTS_MQTT_BROKER_URL=mqtt://192.168.1.141 python:3.9 /bin/bash -c 'cd /app && pip install -U .[tests] && pytest -v --disable-warnings' ... Python 2.7 :: OK Python 3.6 :: OK Python 3.7 :: OK Python 3.8 :: OK Python 3.9 :: OK
Move to the
docs folder and run:
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.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.