def synthesize()

in src/conductor/conductor.py [0:0]


def synthesize(composition): # dict
    code = '# generated by composer v'+composition['version']+' and conductor v'+__version__+'\n\nimport os\nimport functools\nimport json\nimport inspect\nimport re\nimport base64\nimport marshal\nimport types\nimport requests\nimport urllib.parse'
    code += '\n\n' + inspect.getsource(composer.ComposerError)
    code += '\ncomposition=json.loads(\''+escape(json.dumps(composition['composition'], default=composer.serialize, ensure_ascii=True))+'\')'
    code += '\n' + inspect.getsource(conductor)
    code += '\n' + inspect.getsource(openwhisk)
    code += '\n' + inspect.getsource(Compositions)
    code += '\n' + inspect.getsource(composer.serialize)
    code += '\n' + inspect.getsource(composer.Composition)
    code += '\n' + inspect.getsource(composer.get_value)
    code += '\n' + inspect.getsource(composer.get_params)
    code += '\n' + inspect.getsource(composer.set_params)
    code += '\n' + inspect.getsource(composer.retain_result)
    code += '\n' + inspect.getsource(composer.retain_nested_result)
    code += '\n' + inspect.getsource(composer.dec_count)
    code += '\n' + inspect.getsource(composer.set_nested_params)
    code += '\n' + inspect.getsource(composer.get_nested_params)
    code += '\n' + inspect.getsource(composer.set_nested_result)
    code += '\n' + inspect.getsource(composer.get_nested_result)
    code += '\n' + inspect.getsource(composer.retry_cond)

    import openwhisk as ow
    code += '\n' + inspect.getsource(ow.Client)
    code += '\n' + inspect.getsource(ow.BaseOperation)
    code += '\n' + inspect.getsource(ow.Resource)
    code += '\n' + inspect.getsource(ow.Action)
    code += '\n' + inspect.getsource(ow.parse_id_and_ns)
    code += '\n' + inspect.getsource(ow.parse_id)
    code += '\n' + inspect.getsource(ow.parse_namespace)

    code += 'def main(args):'
    code += '\n    return conductor(composition)(args)'

    annotations = [
        { 'key': 'conductor', 'value': str(composition['ast']) },
        { 'key': 'composerVersion', 'value': composition['version'] },
        { 'key': 'conductorVersion', 'value': __version__ },
        { 'key': 'provide-api-key', 'value': True }
    ]

    return { 'name': composition['name'], 'action': { 'exec': { 'kind': 'python:3', 'code':code }, 'annotations': annotations } }