NormalizeSeparators

Normalize separators and indents.

Transformer configuration

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

robotidy --transform NormalizeSeparators src

You can also disable NormalizeSeparators:

robotidy --configure NormalizeSeparators:enabled=False src

All separators (pipes included) are converted to fixed length of 4 spaces (configurable via global option --spacecount). To separately configure the indentation, use --indent global option.

Note

There are transformers that also affect separator lengths - for example AlignSettingsSection. NormalizeSeparators is used as a base and then potentially overwritten by behaviours of other transformers. If you only want to have fixed separator lengths (without aligning) then only run this transformer without running the others.

*** Settings ***
Library  library.py  WITH NAME          alias

Force Tags           tag
...   tag

Documentation  doc
...      multi
...  line

*** Test Cases ***
Test case
  [Setup]  Keyword
   Keyword  with  arg
   ...  and  multi  lines
     [Teardown]          Keyword

Test case with structures
    FOR  ${variable}  IN  1  2
    Keyword
     IF  ${condition}
       Log  ${stuff}  console=True
  END
   END
*** Settings ***
Library    library.py    WITH NAME    alias

Force Tags    tag
...    tag

Documentation    doc
...    multi
...    line

*** Test Cases ***
Test case
    [Setup]    Keyword
    Keyword    with    arg
    ...    and    multi    lines
    [Teardown]    Keyword

Test case with structures
    FOR    ${variable}    IN    1    2
        Keyword
        IF    ${condition}
            Log    ${stuff}    console=True
        END
    END

Configure separator

By configuring a global option spacecount, you can change the default separator length:

robotidy --spacecount 8 src
*** Settings ***
Library  library.py  WITH NAME          alias

Force Tags           tag
...   tag
*** Settings ***
Library        library.py        WITH NAME        alias

Force Tags        tag
...        tag

Indentation

By default, indentation is the same as spacecount value (default 4 spaces). To configure it, use --indent:

robotidy --indent 4 src

Combine it with spacecount to set whitespace separately for indent and separators:

robotidy --indent 4 --spacecount 2 src
*** Keywords ***
Keyword
  FOR     ${var}  IN RANGE     10
    Keyword With  ${var}
  END
*** Keywords ***
Keyword
    FOR  ${var}  IN RANGE  10
        Keyword With  ${var}
    END

Flatten multi line statements

By default NormalizeSeparators only updates the separators and leave any multi line intact. It is possible to flatten multi line statements into single line using flatten_lines option:

> robotidy -c NormalizeSeparators:flatten_lines=True src
*** Keywords ***
Keyword
    Keyword Call    1  2
      ...    1  # comment
    ...    2          3
*** Keywords ***
Keyword
    Keyword Call    1    2
    ...    1    # comment
    ...    2    3
*** Keywords ***
Keyword
    Keyword Call    1    2    1    2    3  # comment

Align new lines

It is possible to align new lines to the first line. This alignment will be overwritten if you have transformers affecting alignment enabled, such as:

  • AlignKeywordsSection

  • AlignSettingsSection

  • AlignTemplatedTestCases

  • AlignTestCasesSection

  • AlignVariablesSection

You can enable it using align_new_line parameter:

> robotidy --configure NormalizeSeparators:align_new_line=True src
*** Test Cases ***
Test
    [Tags]    tag
    ...  tag2

*** Keywords ***
Keyword
    [Arguments]    ${argument1}
    ...    ${argument2} ${argument3}
    Keyword Call    argument
    ...  arg2
    ...    arg3
*** Test Cases ***
Test
    [Tags]    tag
    ...    tag2

*** Keywords ***
Keyword
    [Arguments]    ${argument1}
    ...    ${argument2}   ${argument3}
    Keyword Call    argument
    ...    arg2
    ...    arg3
*** Test Cases ***
Test
    [Tags]    tag
    ...       tag2

*** Keywords ***
Keyword
    [Arguments]    ${argument1}
    ...            ${argument2}   ${argument3}
    Keyword Call    argument
    ...             arg2
    ...             arg3

Skip formatting

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

Documentation is formatted by default. To disable formatting the separators inside documentation, and to only format indentation, set skip_documentation to True:

robotidy --configure NormalizeSeparators:skip_documentation=True src
TEST_TC
    [Argument]    ${a}    ${long_arg}
    [Documentation]     Test Doc.
    ...
    ...    Arguments:
    ...    a:               Argument A
    ...    long_arg:        Argument long_arg.
   Test Case Body
TEST_TC
    [Argument]    ${a}    ${long_arg}
    [Documentation]     Test Doc.
    ...
    ...    Arguments:
    ...    a:    Argument A
    ...    long_arg:    Argument long_arg.
   Test Case Body
TEST_TC
    [Argument]    ${a}    ${long_arg}
    [Documentation]     Test Doc.
    ...
    ...    Arguments:
    ...    a:               Argument A
    ...    long_arg:        Argument long_arg.
   Test Case Body

It is also possible to use disablers (Disablers) but skip option makes it easier to skip all instances of given type of the code.