S-expression-based persistence of python objects.
It does something very much like Pickle
; however, pickle's main goal seems to be efficiency (both in space and time); jelly's main goals are security, human readability, and portability to other environments.
This is how Jelly converts various objects to s-expressions.
Boolean:
True --> ['boolean', 'true']
Integer:
1 --> 1
List:
[1, 2] --> ['list', 1, 2]
String:
"hello" --> "hello"
Float:
2.3 --> 2.3
Dictionary:
{'a': 1, 'b': 'c'} --> ['dictionary', ['b', 'c'], ['a', 1]]
Module:
UserString --> ['module', 'UserString']
Class:
UserString.UserString --> ['class', ['module', 'UserString'], 'UserString']
Function:
string.join --> ['function', 'join', ['module', 'string']]
Instance: s is an instance of UserString.UserString, with a __dict__ {'data': 'hello'}:
["UserString.UserString", ['dictionary', ['data', 'hello']]]
Class Method: UserString.UserString.center:
['method', 'center', ['None'], ['class', ['module', 'UserString'], 'UserString']]
Instance Method: s.center, where s is an instance of UserString.UserString:
['method', 'center', ['instance', ['reference', 1, ['class', ['module', 'UserString'], 'UserString']], ['dictionary', ['data', 'd']]], ['dereference', 1]]
The Python 2.x sets.Set and sets.ImmutableSet classes are serialized to the same thing as the builtin set and frozenset classes. (This is only relevant if you are communicating with a version of jelly running on an older version of Python.)
Author | |
Glyph Lefkowitz |
Class |
|
DummySecurityOptions() -> insecure security options Dummy security options -- this class will allow anything. |
Class |
|
This will by default disallow everything, except for 'none'. |
Class |
|
Inherit from me to Unjelly yourself directly with the setStateFor convenience method. |
Class |
|
This is an instance of a class that comes back when something couldn't be unpersisted. |
Exception |
|
This exception will be raised when a jelly is deemed `insecure'; e.g. it contains a type, class, or module disallowed by the specified `taster' |
Function | get |
Utility method to default to 'normal' state rules in serialization. |
Function | jelly |
Serialize to s-expression. |
Function | set |
Utility method to default to 'normal' state rules in unserialization. |
Function | unjelly |
Unserialize from s-expression. |
Variable | class |
Undocumented |
Variable | dereference |
Undocumented |
Variable | dictionary |
Undocumented |
Variable |
|
Undocumented |
Variable | frozenset |
Undocumented |
Variable | function |
Undocumented |
Variable | global |
Undocumented |
Variable | instance |
Undocumented |
Variable | list |
Undocumented |
Variable | module |
Undocumented |
Variable |
|
Undocumented |
Variable | persistent |
Undocumented |
Variable | reference |
Undocumented |
Variable | set |
Undocumented |
Variable | tuple |
Undocumented |
Variable | unjellyable |
Undocumented |
Variable | unpersistable |
Undocumented |
Class | _ |
(Internal) This class manages state for a call to jelly() |
Class | _ |
No class docstring; 0/5 instance variable, 8/29 methods documented |
Function | _create |
Given an object, if that object is a type, return a new, blank instance of that type which has not had __init__ called on it. If the object is not a type, return None . |
Function | _maybe |
Undocumented |
Function | _new |
Make a new instance of a class without calling its __init__ method. |
Serialize to s-expression.
Returns a list which is the serialized representation of an object. An optional 'taster' argument takes a SecurityOptions and will mark any insecure objects as unpersistable rather than serializing them.
Unserialize from s-expression.
Takes a list that was the result from a call to jelly() and unserializes an arbitrary object from it. The optional 'taster' argument, an instance of SecurityOptions, will cause an InsecureJelly exception to be raised if a disallowed type, module, or class attempted to unserialize.
Given an object, if that object is a type, return a new, blank instance of that type which has not had __init__ called on it. If the object is not a type, return None
.
Parameters | |
cls:type or something else that cannot be instantiated. | The type (or class) to create an instance of. |
Returns | |
a new blank instance or None if cls is not a class or type. |