Skip to main content

Simple RLP (Recursive Length Prefix)

Encode the and decode data structures simple and fast

This module is a alternative to official Ethereum pyrlp.

The pyrlp needs 5 dependencies. This alternative is write in pure python and don't have any dependencies. Recommended use for projects that don't need the Ethereum tools. If you already uses the Ethereum tools uses the pyrlp.

Features:

  • Very simple usage to encode and decode lists of data
  • Very fast to encode
  • Auto serialize python objects (check supported types)
  • Templates to convert bytes in decoded objects
  • No dependencies

Installation:

pip install simple-rlp 

Usage:

Encode:
>>> import rlp
>>> my_list = ['python', 'rlp', 255]
>>> rlp.encode(my_list)
b'\xcd\x86python\x83rlp\x81\xff'
Decode:
>>> import rlp
>>> my_list_encoded = b'\xcd\x86python\x83rlp\x81\xff'
>>> rlp.decode(my_list_encoded)
[b'python', b'rlp', b'\xff']

Use templates to decode and convert the bytes to python objects

Supported types:
  • Signed integer
  • Unsigned integer
  • Bool
  • Float
  • String
rlp.converters.UInteger # Signed integer
rlp.converters.SInteger # Unsigned integer
rlp.converters.Bool # Bool
rlp.converters.Float # Float
rlp.converters.String # String

Signed and unsigned integer uses by default big-endian order. If you need to use little-endian edit the static attribute:

LittleEndianUInt = rlp.converters.UInteger
LittleEndianUInt.byteorder =  'little'

String uses UTF-8 encoding by default if you need to use another then:

ASCIIString = rlp.converters.String
ASCIIString.encoding =  'ascii'
Template Usage:
>>> from rlp.converters import *
>>> import rlp

>>> my_list = ['rlp', 1024, 3.14159, True, b'\x08']
>>> my_list_template = [String, UInteger, Float, Bool, None]
>>> my_list_encoded = rlp.encode(my_list)
>>> rlp.decode(my_list_encoded, template=my_list_template)
['rlp', 1024, 3.141590118408203, True, b'\x08']

Note: Put None object to do nothing in template.

Metadata

Release files for simple-rlp 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-rlp 0.1.3
File Size Uploaded
simple-rlp-0.1.3.tar.gz 4.3 kB Details

Release files / simple-rlp-0.1.3.tar.gz

Download URL simple-rlp-0.1.3.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2df1d2b769f0a0177d26231ab8be16e65e3546b17bb0a9a490efd3517c082876
BLAKE2b-256 checksum
How to use checksums
b6b5d379d077e0c38c2b37c64dedfaef16099299e401f6323fc170d16d6c7d43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.0

Release history Release notifications | RSS feed

This release

0.1.3 This release

1 release file

0.1.2

1 release file

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page