[code-quality] [Python-projects] New warning about print parens not a good idea?
Sasha Hart
s at sashahart.net
Fri Feb 7 20:15:12 CET 2014
If there are many people who actually want to enforce the non-use of
print(arg) in 2.x for some specific reason, and not just because it is bad
style to write if (a == b) or foobar((2)) - then I would strongly prefer
for an error code to disable this check independently of the other useful
warnings, as Carl Crowder suggested.
As a user who does a lot of porting and also uses pylint for its
strictness, I think it's important for pylint to be able to allow this
common, concise, useful idiom for single-source portability back to 2.5.
Making code portable across 2 and 3 is already more tedious than many
people will accept, so as a supporter of both Python flavors I wouldn't
want any more barriers from tools if they aren't necessary.
On Thu, Feb 6, 2014 at 12:24 AM, Carl Crowder <carl.crowder at gmail.com>wrote:
> I recently asked about the same thing, although there wasn't much
> discussion as a result.
>
> Pylint is aware of "from __future__ import print_function" and using it
> will suppress this warning you are seeing. However that is not available
> for Python 2.5, so it depends on what kind of compatibility you're aiming
> for, I guess.
>
> Given that the __future__ import exists, my preference is that pylint does
> warn, as using brackets near a print statement like that could represent a
> mistake and it's better to warn too much than too little. However I would
> also like to see a new error code for the print statement alone. Currently
> the 'superfluous-parens' warning covers all cases including 'if' and 'for'
> statements etc. A separate error code for the print statement/function
> would allow people to disable it independently and not remove the other
> useful warnings.
>
> On 06.02.2014, at 06:48, Alexandre Fayolle ML <afayolle.ml at free.fr> wrote:
>
> On 06/02/2014 02:13, Dan Stromberg wrote:
>
>
> I noticed recently that pylint has begun warning about use of parens on
> print statements in Python 2.x code.
>
> This seems reasonable on the face of it, except it deters writing code
> that runs on 2.x and 3.x, unmodified.
>
> The error looks like:
> C: 5, 0: Unnecessary parens after 'print' keyword (superfluous-parens)
>
> The offending line looks like:
> print('hello')
>
> To Python 2.x, that is printing the result of a parenthesized
> expression. To Python 3.x, it is of course a print function.
>
> I understand that doing something like:
> print('number:', 1)
> ...would be bad in a dual-codebase script, but having a single argument
> works, and indeed is often a good idea for portability.
>
> Thoughts?
>
> --
> Dan Stromberg
>
>
> _______________________________________________
> Python-Projects mailing listPython-Projects at lists.logilab.orghttp://lists.logilab.org/mailman/listinfo/python-projects
>
>
> There is a __future__ import to enable print_function in python 2[67]. I'm
> not sure if Pylint knows about it, though...
>
> cc-ing code-quality.
>
> Alexandre
>
>
> _______________________________________________
> code-quality mailing list
> code-quality at python.org
> https://mail.python.org/mailman/listinfo/code-quality
>
>
>
> _______________________________________________
> code-quality mailing list
> code-quality at python.org
> https://mail.python.org/mailman/listinfo/code-quality
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/code-quality/attachments/20140207/a700be55/attachment.html>
More information about the code-quality
mailing list