This module provides the BaseModel class, a generic, serializable data container.
BaseModel is a base class that implements convenient serialization methods.
Creates a clone of the current object.
>>> m = BaseModel()
>>> m.answer = 42
>>> clone = m.clone()
>>> clone.answer
42
>>> type(clone)
<class 'cola.models.base.BaseModel'>
Copies params from one model to another.
>>> m = BaseModel()
>>> m.answer = 42
>>> m._question = 'unknown'
>>> m2 = BaseModel()
>>> m2.copy_params(m)
>>> m2._question
'unknown'
>>> m2.answer
42
Import a complex model from a dictionary. If it looks like a duck, it’s a duck.
>>> BaseModel().from_dict({'answer': 42}).answer
42
Returns true if a parameter exists in a model.
>>> m = BaseModel()
>>> m.answer = 42
>>> m.has_param('answer')
True
>>> m.has_param('question')
False
Instances a model from a filename.
Provides a dictionary-like items() iterator.
>>> m = BaseModel().from_dict(dict(a='a', b='b'))
>>> value = 'nada'
>>> for k, v in m.items(): value = v;
>>> value
'b'
Provides a dictionary-like iteritems() iterator.
>>> m = BaseModel().from_dict(dict(a='a', b='b'))
>>> value = 'nada'
>>> for k, v in m.iteritems(): value = v;
>>> value
'b'
Loads model state from a file.
Returns the value of a model parameter.
>>> m = BaseModel()
>>> m.answer = 42
>>> m.param('answer')
42
>>> m.param('another answer', 42)
42
Returns a list of serializable attribute names.
>>> m = BaseModel()
>>> m._question = 'unknown'
>>> m.answer = 42
>>> m.param_names()
['answer']
>>> m.param_names(export=True)
['_question', 'answer']
Saves a model to a file.
Wrapper around setattr()
>>> m = BaseModel()
>>> m.answer = 41
>>> m.set_param('answer', 42)
>>> m.answer
42
Exports a model to a dictionary. This simplifies serialization.
>>> is_dict(BaseModel().to_dict())
True
Provides an iterator over model (key, value) pairs.
Is this an atom?
Is this an instance of a dictionary?
Is this a function?
Is this a list?
Is this an instance of a BaseModel-like object?