IIRC, black actually uses the first style you mention, so maybe you should rather discuss it there first. Otherwise this will create a weird situation where one of the most popular auto-formatter formats code in violation of PEP 8.
-- Ivan On Wed, 27 Nov 2019 at 11:42, Stefano Borini <stefano.bor...@gmail.com> wrote: > This may be a pet peeve of mine, but with the introduction of type > hints, more and more function definitions have become longer than 80 > characters. This used to seldom happen in the past. > The problem, as I see it, is that there seem to be a general tendency > to use this way of indenting, e.g. see (among many): > > > https://github.com/samuelcolvin/pydantic/blob/c71326d4a6898612597d3c647a4256f168818e30/pydantic/parse.py#L47 > > def load_file( > path: Union[str, Path], > *, > content_type: str = None, > encoding: str = 'utf8', > proto: Protocol = None, > allow_pickle: bool = False, > ) -> Any: > path = Path(path) > b = path.read_bytes() > if content_type is None: > if path.suffix in ('.js', '.json'): > proto = Protocol.json > elif path.suffix == '.pkl': > proto = Protocol.pickle > > This violates pep8 > > # Add 4 spaces (an extra level of indentation) to distinguish > arguments from the rest. > def long_function_name( > var_one, var_two, var_three, > var_four): > print(var_one) > > However, no coding styles tools report that. Flake8 does however > report a similar error for if conditions > > if path.suffix in ( > '.js', '.json' > ): > proto = Protocol.json > > x.py:20:5: E125 continuation line with same indent as next logical line > > But says nothing for this monstrosity, which is the equivalent of the > opening case > > if path.suffix in ( > '.js', '.json' > ): > proto = Protocol.json > > It is not my intention to trigger a massive discussion. My stance is > that the appropriate visual aspect of the above code should be > > def load_file( > path: Union[str, Path], > *, > content_type: str = None, > encoding: str = 'utf8', > proto: Protocol = None, > allow_pickle: bool = False) -> Any: > path = Path(path) > b = path.read_bytes() > > to keep a visual distinction in indentation between the argument list > and the function body, as in the spirit of pep8. > Regardless of the choice, I think that pep8 should be updated with the > appropriate style for this specific case, and style tools should > enforce this choice. > > > -- > Kind regards, > > Stefano Borini > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/XKEWGJGXMANMYK37FRSJJ7IU67YUNFHC/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/TPZT2URLT47OL2PO746AXODLBIYTQB6K/ Code of Conduct: http://python.org/psf/codeofconduct/