| # Change Log |
| # All notable changes to this project will be documented in this file. |
| # This project adheres to [Semantic Versioning](http://semver.org/). |
| |
| ## [0.40.0] UNRELEASED |
| ### Added |
| - Support for Python 3.11 |
| ### Removed |
| - Support for Python <3.7 |
| |
| ## [0.33.0] 2023-04-18 |
| ### Added |
| - Add a new Python parser to generate logical lines. |
| - Added support for `# fmt: on` and `# fmt: off` pragmas. |
| ### Changes |
| - Moved 'pytree' parsing tools into its own subdirectory. |
| - Add support for Python 3.10. |
| - Format generated dicts with respect to same rules as regular dicts |
| - Generalized the ending comma heuristic to subscripts. |
| - Supports "pyproject.toml" by default. |
| ### Fixed |
| - Split line before all comparison operators. |
| |
| ## [0.32.0] 2021-12-26 |
| ### Added |
| - Look at the 'pyproject.toml' file to see if it contains ignore file information |
| for YAPF. |
| - New entry point `yapf_api.FormatTree` for formatting lib2to3 concrete |
| syntax trees. |
| - Add CI via GitHub Actions. |
| ### Changes |
| - Change tests to support "pytest". |
| - Reformat so that "flake8" is happy. |
| - Use GitHub Actions instead of Travis for CI. |
| - Clean up the FormatToken interface to limit how much it relies upon the |
| pytree node object. |
| - Rename "unwrapped_line" module to "logical_line." |
| - Rename "UnwrappedLine" class to "LogicalLine." |
| ### Fixed |
| - Added pyproject extra to install toml package as an optional dependency. |
| - Enable `BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF` knob for "pep8" style, so |
| method definitions inside a class are surrounded by a single blank line as |
| prescribed by PEP8. |
| - Fixed the '...' token to be spaced after a colon. |
| |
| ## [0.31.0] 2021-03-14 |
| ### Added |
| - Renamed 'master' brannch to 'main'. |
| - Add 'BLANK_LINES_BETWEEN_TOP_LEVEL_IMPORTS_AND_VARIABLES' to support setting |
| a custom number of blank lines between top-level imports and variable |
| definitions. |
| - Ignore end of line `# copybara:` directives when checking line length. |
| - Look at the 'pyproject.toml' file to see if it contains style information for |
| YAPF. |
| ### Changed |
| - Do not scan excluded directories. Prior versions would scan an excluded |
| folder then exclude its contents on a file by file basis. Preventing the |
| folder being scanned is faster. |
| ### Fixed |
| - Exclude directories on Windows. |
| |
| ## [0.30.0] 2020-04-23 |
| ### Added |
| - Added `SPACES_AROUND_LIST_DELIMITERS`, `SPACES_AROUND_DICT_DELIMITERS`, |
| and `SPACES_AROUND_TUPLE_DELIMITERS` to add spaces after the opening- |
| and before the closing-delimiters for lists, dicts, and tuples. |
| - Adds `FORCE_MULTILINE_DICT` knob to ensure dictionaries always split, |
| even when shorter than the max line length. |
| - New knob `SPACE_INSIDE_BRACKETS` to add spaces inside brackets, braces, and |
| parentheses. |
| - New knob `SPACES_AROUND_SUBSCRIPT_COLON` to add spaces around the subscript / |
| slice operator. |
| ### Changed |
| - Renamed "chromium" style to "yapf". Chromium will now use PEP-8 directly. |
| - `CONTINUATION_ALIGN_STYLE` with `FIXED` or `VALIGN-RIGHT` now works with |
| space indentation. |
| ### Fixed |
| - Honor a disable directive at the end of a multiline comment. |
| - Don't require splitting before comments in a list when |
| `SPLIT_ALL_TOP_LEVEL_COMMA_SEPARATED_VALUES` is set. The knob is meant for |
| values, not comments, which may be associated with the current line. |
| - Don't over-indent a parameter list when not needed. But make sure it is |
| properly indented so that it doesn't collide with the lines afterwards. |
| - Don't split between two-word comparison operators: "is not", "not in", etc. |
| |
| ## [0.29.0] 2019-11-28 |
| ### Added |
| - Add the `--quiet` flag to suppress output. The return code is 1 if there are |
| changes, similarly to the `--diff` flag. |
| - Add the `indent_closing_brackets` option. This is the same as the |
| `dedent_closing_brackets` option except the brackets are indented the same |
| as the previous line. |
| ### Changed |
| - Collect a parameter list into a single object. This allows us to track how a |
| parameter list is formatted, keeping state along the way. This helps when |
| supporting Python 3 type annotations. |
| - Catch and report `UnicodeDecodeError` exceptions. |
| - Improved description of .yapfignore syntax. |
| ### Fixed |
| - Format subscript lists so that splits are essentially free after a comma. |
| - Don't add a space between a string and its subscript. |
| - Extend discovery of '.style.yapf' & 'setup.cfg' files to search the root |
| directory as well. |
| - Make sure we have parameters before we start calculating penalties for |
| splitting them. |
| - Indicate if a class/function is nested to ensure blank lines when needed. |
| - Fix extra indentation in async-for else statement. |
| - A parameter list with no elements shouldn't count as exceeding the column |
| limit. |
| - When splitting all comma separated values, don't treat the ending bracket as |
| special. |
| - The "no blank lines between nested classes or functions" knob should only |
| apply to the first nested class or function, not all of them. |
| |
| ## [0.28.0] 2019-07-11 |
| ### Added |
| - New knob `SPLIT_ALL_TOP_LEVEL_COMMA_SEPARATED_VALUES` is a variation on |
| `SPLIT_ALL_COMMA_SEPARATED_VALUES` in which, if a subexpression with a comma |
| fits in its starting line, then the subexpression is not split (thus avoiding |
| unnecessary splits). |
| ### Changed |
| - Set `INDENT_DICTIONARY_VALUE` for Google style. |
| - Set `JOIN_MULTIPLE_LINES = False` for Google style. |
| ### Fixed |
| - `BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF=False` wasn't honored because the |
| number of newlines was erroneously calculated beforehand. |
| - Lambda expressions shouldn't have an increased split penalty applied to the |
| 'lambda' keyword. This prevents them from being properly formatted when they're |
| arguments to functions. |
| - A comment with continuation markers (??) shouldn't mess with the lineno count. |
| - Only emit unformatted if the "disable long line" is at the end of the line. |
| Otherwise we could mess up formatting for containers which have them |
| interspersed with code. |
| - Fix a potential race condition by using the correct style for opening a file |
| which may not exist. |
| |
| ## [0.27.0] 2019-04-07 |
| ### Added |
| - `SPLIT_BEFORE_ARITHMETIC_OPERATOR` splits before an arithmetic operator when |
| set. `SPLIT_PENALTY_ARITHMETIC_OPERATOR` allows you to set the split penalty |
| around arithmetic operators. |
| ### Changed |
| - Catch lib2to3's "TokenError" exception and output a nicer message. |
| ### Fixed |
| - Parse integer lists correctly, removing quotes if the list is within a |
| string. |
| - Adjust the penalties of bitwise operands for '&' and '^', similar to '|'. |
| - Avoid splitting after opening parens if SPLIT_BEFORE_FIRST_ARGUMENT is set |
| to False. |
| - Adjust default SPLIT_PENALTY_AFTER_OPENING_BRACKET. |
| - Re-enable removal of extra lines on the boundaries of formatted regions. |
| - Adjust list splitting to avoid splitting before a dictionary element, because |
| those are likely to be split anyway. If we do split, it leads to horrible |
| looking code. |
| - Dictionary arguments were broken in a recent version. It resulted in |
| unreadable formatting, where the remaining arguments were indented far more |
| than the dictionary. Fixed so that if the dictionary is the first argument in |
| a function call and doesn't fit on a single line, then it forces a split. |
| - Improve the connectiveness between items in a list. This prevents random |
| splitting when it's not 100% necessary. |
| - Don't remove a comment attached to a previous object just because it's part |
| of the "prefix" of a function/class node. |
| |
| ## [0.26.0] 2019-02-08 |
| ### Added |
| - `ALLOW_SPLIT_BEFORE_DEFAULT_OR_NAMED_ASSIGNS` allows us to split before |
| default / named assignments. |
| - `ARITHMETIC_PRECEDENCE_INDICATION` removes spacing around binary operators |
| if they have higher precedence than other operators in the same expression. |
| ### Changed |
| - `SPACES_BEFORE_COMMENT` can now be assigned to a specific value (standard |
| behavior) or a list of column values. When assigned to a list, trailing |
| comments will be horizontally aligned to the first column value within |
| the list that is greater than the maximum line length in the block. |
| - Don't modify the vertical spacing of a line that has a comment "pylint: |
| disable=line-too-long". The line is expected to be too long. |
| - improved `CONTINUATION_ALIGN_STYLE` to accept quoted or underline-separated |
| option value for passing option with command line arguments. |
| ### Fixed |
| - When retrieving the opening bracket make sure that it's actually an opening |
| bracket. |
| - Don't completely deny a lambda formatting if it goes over the column limit. |
| Split only if absolutely necessary. |
| - Bump up penalty for splitting before a dot ('.'). |
| - Ignore pseudo tokens when calculating split penalties. |
| - Increase the penalty for splitting before the first bit of a subscript. |
| - Improve splitting before dictionary values. Look more closely to see if the |
| dictionary entry is a container. If so, then it's probably split over |
| multiple lines with the opening bracket on the same line as the key. |
| Therefore, we shouldn't enforce a split because of that. |
| - Increase split penalty around exponent operator. |
| - Correct spacing when using binary operators on strings with the |
| `NO_SPACES_AROUND_SELECTED_BINARY_OPERATORS` option enabled. |
| |
| ## [0.25.0] 2018-11-25 |
| ### Added |
| - Added `INDENT_BLANK_LINES` knob to select whether the blank lines are empty |
| or indented consistently with the current block. |
| - Support additional file exclude patterns in .yapfignore file. |
| ### Fixed |
| - Correctly determine if a scope is the last in line. It avoids a wrong |
| computation of the line end when determining if it must split after the |
| opening bracket with `DEDENT_CLOSING_BRACKETS` enabled. |
| |
| ## [0.24.0] 2018-09-07 |
| ### Added |
| - Added 'SPLIT_BEFORE_DOT' knob to support "builder style" calls. The "builder |
| style" option didn't work as advertised. Lines would split after the dots, |
| not before them regardless of the penalties. |
| ### Changed |
| - Support Python 3.7 in the tests. The old "comp_for" and "comp_if" nodes are |
| now "old_comp_for" and "old_comp_if" in lib2to3. |
| ### Fixed |
| - Don't count inner function calls when marking arguments as named assignments. |
| - Make sure that tuples and the like are formatted nicely if they all can't fit |
| on a single line. This is similar to how we format function calls within an |
| argument list. |
| - Allow splitting in a subscript if it goes over the line limit. |
| - Increase the split penalty for an if-expression. |
| - Increase penalty for splitting in a subscript so that it's more likely to |
| split in a function call or other data literal. |
| - Cloning a pytree node doesn't transfer its a annotations. Make sure we do |
| that so that we don't lose information. |
| - Revert change that broke the "no_spaces_around_binary_operators" option. |
| - The "--style-help" option would output string lists and sets in Python types. |
| If the output was used as a style, then it wouldn't parse those values |
| correctly. |
| |
| ## [0.23.0] 2018-08-27 |
| ### Added |
| - `DISABLE_ENDING_COMMA_HEURISTIC` is a new knob to disable the heuristic which |
| splits a list onto separate lines if the list is comma-terminated. |
| ### Fixed |
| - There's no need to increase N_TOKENS. In fact, it causes other things which |
| use lib2to3 to fail if called from YAPF. |
| - Change the exception message instead of creating a new one that's just a |
| clone. |
| - Make sure not to reformat when a line is disabled even if the --lines option |
| is specified. |
| - The "no spaces around operators" flag wasn't correctly converting strings to |
| sets. Changed the regexp to handle it better. |
| |
| ## [0.22.0] 2018-05-15 |
| ### Added |
| - The `BLANK_LINE_BEFORE_MODULE_DOCSTRING` knob adds a blank line before a |
| module's docstring. |
| - The `SPLIT_ALL_COMMA_SEPARATED_VALUES` knob causes all lists, tuples, dicts |
| function defs, etc... to split on all values, instead of maximizing the |
| number of elements on each line, when not able to fit on a single line. |
| ### Changed |
| - Improve the heuristic we use to determine when to split at the start of a |
| function call. First check whether or not all elements can fit in the space |
| without wrapping. If not, then we split. |
| - Check all of the elements of a tuple. Similarly to how arguments are |
| analyzed. This allows tuples to be split more rationally. |
| - Adjust splitting penalties around arithmetic operators so that the code can |
| flow more freely. The code must flow! |
| - Try to meld an argument list's closing parenthesis to the last argument. |
| ### Fixed |
| - Attempt to determine if long lambdas are allowed. This can be done on a |
| case-by-case basis with a "pylint" disable comment. |
| - A comment before a decorator isn't part of the decorator's line. |
| - Only force a new wrapped line after a comment in a decorator when it's the |
| first token in the decorator. |
| |
| ## [0.21.0] 2018-03-18 |
| ### Added |
| - Introduce a new option of formatting multiline literals. Add |
| `SPLIT_BEFORE_CLOSING_BRACKET` knob to control whether closing bracket should |
| get their own line. |
| - Added `CONTINUATION_ALIGN_STYLE` knob to choose continuation alignment style |
| when `USE_TABS` is enabled. |
| - Add 'BLANK_LINES_AROUND_TOP_LEVEL_DEFINITION' knob to control the number |
| of blank lines between top-level function and class definitions. |
| ### Fixed |
| - Don't split ellipses. |
| |
| ## [0.20.2] 2018-02-12 |
| ### Changed |
| - Improve the speed at which files are excluded by ignoring them earlier. |
| - Allow dictionaries to stay on a single line if they only have one entry |
| ### Fixed |
| - Use tabs when constructing a continuation line when `USE_TABS` is enabled. |
| - A dictionary entry may not end in a colon, but may be an "unpacking" |
| operation: `**foo`. Take that into account and don't split after the |
| unpacking operator. |
| |
| ## [0.20.1] 2018-01-13 |
| ### Fixed |
| - Don't treat 'None' as a keyword if calling a function on it, like '__ne__()'. |
| - use_tabs=True always uses a single tab per indentation level; spaces are |
| used for aligning vertically after that. |
| - Relax the split of a paren at the end of an if statement. With |
| `dedent_closing_brackets` option requires that it be able to split there. |
| |
| ## [0.20.0] 2017-11-14 |
| ### Added |
| - Improve splitting of comprehensions and generators. Add |
| `SPLIT_PENALTY_COMPREHENSION` knob to control preference for keeping |
| comprehensions on a single line and `SPLIT_COMPLEX_COMPREHENSION` to enable |
| splitting each clause of complex comprehensions onto its own line. |
| ### Changed |
| - Take into account a named function argument when determining if we should |
| split before the first argument in a function call. |
| - Split before the first argument in a function call if the arguments contain a |
| dictionary that doesn't fit on a single line. |
| - Improve splitting of elements in a tuple. We want to split if there's a |
| function call in the tuple that doesn't fit on the line. |
| ### Fixed |
| - Enforce spaces between ellipses and keywords. |
| - When calculating the split penalty for a "trailer", process the child nodes |
| afterwards because their penalties may change. For example if a list |
| comprehension is an argument. |
| - Don't enforce a split before a comment after the opening of a container if it |
| doesn't it on the current line. We try hard not to move such comments around. |
| - Use a TextIOWrapper when reading from stdin in Python3. This is necessary for |
| some encodings, like cp936, used on Windows. |
| - Remove the penalty for a split before the first argument in a function call |
| where the only argument is a generator expression. |
| |
| ## [0.19.0] 2017-10-14 |
| ### Added |
| - Added `SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN` that enforces a split |
| after the opening paren of an expression that's surrounded by parens. |
| ### Changed |
| - Split before the ending bracket of a comma-terminated tuple / argument list |
| if it's not a single element tuple / arg list. |
| ### Fixed |
| - Prefer to split after a comma in an argument list rather than in the middle |
| of an argument. |
| - A non-multiline string may have newlines if it contains continuation markers |
| itself. Don't add a newline after the string when retaining the vertical |
| space. |
| - Take into account the "async" keyword when determining if we must split |
| before the first argument. |
| - Increase affinity for "atom" arguments in function calls. This helps prevent |
| lists from being separated when they don't need to be. |
| - Don't place a dictionary argument on its own line if it's the last argument |
| in the function call where that function is part of a builder-style call. |
| - Append the "var arg" type to a star in a star_expr. |
| |
| ## [0.18.0] 2017-09-18 |
| ### Added |
| - Option `ALLOW_SPLIT_BEFORE_DICT_VALUE` allows a split before a value. If |
| False, then it won't be split even if it goes over the column limit. |
| ### Changed |
| - Use spaces around the '=' in a typed name argument to align with 3.6 syntax. |
| ### Fixed |
| - Allow semicolons if the line is disabled. |
| - Fix issue where subsequent comments at decreasing levels of indentation |
| were improperly aligned and/or caused output with invalid syntax. |
| - Fix issue where specifying a line range removed a needed line before a |
| comment. |
| - Fix spacing between unary operators if one is 'not'. |
| - Indent the dictionary value correctly if there's a multi-line key. |
| - Don't remove needed spacing before a comment in a dict when in "chromium" |
| style. |
| - Increase indent for continuation line with same indent as next logical line |
| with 'async with' statement. |
| |
| ## [0.17.0] 2017-08-20 |
| ### Added |
| - Option `NO_SPACES_AROUND_SELECTED_BINARY_OPERATORS` prevents adding spaces |
| around selected binary operators, in accordance with the current style guide. |
| ### Changed |
| - Adjust blank lines on formatting boundaries when using the `--lines` option. |
| - Return 1 if a diff changed the code. This is in line with how GNU diff acts. |
| - Add `-vv` flag to print out file names as they are processed |
| ### Fixed |
| - Corrected how `DEDENT_CLOSING_BRACKETS` and `COALESCE_BRACKETS` interacted. |
| - Fix return value to return a boolean. |
| - Correct vim plugin not to clobber edited code if yapf returns an error. |
| - Ensured comma-terminated tuples with multiple elements are split onto separate lines. |
| |
| ## [0.16.3] 2017-07-13 |
| ### Changed |
| - Add filename information to a ParseError exception. |
| ### Fixed |
| - A token that ends in a continuation marker may have more than one newline in |
| it, thus changing its "lineno" value. This can happen if multiple |
| continuation markers are used with no intervening tokens. Adjust the line |
| number to account for the lines covered by those markers. |
| - Make sure to split after a comment even for "pseudo" parentheses. |
| |
| ## [0.16.2] 2017-05-19 |
| ### Fixed |
| - Treat expansion operators ('*', '**') in a similar way to function calls to |
| avoid splitting directly after the opening parenthesis. |
| - Increase the penalty for splitting after the start of a tuple. |
| - Increase penalty for excess characters. |
| - Check that we have enough children before trying to access them all. |
| - Remove trailing whitespaces from comments. |
| - Split before a function call in a list if the full list isn't able to fit on |
| a single line. |
| - Trying not to split around the '=' of a named assign. |
| - Changed split before the first argument behavior to ignore compound |
| statements like if and while, but not function declarations. |
| - Changed coalesce brackets not to line split before closing bracket. |
| |
| ## [0.16.1] 2017-03-22 |
| ### Changed |
| - Improved performance of cloning the format decision state object. This |
| improved the time in one *large* case from 273.485s to 234.652s. |
| - Relax the requirement that a named argument needs to be on one line. Going |
| over the column limit is more of an issue to pylint than putting named args |
| on multiple lines. |
| - Don't make splitting penalty decisions based on the original formatting. This |
| can and does lead to non-stable formatting, where yapf will reformat the same |
| code in different ways. |
| ### Fixed |
| - Ensure splitting of arguments if there's a named assign present. |
| - Prefer to coalesce opening brackets if it's not at the beginning of a |
| function call. |
| - Prefer not to squish all of the elements in a function call over to the |
| right-hand side. Split the arguments instead. |
| - We need to split a dictionary value if the first element is a comment anyway, |
| so don't force the split here. It's forced elsewhere. |
| - Ensure tabs are used for continued indentation when USE_TABS is True. |
| |
| ## [0.16.0] 2017-02-05 |
| ### Added |
| - The `EACH_DICT_ENTRY_ON_SEPARATE_LINE` knob indicates that each dictionary |
| entry should be in separate lines if the full dictionary isn't able to fit on |
| a single line. |
| - The `SPLIT_BEFORE_DICT_SET_GENERATOR` knob splits before the `for` part of a |
| dictionary/set generator. |
| - The `BLANK_LINE_BEFORE_CLASS_DOCSTRING` knob adds a blank line before a |
| class's docstring. |
| - The `ALLOW_MULTILINE_DICTIONARY_KEYS` knob allows dictionary keys to span |
| more than one line. |
| ### Fixed |
| - Split before all entries in a dict/set or list maker when comma-terminated, |
| even if there's only one entry. |
| - Will now try to set O_BINARY mode on stdout under Windows and Python 2. |
| - Avoid unneeded newline transformation when writing formatted code to |
| output on (affects only Python 2) |
| |
| ## [0.15.2] 2017-01-29 |
| ### Fixed |
| - Don't perform a global split when a named assign is part of a function call |
| which itself is an argument to a function call. I.e., don't cause 'a' to |
| split here: |
| |
| func(a, b, c, d(x, y, z=42)) |
| - Allow splitting inside a subscript if it's a logical or bitwise operating. |
| This should keep the subscript mostly contiguous otherwise. |
| |
| ## [0.15.1] 2017-01-21 |
| ### Fixed |
| - Don't insert a space between a type hint and the '=' sign. |
| - The '@' operator can be used in Python 3 for matrix multiplication. Give the |
| '@' in the decorator a DECORATOR subtype to distinguish it. |
| - Encourage the formatter to split at the beginning of an argument list instead |
| of in the middle. Especially if the middle is an empty parameter list. This |
| adjusts the affinity of binary and comparison operators. In particular, the |
| "not in" and other such operators don't want to have a split after it (or |
| before it) if at all possible. |
| |
| ## [0.15.0] 2017-01-12 |
| ### Added |
| - Keep type annotations intact as much as possible. Don't try to split the over |
| multiple lines. |
| ### Fixed |
| - When determining if each element in a dictionary can fit on a single line, we |
| are skipping dictionary entries. However, we need to ignore comments in our |
| calculations and implicitly concatenated strings, which are already placed on |
| separate lines. |
| - Allow text before a "pylint" comment. |
| - Also allow text before a "yapf: (disable|enable)" comment. |
| |
| ## [0.14.0] 2016-11-21 |
| ### Added |
| - formatting can be run in parallel using the "-p" / "--parallel" flags. |
| ### Fixed |
| - "not in" and "is not" should be subtyped as binary operators. |
| - A non-Node dictionary value may have a comment before it. In those cases, we |
| want to avoid encompassing only the comment in pseudo parens. So we include |
| the actual value as well. |
| - Adjust calculation so that pseudo-parentheses don't count towards the total |
| line length. |
| - Don't count a dictionary entry as not fitting on a single line in a |
| dictionary. |
| - Don't count pseudo-parentheses in the length of the line. |
| |
| ## [0.13.2] 2016-10-22 |
| ### Fixed |
| - REGRESSION: A comment may have a prefix with newlines in it. When calculating |
| the prefix indent, we cannot take the newlines into account. Otherwise, the |
| comment will be misplaced causing the code to fail. |
| |
| ## [0.13.1] 2016-10-17 |
| ### Fixed |
| - Correct emitting a diff that was accidentally removed. |
| |
| ## [0.13.0] 2016-10-16 |
| ### Added |
| - Added support to retain the original line endings of the source code. |
| |
| ### Fixed |
| - Functions or classes with comments before them were reformatting the comments |
| even if the code was supposed to be ignored by the formatter. We now don't |
| adjust the whitespace before a function's comment if the comment is a |
| "disabled" line. We also don't count "# yapf: {disable|enable}" as a disabled |
| line, which seems logical. |
| - It's not really more readable to split before a dictionary value if it's part |
| of a dictionary comprehension. |
| - Enforce two blank lines after a function or class definition, even before a |
| comment. (But not between a decorator and a comment.) This is related to PEP8 |
| error E305. |
| - Remove O(n^2) algorithm from the line disabling logic. |
| |
| ## [0.12.2] 2016-10-09 |
| ### Fixed |
| - If `style.SetGlobalStyle(<create pre-defined style>)` was called and then |
| `yapf_api.FormatCode` was called, the style set by the first call would be |
| lost, because it would return the style created by `DEFAULT_STYLE_FACTORY`, |
| which is set to PEP8 by default. Fix this by making the first call set which |
| factory we call as the "default" style. |
| - Don't force a split before non-function call arguments. |
| - A dictionary being used as an argument to a function call and which can exist |
| on a single line shouldn't be split. |
| - Don't rely upon the original line break to determine if we should split |
| before the elements in a container. Especially split if there's a comment in |
| the container. |
| - Don't add spaces between star and args in a lambda expression. |
| - If a nested data structure terminates in a comma, then split before the first |
| element, but only if there's more than one element in the list. |
| |
| ## [0.12.1] 2016-10-02 |
| ### Changed |
| - Dictionary values will be placed on the same line as the key if *all* of the |
| elements in the dictionary can be placed on one line. Otherwise, the |
| dictionary values will be placed on the next line. |
| |
| ### Fixed |
| - Prefer to split before a terminating r-paren in an argument list if the line |
| would otherwise go over the column limit. |
| - Split before the first key in a dictionary if the dictionary cannot fit on a |
| single line. |
| - Don't count "pylint" comments when determining if the line goes over the |
| column limit. |
| - Don't count the argument list of a lambda as a named assign in a function |
| call. |
| |
| ## [0.12.0] 2016-09-25 |
| ### Added |
| - Support formatting of typed names. Typed names are formatted a similar way to |
| how named arguments are formatted, except that there's a space after the |
| colon. |
| - Add a knob, 'SPACES_AROUND_DEFAULT_OR_NAMED_ASSIGN', to allow adding spaces |
| around the assign operator on default or named assigns. |
| |
| ## Changed |
| - Turn "verification" off by default for external APIs. |
| - If a function call in an argument list won't fit on the current line but will |
| fit on a line by itself, then split before the call so that it won't be split |
| up unnecessarily. |
| |
| ## Fixed |
| - Don't add space after power operator if the next operator's a unary operator. |
| |
| ## [0.11.1] 2016-08-17 |
| ### Changed |
| - Issue #228: Return exit code 0 on success, regardless of whether files were |
| changed. (Previously, 0 meant success with no files |
| modified, and 2 meant success with at least one file modified.) |
| |
| ### Fixed |
| - Enforce splitting each element in a dictionary if comma terminated. |
| - It's okay to split in the middle of a dotted name if the whole expression is |
| going to go over the column limit. |
| - Asynchronous functions were going missing if they were preceded by a comment |
| (a what? exactly). The asynchronous function processing wasn't taking the |
| comment into account and thus skipping the whole function. |
| - The splitting of arguments when comma terminated had a conflict. The split |
| penalty of the closing bracket was set to the maximum, but it shouldn't be if |
| the closing bracket is preceded by a comma. |
| |
| ## [0.11.0] 2016-07-17 |
| ### Added |
| - The COALESCE_BRACKETS knob prevents splitting consecutive brackets when |
| DEDENT_CLOSING_BRACKETS is set. |
| - Don't count "pylint" directives as exceeding the column limit. |
| |
| ### Changed |
| - We split all of the arguments to a function call if there's a named argument. |
| In this case, we want to split after the opening bracket too. This makes |
| things look a bit better. |
| |
| ### Fixed |
| - When retaining format of a multiline string with Chromium style, make sure |
| that the multiline string doesn't mess up where the following comma ends up. |
| - Correct for when 'lib2to3' smooshes comments together into the same DEDENT |
| node. |
| |
| ## [0.10.0] 2016-06-14 |
| ### Added |
| - Add a knob, 'USE_TABS', to allow using tabs for indentation. |
| |
| ### Changed |
| - Performance enhancements. |
| |
| ### Fixed |
| - Don't split an import list if it's not surrounded by parentheses. |
| |
| ## [0.9.0] 2016-05-29 |
| ### Added |
| - Added a knob (SPLIT_PENALTY_BEFORE_IF_EXPR) to adjust the split penalty |
| before an if expression. This allows the user to place a list comprehension |
| all on one line. |
| - Added a knob (SPLIT_BEFORE_FIRST_ARGUMENT) that encourages splitting before |
| the first element of a list of arguments or parameters if they are going to |
| be split anyway. |
| - Added a knob (SPLIT_ARGUMENTS_WHEN_COMMA_TERMINATED) splits arguments to a |
| function if the list is terminated by a comma. |
| |
| ### Fixed |
| - Don't split before a first element list argument as we would before a first |
| element function call. |
| - Don't penalize when we must split a line. |
| - Allow splitting before the single argument in a function call. |
| |
| ## [0.8.2] 2016-05-21 |
| ### Fixed |
| - Prefer not to split after the opening of a subscript. |
| - Don't add space before the 'await' keyword if it's preceded by an opening |
| paren. |
| - When we're setting the split penalty for a continuous list, we don't want to |
| mistake a comment at the end of that list as part of the list. |
| - When calculating blank lines, don't assume the last seen object was a class |
| or function when we're in a class or function. |
| - Don't count the closing scope when determining if the current scope is the |
| last scope on the line. |
| |
| ## [0.8.1] 2016-05-18 |
| ### Fixed |
| - 'SPLIT_BEFORE_LOGICAL_OPERATOR' wasn't working correctly. The penalty was |
| being set incorrectly when it was part of a larger construct. |
| - Don't separate a keyword, like "await", from a left paren. |
| - Don't rely upon the original tokens' line number to determine if we should |
| perform splitting in Facebook mode. The line number isn't the line number of |
| the reformatted token, but the line number where it was in the original code. |
| Instead, we need to carefully determine if the line is liabel to be split and |
| act accordingly. |
| |
| ## [0.8.0] 2016-05-10 |
| ### Added |
| - Add a knob, 'SPACES_AROUND_POWER_OPERATOR', to allow adding spaces around the |
| power operator. |
| |
| ### Fixed |
| - There shouldn't be a space between a decorator and an intervening comment. |
| - If we split before a bitwise operator, then we assume that the programmer |
| knows what they're doing, more or less, and so we enforce a split before said |
| operator if one exists in the original program. |
| - Strengthen the bond between a keyword and value argument. |
| - Don't add a blank line after a multiline string. |
| - If the "for" part of a list comprehension can exist on the starting line |
| without going over the column limit, then let it remain there. |
| |
| ## [0.7.1] 2016-04-21 |
| ### Fixed |
| - Don't rewrite the file if there are no changes. |
| - Ensure the proper number of blank lines before an async function. |
| - Split after a bitwise operator when in PEP 8 mode. |
| - Retain the splitting within a dictionary data literal between the key and |
| value. |
| - Try to keep short function calls all on one line even if they're part of a |
| larger series of tokens. This stops us from splitting too much. |
| |
| ## [0.7.0] 2016-04-09 |
| ### Added |
| - Support for Python 3.5. |
| - Add 'ALLOW_MULTILINE_LAMBDAS' which allows lambdas to be formatted onto |
| multiple lines. |
| |
| ### Fixed |
| - Lessen penalty for splitting before a dictionary keyword. |
| - Formatting of trailing comments on disabled formatting lines. |
| - Disable / enable formatting at end of multi-line comment. |
| |
| ## [0.6.3] 2016-03-06 |
| ### Changed |
| - Documentation updated. |
| |
| ### Fixed |
| - Fix spacing of multiline comments when formatting is disabled. |
| |
| ## [0.6.2] 2015-11-01 |
| ### Changed |
| - Look at the 'setup.cfg' file to see if it contains style information for |
| YAPF. |
| - Look at the '~/.config/yapf/style' file to see if it contains global style |
| information for YAPF. |
| |
| ### Fixed |
| - Make lists that can fit on one line more likely to stay together. |
| - Correct formatting of '*args' and '**kwargs' when there are default values in |
| the argument list. |
| |
| ## [0.6.1] 2015-10-24 |
| ### Fixed |
| - Make sure to align comments in data literals correctly. Also make sure we |
| don't count a "#." in a string as an i18n comment. |
| - Retain proper vertical spacing before comments in a data literal. |
| - Make sure that continuations from a compound statement are distinguished from |
| the succeeding line. |
| - Ignore preceding comments when calculating what is a "dictionary maker". |
| - Add a small penalty for splitting before a closing bracket. |
| - Ensure that a space is enforced after we remove a pseudo-paren that's between |
| two names, keywords, numbers, etc. |
| - Increase the penalty for splitting after a pseudo-paren. This could lead to |
| less readable code in some circumstances. |
| |
| ## [0.6.0] 2015-10-18 |
| ### Added |
| - Add knob to indent the dictionary value if there is a split before it. |
| |
| ### Changed |
| - No longer check that a file is a "Python" file unless the '--recursive' flag |
| is specified. |
| - No longer allow the user to specify a directory unless the '--recursive' flag |
| is specified. |
| |
| ### Fixed |
| - When determining if we should split a dictionary's value to a new line, use |
| the longest entry instead of the total dictionary's length. This allows the |
| formatter to reformat the dictionary in a more consistent manner. |
| - Improve how list comprehensions are formatted. Make splitting dependent upon |
| whether the "comp_for" or "comp_if" goes over the column limit. |
| - Don't over indent if expression hanging indents if we expect to dedent the |
| closing bracket. |
| - Improve splitting heuristic when the first argument to a function call is |
| itself a function call with arguments. In cases like this, the remaining |
| arguments to the function call would look badly aligned, even though they are |
| technically correct (the best kind of correct!). |
| - Improve splitting heuristic more so that if the first argument to a function |
| call is a data literal that will go over the column limit, then we want to |
| split before it. |
| - Remove spaces around '**' operator. |
| - Retain formatting of comments in the middle of an expression. |
| - Don't add a newline to an empty file. |
| - Over indent a function's parameter list if it's not distinguished from the |
| body of the function. |
| |
| ## [0.5.0] 2015-10-11 |
| ### Added |
| - Add option to exclude files/directories from formatting. |
| - Add a knob to control whether import names are split after the first '('. |
| |
| ### Fixed |
| - Indent the continuation of an if-then statement when it's not distinguished |
| from the body of the if-then. |
| - Allow for sensible splitting of array indices where appropriate. |
| - Prefer to not split before the ending bracket of an atom. This produces |
| better code in most cases. |
| - Corrected how horizontal spaces were presevered in a disabled region. |
| |
| ## [0.4.0] 2015-10-07 |
| ### Added |
| - Support for dedenting closing brackets, "facebook" style. |
| |
| ### Fixed |
| - Formatting of tokens after a multiline string didn't retain their horizontal |
| spacing. |
| |
| ## [0.3.1] 2015-09-30 |
| ### Fixed |
| - Format closing scope bracket correctly when indentation size changes. |
| |
| ## [0.3.0] 2015-09-20 |
| ### Added |
| - Return a 2 if the source changed, 1 on error, and 0 for no change. |
| |
| ### Fixed |
| - Make sure we format if the "lines" specified are in the middle of a |
| statement. |
| |
| ## [0.2.9] - 2015-09-13 |
| ### Fixed |
| - Formatting of multiple files. It was halting after formatting the first file. |
| |
| ## [0.2.8] - 2015-09-12 |
| ### Added |
| - Return a non-zero exit code if the source was changed. |
| - Add bitwise operator splitting penalty and prefer to split before bitwise |
| operators. |
| |
| ### Fixed |
| - Retain vertical spacing between disabled and enabled lines. |
| - Split only at start of named assign. |
| - Retain comment position when formatting is disabled. |
| - Honor splitting before or after logical ops. |