Python and PEP8 - Recommendations on breaking up long lines?
Terry Reedy
tjreedy at udel.edu
Wed Nov 27 21:55:08 EST 2013
On 11/27/2013 8:57 PM, Victor Hooi wrote:
[sorry if the re-wrapping mis-formats anything]
> I'm running pep8
Ah yes, the module that turns PEP8 into the straightjacket it explicitly
says it is not meant to be.
> across my code,
We mostly to not change existing stdlib modules to conform unless they
are being edited anyway for fixes and features.
> and getting warnings about my long lines (> 80 characters).
You are free to ignore such
> I'm wonder what's the recommended way to handle the below cases, and
> fit under 80 characters.
>
> First example - multiple context handlers:
>
> with open(self.full_path, 'r') as input, open(self.output_csv, 'ab')
> as output:
>
> and in my case, with indents, the 80-character marks is just before
> the ending "as output".
>
> What's the standard recognised way to split this across multiple
> lines, so that I'm under 80 characters?
I believe () does not work, so put \ after 'input,'.
> I can't just split after the "as input," as that isn't valid syntax,
> and there's no convenient parentheses for me to split over.
>
> Is there a standard Pythonic way?
>
> Second example - long error messages:
>
> self.logger.error('Unable to open input or output file - %s. Please
> check you have sufficient permissions and the file and parent
> directory exist.' % e)
>
> I can use triple quotes:
>
> self.logger.error( """Unable to open input or output file - %s.
> Please check you have sufficient permissions and the file and parent
> directory exist.""" % e)
>
> However, that will introduce newlines in the message, which I don't
> want.
>
> I can use backslashes:
>
> self.logger.error( 'Unable to open input or output file - %s. Please
> check you\ have sufficient permissions and the file and parent
> directory\ exist.' % e)
>
> which won't introduce newlines.
>
> Or I can put them all as separate strings, and trust Python to glue
> them together:
Such gluing in a documented feature and I think you can trust it to not
disappear (for at least a decade ;-).
> self.logger.error( 'Unable to open input or output file - %s. Please
> check you' 'have sufficient permissions and the file and parent
> directory' 'exist.' % e)
>
> Which way is the recommended Pythonic way?
>
> Third example - long comments:
>
> """ NB - We can't use Psycopg2's parametised statements here, as that
> automatically wraps everything in single quotes. So
> s3://my_bucket/my_file.csv.gz would become
> s3://'my_bucket'/'my_file.csv.gz'. Hence, we use Python's normal
> string formating - this could potentially exposes us to SQL injection
> attacks via the config.yaml file. I'm not aware of any easy ways
> around this currently though - I'm open to suggestions though. See
> http://stackoverflow.com/questions/9354392/psycopg2-cursor-execute-with-sql-query-parameter-causes-syntax-error
>
>for further information. """
>
> In this case, I'm guessing a using triple quotes (""") is a better
> idea with multi-line comments, right?
Either are ok.
> However, I've noticed that I can't seem to put in line-breaks inside
> the comment without triggering a warning. For example, trying to put
> in another empty line in between lines 6 and 7 above causes a
> warning.
Blank lines are normal in triple-quoted strings and recommended for
docstrings longer than a line. So I am puzzled as to your problem.
> Also, how would I split up the long URLs?
Don't if you can possibly avoid it.
> Breaking it up makes it annoying to use the URL.
Yep.
> Thoughts?
Some urls, especially long ones, have extra tracking/query junk that can
be removed while still pointing to the page.
--
Terry Jan Reedy
More information about the Python-list
mailing list