YAML Template

This template demonstrates a typical Gromet YAML config with detailed inline comments explaining each field and option.

script_name: "Excel Invoice Merger"
script_description: |
  Merge multiple Excel invoice files into a single consolidated report,
  summarizing totals and highlighting discrepancies.

python_version: "3.13"

dependencies:
  - pandas==2.2.2
  - openpyxl==3.1.2

inputs:
  - arg: input_file
    title: Upload Excel File
    required: true
    type: file
    extensions: [xlsx, xls]

  - arg: simple_text
    title: Label
    type: text
    placeholder: "Experiment 42"

  - arg: environment
    title: Environment
    type: dropdown
    required: true
    options:
      - value: dev
        label: Development
      - value: staging
        label: Staging
      - value: prod
        label: Production

  - arg: assignee
    title: Assign User
    type: multiselect
    users:
      - id: "u123"
        displayName: "Alice Lee"
      - id: "u456"
        displayName: "Bob Zhang"

  - arg: schedule_date
    title: Execution Date
    type: date
    required: true

  - arg: notes
    title: Add Notes
    type: textarea
    placeholder: "Optional context here"

Notes on Fields

  • script_name / script_description: For display and documentation purposes.

  • python_version: Must be one of the supported versions (3.9 to 3.12).

  • dependencies:

    • Pin versions exactly with == for reproducible installs.

    • Use >= or ~= for flexible version ranges.

    • No version means the latest from PyPI will be installed.

    • Only list third-party packages that need to be installed via pip. Do not include built-in Python libraries such as os or time. These should still be imported manually in the Python script.

      • dependencies:
          - pandas==2.2.2
          - openpyxl==3.1.2
      • # Add your imports below
        import pandas
        import openpyxl
        import time
        import os
        
        def main(input_file=None):
          for i in range(10, 0, -1):
            print(i)
            time.sleep(1)
          print("Blastoff! 🚀")
  • inputs:

    • arg: must exactly match your Python main() function parameter.

    • required: if true, user must provide this input; if false or omitted, input is optional and None if missing.

    • file: input passed as local file path string.

    • text / textarea: input passed as a string.

    • dropdown: input passed as selected option’s value string.

    • multiselect: input passed as a list of selected user IDs (string[]).

    • date: input passed as a string formatted YYYY-MM-DD.


Customise this template according to your script’s needs, and remember to keep arg names aligned with your Python function parameters!

Last updated