Configuration file#

Robotidy supports configuration files in TOML format. Any setting loaded from configuration file will be overwritten if the same setting is supplied from the command line.

You can load configuration from the file using --config option:

robotidy --config path/to/config.toml src

Robotidy will also look by default for pyproject.toml or .robotidy file starting from directory of the source(s) passed on the command line and going up to parent directories. It stops when it finds the file or it finds root of the project (determined by existence of .git directory) or root of the file system.

Multiple configuration files are allowed. Robotidy will use a configuration file that is closer to the source file. You can create several configuration files in a file tree. For example, with the following file structure:

root/
  pyproject.toml
  source/
    test.robot
    nested/
        pyproject.toml
        test2.robot

The test.robot file will use root/pyproject.toml configuration file and test2.robot will use root/source/nested/pyproject.toml.

Note

You can let Robotidy keep searching for configuration file in the parent directories even if it detects .git directory on the way. Turn it on using --ignore_git_dir flag:

> robotidy --ignore_git_dir src

pyproject.toml contain separate sections for different tools. Robotidy uses tool.robotidy section. The option names are the same as name of the options used on the command line.

Flag-like options like --diff, --overwrite/no-overwrite, --check require passing true/false boolean value. --transform and --configure require defining list of strings.

See example:

[tool.robotidy]
overwrite = false
diff = true
spacecount = 2
continuation-indent = 4
startline = 10
endline = 20
transform = [
   "DiscardEmptySections:allow_only_comments=True",
   "SplitTooLongLine"
]
configure = [
    "SplitTooLongLine:split_on_every_arg=False"
]

Source paths can be configured via src parameter. If the path does not exist it will be silently ignored:

[tool.robotidy]
src = [
    "test.robot",
    "directory"
]

If you don’t provide source paths in the cli, they will be taken from the closest configuration file. In a setup with multiple configuration files, the source paths from other configurations than the closest will be ignored.

.robotidy file uses the same toml syntax as pyproject.toml file but allows to skip tool.robotidy section:

spacecount = 8
transform = [
   "DiscardEmptySections",
   "NormalizeSeparators"
]

Generate configuration file#

It is possible to generate configuration files that contains most important options with their default values. First install robotidy with generate_config that contains module for writing TOML files:

pip install robotframework-tidy[generate_config]

You can generate configuration now:

robotidy --generate-config
Example of generated configuration file
[tool.robotidy]
diff = false
overwrite = true
verbose = false
separator = "space"
spacecount = 4
line_length = 120
lineseparator = "native"
skip_gitignore = false
ignore_git_dir = false
configure = [
    "AddMissingEnd:enabled=True",
    "NormalizeSeparators:enabled=True",
    "DiscardEmptySections:enabled=True",
    "MergeAndOrderSections:enabled=True",
    "RemoveEmptySettings:enabled=True",
    "ReplaceEmptyValues:enabled=True",
    "NormalizeAssignments:enabled=True",
    "GenerateDocumentation:enabled=False",
    "OrderSettings:enabled=True",
    "OrderSettingsSection:enabled=True",
    "NormalizeTags:enabled=True",
    "OrderTags:enabled=False",
    "RenameVariables:enabled=False",
    "IndentNestedKeywords:enabled=False",
    "AlignSettingsSection:enabled=True",
    "AlignVariablesSection:enabled=True",
    "AlignTemplatedTestCases:enabled=False",
    "AlignTestCasesSection:enabled=False",
    "AlignKeywordsSection:enabled=False",
    "NormalizeNewLines:enabled=True",
    "NormalizeSectionHeaderName:enabled=True",
    "NormalizeSettingName:enabled=True",
    "ReplaceRunKeywordIf:enabled=True",
    "SplitTooLongLine:enabled=True",
    "SmartSortKeywords:enabled=False",
    "RenameTestCases:enabled=False",
    "RenameKeywords:enabled=False",
    "ReplaceReturns:enabled=True",
    "ReplaceBreakContinue:enabled=True",
    "InlineIf:enabled=True",
    "Translate:enabled=False",
    "NormalizeComments:enabled=True",
]

By default configuration file will be save in the current working directory as pyproject.toml file. Default filename can be configured:

robotidy --generate-config your_name.txt

Configuration is based on default values and configuration from the cli:

robotidy --transform ReplaceReturns --diff --generate-config
Generated file
[tool.robotidy]
diff = true
overwrite = true
verbose = false
separator = "space"
spacecount = 4
line_length = 120
lineseparator = "native"
skip_gitignore = false
ignore_git_dir = false
configure = [
    "AddMissingEnd:enabled=False",
    "NormalizeSeparators:enabled=False",
    "DiscardEmptySections:enabled=False",
    "MergeAndOrderSections:enabled=False",
    "RemoveEmptySettings:enabled=False",
    "ReplaceEmptyValues:enabled=False",
    "NormalizeAssignments:enabled=False",
    "GenerateDocumentation:enabled=False",
    "OrderSettings:enabled=False",
    "OrderSettingsSection:enabled=False",
    "NormalizeTags:enabled=False",
    "OrderTags:enabled=False",
    "RenameVariables:enabled=False",
    "IndentNestedKeywords:enabled=False",
    "AlignSettingsSection:enabled=False",
    "AlignVariablesSection:enabled=False",
    "AlignTemplatedTestCases:enabled=False",
    "AlignTestCasesSection:enabled=False",
    "AlignKeywordsSection:enabled=False",
    "NormalizeNewLines:enabled=False",
    "NormalizeSectionHeaderName:enabled=False",
    "NormalizeSettingName:enabled=False",
    "ReplaceRunKeywordIf:enabled=False",
    "SplitTooLongLine:enabled=False",
    "SmartSortKeywords:enabled=False",
    "RenameTestCases:enabled=False",
    "RenameKeywords:enabled=False",
    "ReplaceReturns:enabled=True",
    "ReplaceBreakContinue:enabled=False",
    "InlineIf:enabled=False",
    "Translate:enabled=False",
    "NormalizeComments:enabled=False",
]

Multiline configuration#

Transformers with multiple parameters can be configured in one line (each param delimited by :) or in separate lines:

[tool.robotidy]
configure = [
    "OrderSettings:keyword_before=documentation,tags,timeout,arguments:keyword_after=return",
    "OrderSettingsSection:group_order=documentation,imports,settings,tags",
    "OrderSettingsSection:imports_order=library,resource,variables"
]

Multiline configuration is only possible with configure option. transform option overrides previous configuration. In the following configuration only last OrderSettings configuration will be used:

[tool.robotidy]

transform = [
    "OrderSettings:test_before=tags, setup,  teardown, documentation:test_after=", # will be ignored
    "OrderSettings:keyword_before=tags, teardown, documentation, arguments:keyword_after="
]

If you want to use transform and provide configuration for multiple parameters you can either chain parameters with : or use configure:

[tool.robotidy]

transform = [
    "OrderSettings"
]
configure = [
    "OrderSettings:test_before=tags, setup,  teardown, documentation:test_after=",
    "OrderSettings:keyword_before=tags, teardown, documentation, arguments:keyword_after="
]

Ignored whitespace#

Transformer configuration can contain spaces for better readability:

[tool.robotidy]
configure = [
    "OrderSettingsSection: group_order = documentation,imports,settings,tags",
    "OrderSettingsSection: imports_order = library, resource, variables"
]