Sorts top-level functions and class methods in Python files according to the step-down rule, as described in Robert C. Martin's Clean Code. More concretely, functions and methods are ordered in a depth-first-traversal order of the dependency tree, so higher-level code appears before lower-level code.
pip install sdsort
Or run directly with uv:
uvx sdsort <path>
To target individual files, run the sdsort command, followed by the paths to the files that should be sorted:
sdsort <file_1> <file_2>To sort all *.py files in a directory, and all of its subdirectories, run the sdsort command followed by the directory path:
sdsort <directory_path>To check if files are already sorted without modifying them, use the --check flag:
sdsort --check <file_or_directory>This will exit with code 1 if any files would be re-arranged, making it suitable for CI pipelines and pre-commit hooks.
To prevent sdsort from modifying a particular file, add a # sdsort: skip_file comment somewhere within the file.
sdsort can be used as a pre-commit hook. Add the following to your .pre-commit-config.yaml:
repos:
- repo: https://github.com/eirikurt/sdsort
rev: v1.1.0
hooks:
- id: sdsortIt's early days. Consider this a beta for now.