Package: gray
grayLess uncompromising Python code formatter.Gray stands on the shoulders of giants:isort- imports sorting and morepyupgrade- automatically upgrades syntax for newer versions of Pythonautoflake- remove unused imports and variablesadd-trailing-commatrim- remove trailing whitespacesunify- unify quotes stylefixit- various code formatters on LibCSTblack- optional - the uncompromising Python code formatterUsageusage:
            gray myapp.py
            gray myproj/ tests/
            gray --log-level debug --formatters isort,unify ~/app


Less uncompromising Python code formatter.

positional arguments:
  paths                 Paths to format (default: (PosixPath('.'),))

optional arguments:
  -h, --help            show this help message and exit
  --exclude EXCLUDE     A regular expression matching files and directories that should be
                        excluded from formatting. Passing an explicit empty value means not paths
                        get excluded. Use '/' as directory separator, including on Windows.
                        [default: (.*/)?(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.ven
                        v|venv|\.svn|_build|buck-out|build|dist|__pypackages__)$] (default: (.*/)?
                        (\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|venv|\.svn|_bu
                        ild|buck-out|build|dist|__pypackages__)$)
  --extend-exclude EXTEND_EXCLUDE
                        An additional regular expression to use besides --exclude. This allows to
                        keep the default regex from --exclude. (default: None)
  --pool-size POOL_SIZE
                        process pool size (default: 8)
  --do-not-detect-venv  Don't try to detect virtualenv (default: False)

Logging options:
  --log-level {debug,info,warning,error,fatal}

Formatters options:
  -f FORMATTERS, --formatters FORMATTERS
                        Enabled formatters separated by comma (optional: black) (default: add-
                        trailing-comma,autoflake,fixit,isort,pyupgrade,trim,unify)
  --min-python-version MIN_PYTHON_VERSION
                        Minimum python version to support (default: (3, 9))

pyupgrade options:
  --pyupgrade-keep-percent-format PYUPGRADE_KEEP_PERCENT_FORMAT
                        Do not upgrade percent formatted strings to f-strings (default: False)
  --pyupgrade-keep-mock PYUPGRADE_KEEP_MOCK
                        Disable rewrite of mock imports (default: False)
  --pyupgrade-keep-runtime-typing PYUPGRADE_KEEP_RUNTIME_TYPING
                        Disable pep 585 typing rewrites (default: False)

