In those cases, parentheses are removed when the entire statement fits
in one line, or if the inner expression doesn't have any delimiters to
-further split on. Otherwise, the parentheses are always added.
+further split on. If there is only a single delimiter and the expression
+starts or ends with a bracket, the parenthesis can also be successfully
+omitted since the existing bracket pair will organize the expression
+neatly anyway. Otherwise, the parentheses are added.
+
+Please note that *Black* does not add or remove any additional nested
+parentheses that you might want to have for clarity or further
+code organization. For example those parentheses are not going to be
+removed:
+```py3
+return not (this or that)
+decision = (maybe.this() and values > 0) or (maybe.that() and values < 0)
+```
+
+### Call chains
+
+Some popular APIs, like ORMs, use call chaining. This API style is known
+as a [fluent interface](https://en.wikipedia.org/wiki/Fluent_interface).
+*Black* formats those treating dots that follow a call or an indexing
+operation like a very low priority delimiter. It's easier to show the
+behavior than to explain it. Look at the example:
+```py3
+def example(session):
+ result = (
+ session.query(models.Customer.id)
+ .filter(
+ models.Customer.account_id == account_id,
+ models.Customer.email == email_address,
+ )
+ .order_by(models.Customer.id.asc())
+ .all()
+ )
+```
### Typing stub files
### 18.5a0 (unreleased)
+* call chains are now formatted according to the [fluent interfaces](https://en.wikipedia.org/wiki/Fluent_interface) style (#67)
+
* slices are now formatted according to PEP 8 (#178)
* parentheses are now also managed automatically on the right-hand side
* fixed non-deterministic formatting when multiple pairs of removable parentheses
were used (#183)
+* fixed multiline strings being unnecessarily wrapped in optional
+ parentheses in long assignments (#215)
+
* fixed not splitting long from-imports with only a single name
* fixed Python 3.6+ file discovery by also looking at function calls with
* fixed crash on dealing with optional parentheses (#193)
+* fixed "is", "is not", "in", and "not in" not considered operators for
+ splitting purposes
+
* fixed crash when dead symlinks where encountered