ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

python-black

by thep0y ST4

Black formatter for Sublime Text

Labels formatter

Details

  • 1.2.10
  • github.​com
  • github.​com
  • 6 months ago
  • 42 minutes ago
  • 3 years ago

Installs

  • Total 13K
  • Win 5K
  • Mac 4K
  • Linux 4K
Feb 28 Feb 27 Feb 26 Feb 25 Feb 24 Feb 23 Feb 22 Feb 21 Feb 20 Feb 19 Feb 18 Feb 17 Feb 16 Feb 15 Feb 14 Feb 13 Feb 12 Feb 11 Feb 10 Feb 9 Feb 8 Feb 7 Feb 6 Feb 5 Feb 4 Feb 3 Feb 2 Feb 1 Jan 31 Jan 30 Jan 29 Jan 28 Jan 27 Jan 26 Jan 25 Jan 24 Jan 23 Jan 22 Jan 21 Jan 20 Jan 19 Jan 18 Jan 17 Jan 16 Jan 15 Jan 14
Windows 7 5 3 3 3 7 8 10 10 2 4 4 2 5 6 2 2 1 3 4 5 6 9 5 5 4 7 8 4 9 6 6 1 7 5 8 7 2 5 3 5 4 10 7 4 8
Mac 3 3 5 3 4 5 7 2 4 0 2 2 3 2 7 7 4 1 2 8 5 9 5 4 5 3 2 6 5 6 2 2 1 2 3 3 4 8 2 3 4 3 5 6 5 1
Linux 2 8 5 2 2 11 2 4 4 1 2 4 4 7 1 5 5 4 8 2 3 9 2 5 4 4 7 6 5 1 6 4 0 2 5 9 4 8 4 3 9 5 6 3 4 3

Readme

Source
raw.​githubusercontent.​com

python-black

black

Black formatter for Sublime Text.

It is recommended to use it with LSP-pyright.

Installation

There is no need to install black. However, if you choose to install it, it will not affect this package..

You can install python-black with Package Control:

  1. Open your command pallete and type Package Control: Install Package.
  2. Find this project python-black and press Enter.

Local installation

This package has been uploaded to packagecontrol.io, so you do not need to choose local installation:

git clone https://github.com/thep0y/python-black.git

Copy or move the python-black folder to the Packages directory of Sublime Text 4.

Usage

1 Key Binding

You can create custom key binding based on samplePreferences - Package Settings - Python Black - Key Bindings, such as:

{
  "keys": ["ctrl+super+l"],
  "command": "black",
  "args": {
    "use_selection": true
  }
}

The optional use_selection boolean (defaults to true) controls whether to format the selected region or the entire file.

:warning:Note: Do not duplicate the key binding of other packages.

2 Settings

There are some modifiable properties in settings:

{
   // Whether to automatically format the entire document when saving.
   // There are three modes:
   //    - "on"
   //    - "off"
   //    - "smart": Automatic formatting is only enabled if there is a `black` section in the project's `pyproject.toml`
   "format_on_save": "on",
   // Black [OPTIONS]
   // The priority of loading options for Black is:
   // Sublime project settings > Configuration file > Sublime package user settings > Sublime package default settings
   "options": {
      // Python versions that should be supported by Black's output.
      "target_version": [],
      // How many characters per line to allow.
      "line_length": 88,
      // Format all input files like typing stubs regardless of file extension (useful when piping source on standard input).
      "is_pyi": false,
      // Skip the first line of the source code.
      "skip_source_first_line": false,
      // Don't normalize string quotes or prefixes.
      "skip_string_normalization": false,
      // Don't use trailing commas as a reason to split lines.
      "skip_magic_trailing_comma": false
   }
}

The format_on_save can also be toggled via Preferences > Package Settings > Python Black > Format On Save.

The Black options can also be configured in sublime-project:

{
  "settings": {
    // ...
    "python-black": {
      "options": {
        "line_length": 127,
        "skip_string_normalization": true
      }
    }
  }
}

3 Create Black Configuration File

You can quickly generate a black configuration file for the current project.

Command Description
python-black: Create Black Configuration File Creates a pyproject.toml file in the root of the project with basic options. Opens the configuration file if it already exists.

:warning: If you don't want to generate a pyproject.toml for each project, you need to create a global configuration file for Black.

Refer to Black Documentation.

If you want to disable format_on_save in a project that does not use black code style #14, you need to add the configuration to *.sublime-project:

{
    ...
    "settings": {
        ...
        "python-black": {
            "format_on_save": "off"
        }
    }
}

Development

If you want to fix bugs or add features, you can read the logs:

  • Colorful: in python-black.log in the [SublimeText]/Log directory.

  • Colorless: in the Sublime Text console.

You can also add logs where you think they should be logged as follows:

from .log import child_logger

logger = child_logger(__name__)


# ...
logger.debug("...")
logger.info("...")
logger.warning("...")
logger.error("...")
# ...

Discussion and creation of PRs are welcome.

TODO

  • [ ] format all python files in the current project