Skip to main content

A Package containing tools for decoding/encoding Smile Format data to/from python object

Project description

NewSmile

Another Smile Format Decoder/Encoder for Python 3

Encoding

  • Import SmileEncoder
from newsmile import SmileEncoder
  • Create Encoder object, with arguments:
    • raw_binary (bool), default = False: contains binary data
    • shared_values (bool), default = False: maintains shared values buffer and references
    • shared_keys (bool), default = True: maintains shared keys buffer and references
    • float_precision (0|4|8), default = 0: float values precisions (0=auto)
    • encoding (string), default = 'utf-8': encoding used for unicode values and keys

(Note: specs implies shared values are defaulted to False)

encoder = SmileEncoder(shared_values=True)
  • Encode data

If data is a dictionnary, it is encoded as is. If data is a string, it is considered as a json string.

# Example with a dictionary
an_object = {'a': 123, 'b':[4, 5, 6], 'c':{'d': 'a_string', 'e':None}}
result = encoder.encode(an_object)
print(result)
>>> b':)\n\x03\xfa\x80a$\x03\xb6\x80b\xf8\xc8\xca\xcc\xf9\x80c\xfa\x80dGa_string\x80e!\xfb\xfb'
# Example with json
import json
an_object = {'a': 123, 'b':[4, 5, 6], 'c':{'d': 'a_string', 'e':None}}
result = encoder.encode(json.dumps(an_object))
print(result)
>>> b':)\n\x03\xfa\x80a$\x03\xb6\x80b\xf8\xc8\xca\xcc\xf9\x80c\xfa\x80dGa_string\x80e!\xfb\xfb'

Decoding

  • Import SmileEncoder
from newsmile import SmileDecoder
  • Create Decoder object, with arguments:
    • encoding (string), default = 'utf-8': encoding used for unicode values and keys
decoder = SmileDecoder()
  • Decode value
decoder.decode(result)
decoded_object = decoder.decode(result)
print(decoded_object)
>>> {'a': 123, 'b': [4, 5, 6], 'c': {'d': 'a_string', 'e': None}}

Encoding example, from file

import json
from newsmile import SmileEncoder
encoder = SmileEncoder(shared_values=True, encoding='iso-8859-1')
dico = {'a': 1, 'b': [2, 3, 4], 'c': {'subkey': 'a string'}}
smile_data = encoder.encode(json.dumps(dico))

Decoding example, from file

from newsmile import SmileDecoder
decoder = SmileDecoder()
with open('smile-data-file', 'rb') as smile_file:
    data = decoder.decode(smile_file.read())

Running tests

cd tests
python test.py

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

newsmile-1.1.tar.gz (299.9 kB view details)

Uploaded Source

Built Distribution

newsmile-1.1-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file newsmile-1.1.tar.gz.

File metadata

  • Download URL: newsmile-1.1.tar.gz
  • Upload date:
  • Size: 299.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for newsmile-1.1.tar.gz
Algorithm Hash digest
SHA256 5f4a1e5694caf1cfac9d0282ec27175474895eb2847b9e30f3a22a150d8635cf
MD5 86d7cd29b5e193be6d161d2cb05af48e
BLAKE2b-256 5d92144afef942290b37fda8e72cacb749998e4a98669dce901c8fdb51ebeed0

See more details on using hashes here.

File details

Details for the file newsmile-1.1-py3-none-any.whl.

File metadata

  • Download URL: newsmile-1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for newsmile-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8ea22483625a3471e2b9d47665acadf46c5becf428be6c2dfcd113130018fb8e
MD5 d66685b49f553b953c4ec0059d62c295
BLAKE2b-256 888336ea5528c8475ab5b0a153f00257d232352b379798d20514f571acb189b6

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