Skip to main content

Legible Encoding for Addressable Packets

Project description

L3aP for Python

Legible encoding for addressable packets for python

Specification documentation:


pip install leap-protocol

Basic Usage

Encoding a packet:

import leap-protocol as leap

codec = leap.Codec("leap-config.json")
packet = leap.Packet("set", "led/red", True)
encoded = codec.encode(packet)


Decoding a packet

import leap-protocol as leap

codec = leap.Codec("leap-config.json")


# Note, if there is a remainder it will be stored back in bytes
received, packet = codec.Decode(received)
data = codec.unpack(packet)

for branch, value in data.items():
  ... do stuff ...



Codec Class

codec = Codec(config_file_path)

  • config_file_path a string to point to the L3aP config file.
  • codec L3aP codec object

Instantiates a L3aP codec object for encoding packets to strings and decoding strings to packets.


codec = leap.Codec("leap-config.json")

bytes = encode(packets)

  • packets either a leap.Packet object or a list of leap.packet objects.
  • bytes utf-8 byte string

Encodes one or more packets into a utf-8 byte string.


packet_red = leap.Packet("set", "led/red", True)
packet_blue = leap.Packet("set", "led/blue", True)

encoded = codec.encode([packet_red, packet_blue])

(remainder, packets) = decode(bytes)

  • bytes utf-8 encoded byte-string
  • remainder unused bytes (if available)
  • packets an array of one or more decoded packets, empty if none

Decodes a utf-8 byte string into one or more packets


received_bytes +=
received_bytes, packets = codec.decode(received_bytes)

for packet in packets:

data = unpack(packet)

  • packet a leap.Packet
  • data a dictionary with address paths as keys (eg. led/red) mapping to thier respective values.

Extracts a dictionary from a packet to map address paths to thier respective values.


if packet.category == "set":
  commands = codec.unpack(packet)
  if 'led/red' in commands:

Packet Class

packet = Packet(category, path, payload)

  • category the type of packet
  • path (optional) a root path of payload data
  • payload (optional) the data to accompany the root path
  • packet a L3aP packet object

Constructs a L3aP packet for encoding. Note, payload can be an array and set multiple fields at once when the path is a parent.


accelerometer_packet = leap.Packet("pub", "imu/accel", [accel_x, accel_y, accel_z])
disable_packet = leap.Packet("set", "control/balance/disable")

add(path, payload)

  • path a root path of payload data
  • payload (optional) the data to accompany the root path

Adds path to the packet and optionally a payload. This can be used to create compound packets which allows sets of data to be processed at the same time.


sensor_packet = leap.Packet("pub", "imu/accel", [accel_x, accel_y, accel_z])
sensor_packet.add("barometer/pressure", baro_pressure)


The packet's category string.


if packet.category == "pub":


result = verify(config_file)

  • config_file a valid L3aP config file
  • result false if config_file is invalid, true otherwise

Checks the contents of a config_file for errors. Prints details of the first failure to stdout. Useful for regression testing.


def test_valid_config(self):

Command Line

Generate a default json config file:

python3 -m leap --json filename.toml

Generate a default toml config file:

python3 -m leap --toml filename.toml

Verify the contents of your toml/json config file:

python3 -m leap --validate filename.json


python3 -m leap --help

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for leap-protocol, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size leap_protocol-1.0.1-py3-none-any.whl (12.9 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size leap-protocol-1.0.1.tar.gz (16.3 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page