Close
    logoCloudomation Docs

    Using Python Functionality in Flow Scripts

    You can use almost all standard Python functionality in flow scripts by importing the standard Python module of your choice. There are several third-party modules available. See available third-party Python modules for more information. On this page we will give you some examples of common usage patterns.

    Available Third-Party Python Modules

    The following third-party Python modules are available to be used in your flow scripts:

    • arrow
    • holidays
    • html5lib
    • lxml
    • markdown
    • passlib
    • pdftotext
    • phonenumbers
    • pycryptodome
    • pyjwt
    • pyquery
    • pystache
    • python-dateutil
    • pytz
    • pyyaml
    • ujson

    Contact us at info@cloudomation.com to request additional Python modules.

    Examples

    Parse a PDF File

    You can access the content of PDF files directly in your flow script.

    Example
    Access a date written in a PDF file
    import re
    import base64
    import io
    import pdftotext
    import flow_api
    def handler(system: flow_api.System, this: flow_api.Execution):
    pdf_name = 'example.pdf'
    # Open the Cloudomation file object
    pdf_file = system.file(pdf_name)
    # Per default Cloudomation tries to parse files using UTF-8 and returns a Python string.
    # Here we want to access the binary content of the file,
    # so we need to set `convert_binary` to `False`
    file_base64 = pdf_file.get('content', convert_binary=False)
    file_bytes = base64.b64decode(file_base64)
    # Construct a `PDF` object from the bytes
    pdf = pdftotext.PDF(io.BytesIO(file_bytes))
    # Access the text of the first page of the PDF file
    pdf_text = pdf[0]
    # Clear the PDF object, so that the file object is closed
    pdf = None
    # Use a Regex to find the date
    the_date = re.search(r'Date:\s*(\d{4}-[01]\d-[0-3]\d)', pdf_text).group(1)
    this.log(the_date)
    return this.success('all done')

    Work with CSV Files

    You can use the csv module to read CSV files into Python objects or write Python objects into CSV files.

    Example
    Create a CSV file and send it by email.
    import base64
    import csv
    import io
    import flow_api
    def handler(system: flow_api.System, this: flow_api.Execution):
    fake_data_list = [
    {'name': 'spam', 'number': 1},
    {'name': 'eggs', 'number': 2},
    {'name': 'foo', 'number': 3},
    {'name': 'bar', 'number': 4},
    ]
    result_file = io.StringIO()
    csv_writer = csv.DictWriter(
    result_file,
    fieldnames=['name', 'number'],
    )
    csv_writer.writeheader()
    for data in fake_data_list:
    csv_writer.writerow(data)
    csv_content = result_file.getvalue()
    result_file.close()
    result_file = None
    csv_writer = None
    system.file('result.csv').save(text=csv_content)
    this.task(
    'SMTP',
    inputs={
    'from': 'me@example.com',
    'to': 'you@example.com',
    'subject': 'Result',
    'text': 'See the attached file',
    'login': 'me@example.com',
    'password': '****',
    'smtp_host': 'SMTP.example.com',
    'smtp_port': 587,
    'use_tls': True,
    'attachments': [
    'cloudomation:result.csv',
    ],
    },
    )
    return this.success('all done')
    Knowledge Base — Previous
    Using Flow Scripts from Git
    Next — Knowledge Base
    Webhooks