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
Metadata
Release files for newsmile 1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| newsmile-1.1.tar.gz | 299.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| newsmile-1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 308.0 kB
Release files / newsmile-1.1.tar.gz
| Download URL | newsmile-1.1.tar.gz |
|---|---|
| Size | 299.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f4a1e5694caf1cfac9d0282ec27175474895eb2847b9e30f3a22a150d8635cf
|
|
BLAKE2b-256 checksum How to use checksums |
5d92144afef942290b37fda8e72cacb749998e4a98669dce901c8fdb51ebeed0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.8
|
Release files / newsmile-1.1-py3-none-any.whl
| Download URL | newsmile-1.1-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8ea22483625a3471e2b9d47665acadf46c5becf428be6c2dfcd113130018fb8e
|
|
BLAKE2b-256 checksum How to use checksums |
888336ea5528c8475ab5b0a153f00257d232352b379798d20514f571acb189b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.8
|