in src/composer/composer.py [0:0]
def parse(composition):
''' recursively deserialize composition '''
if not isinstance(composition, dict):
raise ComposerError('Invalid argument "composition" in "parse" combinator', composition)
combinator = composition['.combinator']() if '.combinator' in composition and callable(composition['.combinator']) else combinators[composition['type']]
if not isinstance(combinator, dict):
raise ComposerError('Invalid composition type in "parse" combinator', composition)
extended = { '.combinator': lambda : combinator }
extended.update(composition)
return visit(extended, lambda composition, _: composer.parse(composition))