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.