unify options:
  --unify-quote UNIFY_QUOTE
                        preferred quote (default: ")

isort options:
  --isort-profile ISORT_PROFILE
                        Base profile type to use for configuration. (default: None)
  --isort-line-length ISORT_LINE_LENGTH
                        The max length of an import line (used for wrapping long imports)
                        (default: 80)
  --isort-wrap-length ISORT_WRAP_LENGTH
                        Specifies how long lines that are wrapped should be, if not set
                        line_length is used. NOTE: wrap_length must be LOWER than or equal to
                        line_length (default: None)
  --isort-multi-line-output ISORT_MULTI_LINE_OUTPUT
                        Multi line output (0-grid, 1-vertical, 2-hanging, 3-vert-hanging, 4-vert-
                        grid, 5-vert-grid-grouped, 6-deprecated-alias-for-5, 7-noqa, 8-vertical-
                        hanging-indent-bracket, 9-vertical-prefix-from-module-import, 10-hanging-
                        indent-with-parentheses). (default: 5)
  --isort-known-third-party ISORT_KNOWN_THIRD_PARTY
                        Force isort to recognize a module as being part of a third party library.
                        (default: None)
  --isort-known-first-party ISORT_KNOWN_FIRST_PARTY
                        Force isort to recognize a module as being part of the current python
                        project. (default: None)
  --isort-known-local-folder ISORT_KNOWN_LOCAL_FOLDER
                        Force isort to recognize a module as being a local folder. Generally, this
                        is reserved for relative imports (from . import module). (default: None)
  --isort-virtual-env ISORT_VIRTUAL_ENV
                        virtual env path (default: env)
  --isort-include-trailing-comma ISORT_INCLUDE_TRAILING_COMMA
                        Includes a trailing comma on multi line imports that include parentheses.
                        (default: True)
  --isort-lines-after-imports ISORT_LINES_AFTER_IMPORTS
                        empty lines after imports (default: 2)
  --isort-skip-gitignore ISORT_SKIP_GITIGNORE
                        Treat project as a git repository and ignore files listed in .gitignore.
                        (default: True)
  --isort-use-parentheses ISORT_USE_PARENTHESES
                        Use parentheses for line continuation on length limit instead of slashes.
                        **NOTE**: This is separate from wrap modes, and only affects how
                        individual lines that are too long get continued, not sections of multiple
                        imports.. (default: True)
  --isort-length-sort ISORT_LENGTH_SORT
                        Sort imports by their string length. (default: False)

autoflake options:
  --autoflake-ignore-init-module-imports AUTOFLAKE_IGNORE_INIT_MODULE_IMPORTS
  --autoflake-expand-star-imports AUTOFLAKE_EXPAND_STAR_IMPORTS
  --autoflake-remove-all-unused-imports AUTOFLAKE_REMOVE_ALL_UNUSED_IMPORTS
  --autoflake-remove-duplicate-keys AUTOFLAKE_REMOVE_DUPLICATE_KEYS
  --autoflake-remove-unused-variables AUTOFLAKE_REMOVE_UNUSED_VARIABLES

trim options:
  --trim-leading-newlines TRIM_LEADING_NEWLINES

fixit options:
  --fixit-redundant-fstrings FIXIT_REDUNDANT_FSTRINGS
  --fixit-redundant-lambdas FIXIT_REDUNDANT_LAMBDAS
  --fixit-redundant-list-comprehensions FIXIT_REDUNDANT_LIST_COMPREHENSIONS
  --fixit-to-comprehensions FIXIT_TO_COMPREHENSIONS
  --fixit-to-literals FIXIT_TO_LITERALS
  --fixit-to-fstrings FIXIT_TO_FSTRINGS

black options:
  --black-line-length BLACK_LINE_LENGTH
                        How many characters per line to allow. (default: 88)
  --black-skip-magic-trailing-comma BLACK_SKIP_MAGIC_TRAILING_COMMA
                        Don't use trailing commas as a reason to split lines. (default: False)
  --black-skip-string-normalization BLACK_SKIP_STRING_NORMALIZATION
                        Don't normalize string quotes or prefixes. (default: False)

Args that start with '--' (eg. --exclude) can also be set in a config file (/Users/stephane/.gray
or /etc/gray.conf or ./gray.conf). Config file syntax allows: key=value, flag=true, stuff=[a,b,c]
(for details, see syntax at https://goo.gl/R74nmi). If an arg is specified in more than one place,
then commandline values override config file values which override defaults.Git HookYou can setup gray formatting before each commit with pre-commit git hook.
Add following file to.git/hooks/pre-commitand make it executable withchmod +x .git/hooks/pre-commit.#!/usr/bin/env pythonfromgray.hooksimportgit_pre_commitexit(git_pre_commit(stop_on_modify=True))Ifstop_on_modifyargument isTrue, hook will prevent commit if there are
any unstaged changes in files you about to commit.Otherwise, any unstaged changes in this files will be added to the index
by the hook.Config fileGray is looking for config file in./gray.conf,/etc/gray.confor~/.gray.Example of grayconf:formatters = add-trailing-comma,isort,unify
min-python-version = 3.5FeaturesTODOGit pre-commit hookUsepre-commit. Once youhave it installed, add this to the.pre-commit-config.yamlin your repository:repos:-repo:https://github.com/dizballanze/grayrev:master# Replace by any tag/branch: https://github.com/dizballanze/gray/tagshooks:-id:grayand runpre-commit install.Using with SourcetreeSourcetree may run withoutgraybeing available viaPATH.MacOSMake suregrayis available viaPATHand runopen /Applications/Sourcetree.app.
Or bettercreateanAutomatorworkflow
withsource ~/.bash_profile && open /Applications/Sourcetree.appscript.History0.14.0Drop support for Python 3.7, add support for Python 3.12, upgrade ifixit to v2 (by@sodul)0.13.0Add support for Python 3.11 (by@mosquito)0.12.0Add support to exclude files and folders (by@sodul)
Potential backward compatibility issue with the default exclusion list.
Some files and folders might now be excluded while they would have been
processed in older versions.remove travis.yml since it is no longer usable.0.11.0Add GitHub Action to validate PRs (by@sodul)Update third party requirements (by@sodul)Drop support for Python 3.6 (by@sodul)0.10.0blacksupport (by@sodul)0.9.0update python dependencies0.8.1Add support for python 3.90.8.0fixitsupport0.7.0pre-commitsupport (by@tzoiker)0.6.2isort: keep line breaks before local imports0.6.1Fix isort imports grouping0.6.0Bump isort to 5.4.2Use parentheses in multiline imports0.5.0Add autoflake formatterAdd trim formatter0.4.0Minimum python version optionPyupgrade optionsDetecting and skipping virtualenv0.3.0Multiprocessing support (by@mosquito)0.2.0Pre-commit hookSome formating options0.1.0 (2020-04-06)First release on PyPI.