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. | |