StraitJacket is a wrapper around black which implements post processing to perform automatic code alignment.
Project/Repo:
Code Quality/CI:
Name | role | since | until |
---|---|---|---|
Manuel Barkhau (mbarkhau@gmail.com) | author/maintainer | 2018-10 | - |
Example of automatic alignment.
class TokenType(enum.Enum): # class TokenType(enum.Enum):
INDENT = 0 # INDENT = 0
SEPARATOR = 1 # SEPARATOR = 1
CODE = 2 # CODE = 2
Indent = str # Indent = str
RowIndex = int # RowIndex = int
ColIndex = int # ColIndex = int
OffsetWidth = int # OffsetWidth = int
TokenTable = typ.List[TokenRow] # TokenTable = typ.List[TokenRow]
Usage is exactly the same as for black
, except that the command is named sjfmt
.
$ pip install straitjacket
$ sjfmt --help
Usage: sjfmt [OPTIONS] [SRC]...
Another uncompromising code formatter.
Options:
-l, --line-length INTEGER How many characters per line to allow.
[default: 88]
--py36 Allow using Python 3.6-only syntax on all
Plugins for your editor usually support setting a custom path to black. You can simply point to sjfmt instead.
Unix
$ which sjfmt
/home/user/miniconda3/envs/py36/bin/sjfmt
$ which sjfmtd
/home/user/miniconda3/envs/py36/bin/sjfmtd
Windows
C:\Users\Username>where sjfmt
C:\Python37\Scripts\sjfmt.exe
or
PS C:\Users\Username> (gcm sjfmt).Path
C:\Python37\Scripts\sjfmt.exe
{
"black_command": "C:/Python37/Scripts/sjfmt.exe",
"black_line_length": 100,
// ...
}
Document formatting can be triggered with Ctrl+Alt+F
.
{
"python.formatting.provider": "black",
"python.formatting.blackPath": "C:\\Python37\\Scripts\\sjfmt.exe",
"python.formatting.blackArgs": [
"--line-length", "100",
"--py36",
"--skip-string-normalization"
],
}
Document formatting can be triggered with Shift+Alt+F
.
Install the plugin black-pycharm
, which can be found in
Settings > Plugins > Brows Repositories
. You may have to
restart PyCharm for the plugin to load.
To configure the path, go to Settings > Tools > BlackPycharm Configuration
and set Path to Black executable
to the location
of the sjfmt binary.
You can reformat your code using Ctrl + Shift + A
to access the
Find Action
panel. The name of the action to format your code
is Reformat code (BLACK)
. You may want to rebind this action,
at least in my setup the default binding didn't seem to work.
By the nature of this plugin, certain flake8 codes will be
violated. This is an excerpt from what you might put in your
setup.cfg
to ignore these:
[flake8]
ignore =
# No whitespace after paren open "("
E201
# No whitespace before paren ")"
E202
# Whitespace before ":"
E203
# Multiple spaces before operator
E221
# Multiple spaces after operand
E222
# Multiple spaces after ':'
E241
# Multiple spaces before keyword
E272
# Spaces around keyword/parameter equals
E251