Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Black formatter for Sublime Text
https://github.com/thep0y/python-black

black formatter formatting python sublime-text

Last synced: 8 days ago
JSON representation

Black formatter for Sublime Text

Awesome Lists containing this project

README

        

python-black



black

[Black](https://github.com/psf/black) formatter for Sublime Text.

It is recommended to use it with [LSP-pyright](https://github.com/sublimelsp/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:~~

```shell
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 sample`Preferences - Package Settings - Python Black - Key Bindings`, such as:

```json
{
"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:

```js
{
// 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:

```js
{
"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](https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#where-black-looks-for-the-file).

> If you want to disable `format_on_save` in a project that does not use `black` code style [#14](https://github.com/thep0y/python-black/issues/14), you need to add the configuration to `*.sublime-project`:
>
> ```js
> {
> ...
> "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:

```python
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