Joe Antonakakis
3dc461a41a
Fix unstable formatting involving unwrapping multiple parentheses ( #836 ) ( #961 )
...
This change also unwraps all unnecessary parentheses.
2019-08-23 15:51:29 +01:00
Joe Antonakakis
c7495b9aa0
Fix unstable format involving backslash + whitespace at beginning of file ( #948 )
2019-08-04 10:03:19 +01:00
Zsolt Dollenstein
2848e2e1d6
Support PEP-570 (positional only arguments) ( #946 )
...
Code using positional only arguments is considered >= 3.8
2019-07-28 16:17:33 +01:00
Zsolt Dollenstein
d8fa8df052
Add support for walrus operator ( #935 )
...
* Parse `:=` properly
* never unwrap parenthesis around `:=`
* When checking for AST-equivalence, use `ast` instead of `typed-ast` when running on python >=3.8
* Assume code that uses `:=` is at least 3.8
2019-07-28 16:03:23 +01:00
Brandt Bucher
b073c9a4e9
Force parentheses between unary op and binary power. ( #909 )
2019-06-29 09:35:16 -07:00
Zsolt Dollenstein
8f380911e0
Pin comment to single leaf in invisible parens ( #872 )
2019-06-15 07:29:09 +01:00
dylanjblack
9394de150e
Fix trailing comma for function with one arg ( #880 ) ( #891 )
...
Modified maybe_remove_trailing_comma to remove trailing commas for
typedarglists (in addition to arglists), and updated line split logic
to ensure that all lines in a function definition that contain only one
arg have a trailing comma.
2019-06-14 21:49:49 -07:00
Zsolt Dollenstein
519c06a8cc
Don't introduce quotes to f-string sub-expressions on string boundaries ( #871 )
2019-05-26 11:58:00 +02:00
Jelle Zijlstra
957ba24bb6
remove obviously unnecessary parentheses ( #850 )
...
Fixes #548
2019-05-15 21:11:04 -07:00
Benjamin Woodruff
448885b256
Move tokenizer config onto grammar, rename flag
...
Based on the feedback in
https://github.com/python/black/pull/845#issuecomment-490622711
- Remove TokenizerConfig, and add a field to Grammar instead.
- Pass the Grammar to the tokenizer.
- Rename `ASYNC_IS_RESERVED_KEYWORD` to `ASYNC_KEYWORDS` and
`ASYNC_IS_VALID_IDENTIFIER` to `ASYNC_IDENTIFIERS`.
2019-05-09 17:59:29 +02:00
Benjamin Woodruff
f8617f975d
Add support for always tokenizing async/await as keywords
...
Fixes #593
I looked into this bug with @ambv and @carljm, and we reached the
conclusion was that it's not possible for the tokenizer to determine if
async/await is a keyword inside all possible generators without breaking
the grammar for older versions of Python.
Instead, we introduce a new tokenizer mode for Python 3.7+ that will
cause all async/await instances to get parsed as a reserved keyword,
which should fix async/await inside generators.
2019-05-09 17:59:29 +02:00
Jason Fried
866be06646
Make --safe work for Python2.7 syntax, by using typed_ast for safe validation ( #840 )
2019-05-08 07:45:59 -07:00
Carl Meyer
6fdbdb4ee3
Avoid unstable formatting when comment follows escaped newline. ( #839 ). Fixes #767 .
2019-05-08 09:53:20 -04:00
Jelle Zijlstra
de806405d2
Add parentheses around tuple unpack assignment ( #832 )
...
Fixes #656
2019-05-07 09:51:28 -04:00
Jelle Zijlstra
18119d3846
Remove unnecessary parens around yield ( #834 )
2019-05-07 09:49:50 -04:00
Jelle Zijlstra
6b994fdb8a
fix handling of comments in from imports ( #829 )
...
Fixes #671
2019-05-06 09:13:25 -04:00
Jelle Zijlstra
b396f13761
fix incorrect call ( #762 )
2019-03-15 18:39:08 +01:00
Andy Freeland
d6db1c12a8
Fix print() function on Python 2 ( #754 )
...
Fixes #752
2019-03-14 16:42:54 -07:00
Łukasz Langa
ca9ad698ef
Enhance the type comment patch
2019-03-14 16:26:41 +01:00
Jelle Zijlstra
f5b14b1afd
split long del statements into multiple lines ( #698 )
...
Fixes #693
2019-02-22 22:00:40 -08:00
Zsolt Dollenstein
250ba7f04b
Remove numeric underscore normalization ( #696 )
2019-02-06 19:16:49 -08:00
Jelle Zijlstra
36d3c516d3
Add --target-version
option to allow users to choose targeted Python versions ( #618 )
2019-02-06 18:43:50 -08:00
Utsav Shah
024c9cab55
Add support for special comments in multiline functions ( #642 )
2019-01-05 11:20:12 -08:00
Łukasz Langa
c6c8ef76a4
Fix mangling pweave and Spyder IDE special comments
...
Fixes #532 .
2018-09-26 09:42:42 -07:00
Łukasz Langa
1610fd6bc5
Add trailing comma for single as
imports, too
2018-09-26 08:26:35 -07:00
Zsolt Dollenstein
25d24a10a4
Add trailing comma when a single import doesn't fit on a line. ( #504 )
...
Fixes #250 .
2018-09-26 13:26:50 +01:00
Zsolt Dollenstein
5f9eb9e4f7
Add underscores to numeric literals with more than six digits ( #529 )
2018-09-26 12:32:11 +01:00
Zsolt Dollenstein
bbf38400ce
Uppercase digits in hex literals ( #530 )
2018-09-25 16:01:56 +01:00
Zsolt Dollenstein
80500748a7
fix unstable formatting when unpacking big tuples ( #514 )
...
* fix unstable formatting when unpacking big tuples
* add changelog entry
2018-09-17 12:03:21 +01:00
Zsolt Dollenstein
08f1cdd00b
Make sure async for
is not broken up to separate lines ( #503 )
...
Fixes #372 .
2018-09-08 10:34:08 +01:00
Jelle Zijlstra
a37abdcbc5
change some numeric behavior ( #469 )
2018-08-23 11:55:29 -07:00
Jelle Zijlstra
b53cb94743
fix bracket match bug ( #470 )
...
* fix bracket match bug
* add missing test file
2018-08-23 12:52:07 +01:00
Jelle Zijlstra
8b340e2102
wrap atoms in invisible parens to split adjacent strings ( #463 )
2018-08-21 21:10:59 -07:00
Jelle Zijlstra
d4f0521754
fix misformatting of floats with leading zeros ( #464 )
2018-08-20 08:19:25 -07:00
Zsolt Dollenstein
883689366c
Support parsing of async generators in non-async functions ( #165 )
...
This is a new syntax added in python3.7, so black can't verify that reformatting will not change the ast unless black itself is run with 3.7. We'll need to change the error message black gives in this case. @ambv any ideas?
Fixes #125 .
2018-08-20 14:47:58 +01:00
Jelle Zijlstra
cc48bc56ca
normalize numeric literals ( #454 )
...
Fixes #452
I ended up making a couple of other normalizations to numeric literals
too (lowercase everything, don't allow leading or trailing . in floats,
remove redundant + sign in exponent). I don't care too much about those,
so I'm happy to change the behavior there.
For reference, here is Python's grammar for numeric literals:
https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
2018-08-17 15:03:58 +01:00
Zsolt Dollenstein
e94a41f92a
Look at actual parenthesis when generating ignored leafs.
...
Fixes #385
2018-07-22 15:30:02 +01:00
Zsolt Dollenstein
dd8bde6d2f
Improve get_future_imports implementation.
...
Closes #389 .
2018-07-02 17:49:47 +01:00
Łukasz Langa
d93e726806
Don't freeze when multiple comments directly precede # fmt: off
...
Fixes #371
2018-06-21 14:03:01 -07:00
Łukasz Langa
c2327c83b2
More tests for # fmt: off
...
Two more known limitations that I don't feel like solving now. Probably very
low priority.
2018-06-19 23:46:58 -07:00
Łukasz Langa
e1ef57a29e
Move INDENT value to the postponed prefix
...
This makes blib2to3's tree output valid again (which was broken by the previous
fiddling with INDENT and DEDENT nodes).
Fixes #334
2018-06-19 20:44:47 -07:00
Łukasz Langa
df2ae3bbe6
Use the separate pass for # fmt: off
on all code
...
This removes the hacky exception-based handling that didn't work across
statement boundaries.
Fixes #335
2018-06-19 17:32:41 -07:00
Łukasz Langa
8a8c58252c
Support # fmt: off/on
pairs within brackets
...
Fixes #329
2018-06-18 22:37:46 -07:00
Jelle Zijlstra
9db828c3de
Add blank line after constants in stub file ( #360 )
...
Fixes #340
2018-06-16 11:53:45 -07:00
Zsolt Dollenstein
efcd039482
Fix string normalization eating all backslashes above 3
2018-06-10 09:44:41 +01:00
Łukasz Langa
2cf125a97c
Add failing test data
2018-06-09 23:27:00 -07:00
Łukasz Langa
94ebcb5085
Move profiling data out of tests/data
2018-06-09 15:48:41 -07:00
Zsolt Dollenstein
5d0a469e8e
Fix string normalization sometimes producing invalid fstrings ( #327 )
2018-06-09 12:30:49 -07:00
Łukasz Langa
8482d38fb4
Return early from comment placement calculation on lines without comments
2018-06-08 12:00:53 -07:00
Zsolt Dollenstein
7f3678885f
fix handling of empty triple quoted strings ( #314 )
2018-06-07 11:41:34 -07:00