Thanks. I'll check black behavior and file an issue there tonight. In
any case, the point stands. I think new, rather expected case should
be clarified explicitly in the pep.

On Wed, 27 Nov 2019 at 14:53, Ivan Levkivskyi <levkivs...@gmail.com> wrote:
>
> 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/



-- 
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/MSA5KHWWCUOH5I6UJHBBP4A6XZXLQDUF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to