in src/composer/composer.py [0:0]
def action(name, options = {}):
''' action combinator '''
if not isinstance(options, dict):
raise ComposerError('Invalid argument "options" in "action" combinator', options)
exc = None
if 'sequence' in options and isinstance(options['sequence'], list): # native sequence
exc = { 'kind': 'sequence', 'components': tuple(map(parse_action_name, options['sequence'])) }
elif 'filename' in options and isinstance(options['filename'], str): # read action code from file
raise ComposerError('read from file not implemented')
# exc = fs.readFileSync(options.filename, { encoding: 'utf8' })
elif 'action' in options and callable(options['action']):
if options['action'].__name__ == '<lambda>':
l = str(base64.b64encode(marshal.dumps(options['action'].__code__)), 'ASCII')
exc = '''import types\nimport marshal\nimport base64