Skip to content

snakefmt

GitHub stars formatter GitHub release (latest SemVer) GitHub last commit GitHub commit activity GitHub contributors

snakefmt documentation

snakefmt - GitHub

Configuration in MegaLinter

Variable Description Default value
SNAKEMAKE_SNAKEFMT_ARGUMENTS User custom arguments to add in linter CLI call
Ex: -s --foo "bar"
SNAKEMAKE_SNAKEFMT_COMMAND_REMOVE_ARGUMENTS User custom arguments to remove from command line before calling the linter
Ex: -s --foo "bar"
SNAKEMAKE_SNAKEFMT_FILTER_REGEX_INCLUDE Custom regex including filter
Ex: (src\|lib)
Include every file
SNAKEMAKE_SNAKEFMT_FILTER_REGEX_EXCLUDE Custom regex excluding filter
Ex: (test\|examples)
Exclude no file
SNAKEMAKE_SNAKEFMT_CLI_LINT_MODE Override default CLI lint mode
- file: Calls the linter for each file
- project: Call the linter from the root of the project
file
SNAKEMAKE_SNAKEFMT_FILE_EXTENSIONS Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all files
Ex: [".py", ""]
[".smk"]
SNAKEMAKE_SNAKEFMT_FILE_NAMES_REGEX File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: ["Dockerfile(-.+)?", "Jenkinsfile"]
["Snakefile"]
SNAKEMAKE_SNAKEFMT_PRE_COMMANDS List of bash commands to run before the linter None
SNAKEMAKE_SNAKEFMT_POST_COMMANDS List of bash commands to run after the linter None
SNAKEMAKE_SNAKEFMT_UNSECURED_ENV_VARIABLES List of env variables explicitly not filtered before calling SNAKEMAKE_SNAKEFMT and its pre/post commands None
SNAKEMAKE_SNAKEFMT_CONFIG_FILE snakefmt configuration file nameUse LINTER_DEFAULT to let the linter find it .snakefmt.toml
SNAKEMAKE_SNAKEFMT_RULES_PATH Path where to find linter configuration file Workspace folder, then MegaLinter default rules
SNAKEMAKE_SNAKEFMT_DISABLE_ERRORS Run linter but consider errors as warnings true
SNAKEMAKE_SNAKEFMT_DISABLE_ERRORS_IF_LESS_THAN Maximum number of errors allowed 0
SNAKEMAKE_SNAKEFMT_CLI_EXECUTABLE Override CLI executable ['snakefmt']

MegaLinter Flavours

This linter is available in the following flavours

Flavor Description Embedded linters Info
all Default MegaLinter Flavor 117 Docker Image Size (tag) Docker Pulls
documentation MegaLinter for documentation projects 51 Docker Image Size (tag) Docker Pulls
dotnet Optimized for C, C++, C# or VB based projects 63 Docker Image Size (tag) Docker Pulls
dotnetweb Optimized for C, C++, C# or VB based projects with JS/TS 72 Docker Image Size (tag) Docker Pulls
go Optimized for GO based projects 53 Docker Image Size (tag) Docker Pulls
java Optimized for JAVA based projects 55 Docker Image Size (tag) Docker Pulls
javascript Optimized for JAVASCRIPT or TYPESCRIPT based projects 60 Docker Image Size (tag) Docker Pulls
php Optimized for PHP based projects 54 Docker Image Size (tag) Docker Pulls
python Optimized for PYTHON based projects 62 Docker Image Size (tag) Docker Pulls
ruby Optimized for RUBY based projects 51 Docker Image Size (tag) Docker Pulls
rust Optimized for RUST based projects 51 Docker Image Size (tag) Docker Pulls
salesforce Optimized for Salesforce based projects 54 Docker Image Size (tag) Docker Pulls
swift Optimized for SWIFT based projects 51 Docker Image Size (tag) Docker Pulls
terraform Optimized for TERRAFORM based projects 55 Docker Image Size (tag) Docker Pulls

Behind the scenes

How are identified applicable files

  • File extensions: .smk
  • File names (regex): Snakefile

How the linting is performed

  • snakefmt is called one time by identified file (file CLI lint mode)

Example calls

snakefmt --check --compact-diff Snakefile
snakefmt --check --compact-diff --config .snakefmt.toml Snakefile
snakefmt --config .snakefmt.toml Snakefile

Help content

Usage: snakefmt [OPTIONS] [SRC]...

  The uncompromising Snakemake code formatter.

  SRC specifies directories and files to format. Directories will be searched
  for file names that conform to the include/exclude patterns provided.

  Files are modified in-place by default; use diff, check, or  `snakefmt - <
  Snakefile` to avoid this.

Options:
  -l, --line-length INT  Lines longer than INT will be wrapped. [default: 88]
  --check                Don't write the files back, just return the status.
                         Return code 0 means nothing would change. Return code
                         1 means some files would be reformatted. Return code
                         123 means there was an error.
  -d, --diff             Don't write the files back, just output a diff for
                         each file to stdout.
  --compact-diff         Same as --diff but only shows lines that would change
                         plus a few lines of context.
  --include PATTERN      A regular expression that matches files and
                         directories that should be included on recursive
                         searches.  An empty value means all files are
                         included regardless of the name.  Use forward slashes
                         for directories on all platforms (Windows, too).
                         Exclusions are calculated first, inclusions later.
                         [default: (\.smk$|^Snakefile)]
  --exclude PATTERN      A regular expression that matches files and
                         directories that should be excluded on recursive
                         searches.  An empty value means no paths are
                         excluded. Use forward slashes for directories on all
                         platforms (Windows, too). Exclusions are calculated
                         first, inclusions later.  [default: (\.snakemake/|\.e
                         ggs/|\.git/|\.hg/|\.mypy_cache/|\.nox/|\.tox/|\.venv/
                         |\.svn/|_build/|buck-
                         out/|/build/|/dist/|\.template/)]
  -c, --config PATH      Read configuration from PATH. By default, will try to
                         read from `./pyproject.toml`
  -h, --help             Show this message and exit.
  -V, --version          Show the version and exit.
  -v, --verbose          Turns on debug-level logger.

Installation on mega-linter Docker image