Module refinery.units.encoding.z85

Expand source code Browse git
from __future__ import annotations

import base64

from refinery.units import Unit

_b85alphabet = (
    b'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    b'abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~')
_z85alphabet = (
    b'0123456789abcdefghijklmnopqrstuvwxyz'
    b'ABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#')
_z85_decode_diff = b';_`|~'
_b85_decode_diff = bytes(5)
_z85_decode_translation = bytes.maketrans(
    _z85alphabet + _z85_decode_diff,
    _b85alphabet + _b85_decode_diff,
)
_z85_encode_translation = bytes.maketrans(
    _b85alphabet, _z85alphabet)


class z85(Unit):
    """
    Z85 encoding and decoding, an alternative variant of Base85 with a different alphabet.
    This variant derives its name from the developer, ZeroMQ.
    """
    def reverse(self, data):
        return base64.b85encode(data).translate(_z85_encode_translation)

    def process(self, data: bytearray):
        return base64.b85decode(data.translate(_z85_decode_translation))

    @classmethod
    def handles(cls, data):
        from refinery.lib.patterns import formats
        return formats.spaced_z85.value.bin.fullmatch(data) is not None

Classes

class z85

Z85 encoding and decoding, an alternative variant of Base85 with a different alphabet. This variant derives its name from the developer, ZeroMQ.

Expand source code Browse git
class z85(Unit):
    """
    Z85 encoding and decoding, an alternative variant of Base85 with a different alphabet.
    This variant derives its name from the developer, ZeroMQ.
    """
    def reverse(self, data):
        return base64.b85encode(data).translate(_z85_encode_translation)

    def process(self, data: bytearray):
        return base64.b85decode(data.translate(_z85_decode_translation))

    @classmethod
    def handles(cls, data):
        from refinery.lib.patterns import formats
        return formats.spaced_z85.value.bin.fullmatch(data) is not None

Ancestors

Subclasses

Class variables

var required_dependencies
var optional_dependencies
var console

Methods

def reverse(self, data)
Expand source code Browse git
def reverse(self, data):
    return base64.b85encode(data).translate(_z85_encode_translation)

Inherited members