[Python-ideas] PEP 8 update on line length

Raymond Hettinger raymond.hettinger at gmail.com
Fri Feb 22 01:01:38 EST 2019



> On Feb 21, 2019, at 5:06 PM, Chris Barker via Python-ideas <python-ideas at python.org> wrote:
> 
>  
> class Frabawidget:
>     ...
>     @wozzle.setter
>     def (self, woozle):
>         if not (self.min_woozle < woozle < self.max_woozle):
>             raise ValueError(f"Expected woozle to be between {self.min_woozle} and {self.max_woozle}")
>         self._wozzle = normalize(woozle)
> 
> That's 103 chars long -- and very readable. But, is this that much worse?
> 
> class Frabawidget:
>     ...
>     @wozzle.setter
>     def (self, woozle):
>         if not (self.min_woozle < woozle < self.max_woozle):
>             raise ValueError(f"Expected woozle to be between"
>                               "{self.min_woozle} and {self.max_woozle}")
>         self._wozzle = normalize(woozle)
>  
> (it IS harder to write, that's for sure)

Yes, it's worse.  You introduced twos bugs.  First the space between the two fragments was lost.  Second the f on the second f-string was dropped.  I see these kinds of line-wrapping errors frequently.  The bugs are CAUSED by the line length rule.

Also, in the case of multi-line templates, there is no way to wrap them without getting very far from WYSIWYG:

def run_diagnostics(location, system, test_engineer):
    ...
    if (failures):
        print(dedent(f'''\
            There were {num_failures) anomalies detected in the {location} {system} at {event_time ::%I:%M:%S}}.
            These anomalies were classified as {level}.  Further action is {'' if escalate else 'not'} recommended.
        ''')
    else:
        print(dedent(f'''\
            A total of {num_test_cases} diagnostics were run in the {location} {system} as of {event_time::%I:%M:%S}}.
            No anomalies were detected and further action is not required.
            Test signed by {test_engineer.title()}.
    ...


Raymond


More information about the Python-ideas mailing list