Skip to main content

A python library to compress a dict into a bytearray.

Project description

proJSON

A python library to compress a dict into a bytearray.

Tests

Install

pip install proJSON

The Crafter

Types

# Format

"name" : {
    "type": type,      # Types specified below with arguments
    ...
}

"intExample" : {
    "type": "int",     # Set int type
    "byte": 1          # Set max int size to 1 byte (int8)
} 

"stringExample" : {
    "type": "string",  # Set string type
    "maxlen": 1        # Set max size of string ( the max size of the string is calculated by (2^(8*n)-1). if n is 1 then the max size is 255) (optional defaults to 2)
} 

"bytesExample" : {
    "type": "bytes",   # Set bytes type
    "byte": 1          # Set max size of string ( the max size of the string is calculated by (2^(8*n)-1). if n is 1 then the max size is 255) (optional defaults to 2)
} 

"dirExample" : {
    "type": "dir",     # Set dir type
    "subdirs": {}      # A dictionary of int, string and byte types in the format above.
} 

Don't put a dir in another dir. It won't work

Init

from proJSON import Crafter

template = {
    # See the [types section](###Types) for how to make this.
    "intExample" : {
        "type": "int",
        "byte": 1
    },
    "stringExample" : {
        "type": "string",
        "maxlen": 1
    },
    "bytesExample" : {
        "type": "bytes",
        "byte": 1
    },
    "dirExample" : {
        "type": "dir",
        "subdirs": {
            "intExample2" : {
                "type": "int",
                "byte": 1
            },
            "stringExample2" : {
                "type": "string",
                "maxlen": 1
            },
        }
    } 
}

crafter = Crafter(template)

Encoding data

exampledata = {
    "intExample" : 7,
    "stringExample" : "Hello World!",
    "bytesExample": b"This is bytes",
    "dirExample" : {
        "intExample2" : 200,
        "stringExample2": "Hello Again!"
    }
}

encoded = crafter.encode(exampledata)

print(encoded) # b'\x07\x0cHello World!\x00\rThis is bytes\xc8\x0cHello Again!' (43 bytes)

Decoding data

data = b'\x07\x0cHello World!\x00\rThis is bytes\xc8\x0cHello Again!'

decoded = crafter.decode(data)

print(decoded) # {'intExample': 7, 'stringExample': 'Hello World!', 'bytesExample': b'This is bytes', 'dirExample': {'intExample2': 200, 'stringExample2': 'Hello Again!'}} (154 bytes)

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

proJSON-1.1.2.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

proJSON-1.1.2-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file proJSON-1.1.2.tar.gz.

File metadata

  • Download URL: proJSON-1.1.2.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for proJSON-1.1.2.tar.gz
Algorithm Hash digest
SHA256 330700677352ce47fd926c6c4899cf415f2aef99838b68d4d116de1bcc2dcdf7
MD5 54a84a7a645c6ddef22dfebfed73300c
BLAKE2b-256 ce53a5c9396e97b8f619e9251264bd3e7fa7d651a5e372df37d2cd0b7e5669df

See more details on using hashes here.

File details

Details for the file proJSON-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: proJSON-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for proJSON-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 25c3cb08c0d24b05898b972ae7df6d90e91ec7f4c8815a4dc7442708a703f7c3
MD5 c1b18fef82ef6d65b28290113110a7fb
BLAKE2b-256 4cddbc4f0fd880bff613b9c22bc917eabe0a8c42897188d6ea0fb245cd12bdc8

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