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
    "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)
} 

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

"boolExample" : {
    "type" : "bool"    # Set bool type
}

"listExample" : {
    "type" : "list",   # Set list type
    "subtype": "int",  # Set list contents type to an "int"
    "maxlen": 1        # The "maxlen" parameter for bytes or str (for "int" maxlen is still used instead of "byte")
}

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",
        "maxlen": 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.2.3.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

proJSON-1.2.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: proJSON-1.2.3.tar.gz
  • Upload date:
  • Size: 4.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.2.3.tar.gz
Algorithm Hash digest
SHA256 0878016a6c5fb52aa94bba3df63002f59b65351091eeb0e9860ad26a4cbb0d96
MD5 7be15fdbc1900125247737f2218597ee
BLAKE2b-256 766f23922d7b75366468b7b853081d5bae8abae13a2d7836ce41ff2884d2cd02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: proJSON-1.2.3-py3-none-any.whl
  • Upload date:
  • Size: 4.7 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.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a953be911862790f5eedd0a2bf20cea5b8562bfccb070147afbc7ba2061714b5
MD5 ba2881d6a0015b9adb3a8833f51f484d
BLAKE2b-256 a4dc17e7a0a3ec58442aeb71f5d7ac328b1673472adfcb1245e852bb99508a47

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