AlignSettingsSection#

Align statements in *** Settings *** section to columns.

Transformer configuration

AlignSettingsSection is included in the default transformers, but it can be also run separately with:

robotidy --transform AlignSettingsSection src

You can also disable AlignSettingsSection:

robotidy --configure AlignSettingsSection:enabled=False src
*** Settings ***
Library      SeleniumLibrary
Library   Mylibrary.py
Variables  variables.py
Test Timeout  1 min
  # this should be left aligned
*** Settings ***
Library         SeleniumLibrary
Library         Mylibrary.py
Variables       variables.py
Test Timeout    1 min
# this should be left aligned

Align up to columns#

You can configure how many columns should be aligned to the longest token in given column. The remaining columns will use fixed length separator length --spacecount. By default only first two columns are aligned.

Example of how AlignSettingsSection transformer behaves with default configuration and multiple columns:

*** Settings ***
Library    CustomLibrary   WITH NAME  name
Library    ArgsedLibrary   ${1}  ${2}  ${3}

Documentation     Example using the space separated format.
...  and this documentation is multiline
...  where this line should go I wonder?
*** Settings ***
Library             CustomLibrary    WITH NAME    name
Library             ArgsedLibrary    ${1}    ${2}    ${3}

Documentation       Example using the space separated format.
...                 and this documentation is multiline
...                 where this line should go I wonder?

You can configure it to align three columns:

robotidy --configure AlignSettingsSection:up_to_column=3 src
*** Settings ***
Library    CustomLibrary   WITH NAME  name
Library    ArgsedLibrary   ${1}  ${2}  ${3}

Documentation     Example using the space separated format.
...  and this documentation is multiline
...  where this line should go I wonder?
*** Settings ***
Library             CustomLibrary    WITH NAME    name
Library             ArgsedLibrary    ${1}         ${2}     ${3}

Documentation       Example using the space separated format.
...                 and this documentation is multiline
...                 where this line should go I wonder?

To align all columns set up_to_column to 0.

Extra indent for keyword arguments#

Arguments in multiline settings are indented by additional argument_indent (default 4) spaces. You can configure the indent or disable it by setting argument_indent to 0.

*** Settings ***
Suite Setup         Start Session
...                     host=${IPADDRESS}
...                     user=${USERNAME}
...                     password=${PASSWORD}
Suite Teardown      Close Session
*** Settings ***
Suite Setup         Start Session
...                   host=${IPADDRESS}
...                   user=${USERNAME}
...                   password=${PASSWORD}
Suite Teardown      Close Session
*** Settings ***
Suite Setup         Start Session
...                 host=${IPADDRESS}
...                 user=${USERNAME}
...                 password=${PASSWORD}
Suite Teardown      Close Session

WITH NAME arguments are not indented:

*** Settings ***
Library             SeleniumLibrary
...                 timeout=${TIMEOUT}
...                 implicit_wait=${TIMEOUT}
...                 run_on_failure=Capture Page Screenshot
...                 WITH NAME    Selenium
*** Settings ***
Library             SeleniumLibrary
...                     timeout=${TIMEOUT}
...                     implicit_wait=${TIMEOUT}
...                     run_on_failure=Capture Page Screenshot
...                 WITH NAME    Selenium

Fixed width of column#

It’s possible to set fixed width of the column. To configure it use fixed_width parameter:

robotidy --configure AlignSettingsSection:fixed_width=30 src

This configuration respects up_to_column parameter but ignores argument_indent.

*** Settings ***
Library    CustomLibrary   WITH NAME  name
Library    ArgsedLibrary   ${1}  ${2}  ${3}

Documentation     Example using the space separated format.
...  and this documentation is multiline
...  where this line should go I wonder?
*** Settings ***
Library                      CustomLibrary   WITH NAME  name
Library                      ArgsedLibrary   ${1}  ${2}  ${3}

Documentation                Example using the space separated format.
...                          and this documentation is multiline
...                          where this line should go I wonder?

Minimal width of column#

It’s possible to set minimal width of the column. To configure it use min_width parameter:

robotidy --configure AlignSettingsSection:min_width=20 src

This configuration respects up_to_column parameter.

*** Settings ***
Library    CustomLibrary   WITH NAME  name
Library    ArgsedLibrary   ${1}  ${2}  ${3}

Documentation     Example using the space separated format.
...  and this documentation is multiline
...  where this line should go I wonder?
*** Settings ***
Library             CustomLibrary   WITH NAME  name
Library             ArgsedLibrary   ${1}  ${2}  ${3}

Documentation       Example using the space separated format.
...                 and this documentation is multiline
...                 where this line should go I wonder?

Select lines to transform#

AlignSettingsSection does also support global formatting params startline and endline:

robotidy --startline 2 --endline 3 --configure AlignSettingsSection:up_to_column=3 src
*** Settings ***
Metadata  Version  2.0  # this should be not aligned
Metadata      More Info  For more information about *Robot Framework* see http://robotframework.org
Metadata     Executed At  {HOST}
*** Settings ***
Metadata  Version  2.0  # this should be not aligned
Metadata    More Info       For more information about *Robot Framework* see http://robotframework.org
Metadata    Executed At     {HOST}

Skip formatting#

It is possible to use the following arguments to skip formatting of the code:

It is highly recommended to use one of the skip options if you wish to use the alignment but you have part of the code that looks better with manual alignment. It is also possible to use disablers (Disablers) but skip option makes it easier to skip all instances of given type of the code.