Skip to main content

Sorts functions and class methods according to the step-down rule

Project description

sdsort

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.

Installation

pip install sdsort

Or run directly with uv:

uvx sdsort <path>

Usage

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.

pre-commit

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: v0.5.0
    hooks:
      - id: sdsort

Maturity

It's early days. Consider this a beta for now.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdsort-0.5.2.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdsort-0.5.2-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file sdsort-0.5.2.tar.gz.

File metadata

  • Download URL: sdsort-0.5.2.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sdsort-0.5.2.tar.gz
Algorithm Hash digest
SHA256 9ad433b272abee32bcbb49c24c1da1eabc3110263129ed3edbbd6f01a9c5a91a
MD5 38edc83531aa0265f32dff8f4fce4835
BLAKE2b-256 5dc05ec0053d5b1f2f83be7561e5efbcd863c3ba8897488e5309442081e97e9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sdsort-0.5.2.tar.gz:

Publisher: publish.yml on eirikurt/sdsort

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sdsort-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: sdsort-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sdsort-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 498e76a5efd100f5ddd14b990b87812cdcdd6febc0f3eed15dd7c62a567d0c92
MD5 c0296fc46927a192d63784c0712a33c0
BLAKE2b-256 3908cd2d7b9858bf2e4414dabbe354783261472138ad93a8be5a3aaf36f22ce4

See more details on using hashes here.

Provenance

The following attestation bundles were made for sdsort-0.5.2-py3-none-any.whl:

Publisher: publish.yml on eirikurt/sdsort

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page