From: wheres pythonmonks on
I am starting to use pylint to look at my code and I see that it gives a rating.
What values do experienced python programmers get on code not
targeting the benchmark?

I wrote some code, tried to keep it under 80 characters per line,
reasonable variable names, and I got:

0.12 / 10.

Is this a good score for one not targeting the benchmark? (pylint
running in default mode)

Somewhat related: Is the backslash the only way to extend arguments
to statements over multiple lines? (e.g.)

>>> def f(x,y,z): return(x+y+z);
....
>>> f(1,2,
.... 3)
6
>>> assert f(1,2,3)>0,
File "<stdin>", line 1
assert f(1,2,3)>0,
^
SyntaxError: invalid syntax
>>>

In the above, I could split the arguments to f (I guess b/c of the
parens) but not for assert. I could use a backslash, but I find this
ugly -- it that my only (best?) option?

[I really like to assert my code to correctness and I like using the
second argument to assert, but this resulted in a lot of long lines
that I was unable to break except with an ugly backslash.]

W
From: News123 on
On 07/30/2010 03:12 PM, wheres pythonmonks wrote:
> I am starting to use pylint to look at my code and I see that it gives a rating.
> What values do experienced python programmers get on code not
> targeting the benchmark?
>
> I wrote some code, tried to keep it under 80 characters per line,
> reasonable variable names, and I got:
>
> 0.12 / 10.
>
> Is this a good score for one not targeting the benchmark? (pylint
> running in default mode)
>
It's not a goodf core, but arrives easily if you never ran pylint before.
With very little effort you should be able to be above 5
with a little more effort above 7


> Somewhat related: Is the backslash the only way to extend arguments
> to statements over multiple lines? (e.g.)

if you have an opening parenthesis, or bracked, then you don't need a
backslash

so instead of
if longlonglonglonglonglonglonglongvar == \
otherlonglonglonglongvar:

you could also write:

if (longlonglonglonglonglonglonglongvar ==
otherlonglonglonglongvar):


same works of course with asserts.

>
>>>> def f(x,y,z): return(x+y+z);
> ...
>>>> f(1,2,
> ... 3)
> 6
>>>> assert f(1,2,3)>0,
> File "<stdin>", line 1
> assert f(1,2,3)>0,
> ^
> SyntaxError: invalid syntax
>>>>
>
> In the above, I could split the arguments to f (I guess b/c of the
> parens) but not for assert. I could use a backslash, but I find this
> ugly -- it that my only (best?) option?
>
> [I really like to assert my code to correctness and I like using the
> second argument to assert, but this resulted in a lot of long lines
> that I was unable to break except with an ugly backslash.]
>
> W

From: Matteo Landi on
What are the messages one should really care about while evaluating
its code using pylint? It's easy to get 5 scored with a "lot of public
methods" or bad named variables such as 'x' or 'y' .. Have you got any
config file to share?

On Sat, Jul 31, 2010 at 2:48 AM, Dan Stromberg <drsalists(a)gmail.com> wrote:
>
> On Fri, Jul 30, 2010 at 12:18 PM, News123 <news1234(a)free.fr> wrote:
>>
>> On 07/30/2010 03:12 PM, wheres pythonmonks wrote:
>> > I am starting to use pylint to look at my code and I see that it gives a
>> > rating.
>> > What values do experienced python programmers get on code not
>> > targeting the benchmark?
>> >
>> > I wrote some code, tried to keep it under 80 characters per line,
>> > reasonable variable names, and I got:
>> >
>> > 0.12 / 10.
>> >
>> > Is this a good score for one not targeting the benchmark?  (pylint
>> > running in default mode)
>> >
>> It's not a goodf core, but arrives easily if you never ran pylint before..
>> With very little effort you should be able to be above 5
>> with a little more effort above 7
>>
>>
>> > Somewhat related:  Is the backslash the only way to extend arguments
>> > to statements over multiple lines?  (e.g.)
>>
>> if you have an opening parenthesis, or bracked, then you don't need a
>> backslash
>>
>> so instead of
>> if longlonglonglonglonglonglonglongvar == \
>>        otherlonglonglonglongvar:
>>
>> you could also write:
>>
>> if (longlonglonglonglonglonglonglongvar ==
>>        otherlonglonglonglongvar):
>>
>>
>> same works of course with asserts.
>>
>> >
>> >>>> def f(x,y,z): return(x+y+z);
>> > ...
>> >>>> f(1,2,
>> > ... 3)
>> > 6
>> >>>> assert f(1,2,3)>0,
>> >   File "<stdin>", line 1
>> >     assert f(1,2,3)>0,
>> >                      ^
>> > SyntaxError: invalid syntax
>> >>>>
>> >
>> > In the above, I could split the arguments to f (I guess b/c of the
>> > parens) but not for assert.  I could use a backslash, but I find this
>> > ugly -- it that my only (best?) option?
>> >
>> > [I really like to assert my code to correctness and I like using the
>> > second argument to assert, but this resulted in a lot of long lines
>> > that I was unable to break except with an ugly backslash.]
>> >
>> > W
>>
> IMO, the important thing about pylint's scoring is that it's but one way of
> many of producing good Python code.  However, it's also one of the easier
> ways of producing good python code.
> I personally like to get my scores up near 10, by annotating in comments
> about the few things that pylint flags that I can't just code around.  This
> requires jumping through some slightly silly hoops (EG the previously
> mentioned "too few public methods", which my various container classes
> always trip over), but going through this process is worthwhile for
> highlighting the hoops pylint can detect that -aren't- so silly.
> The one thing I like to leave unfixed is FIXME's - otherwise my preference
> would be to go for a score of 10 for production code.
> I also like to create a ./this-pylint script for my various projects, that
> have global overrides - things like identifier rules, line length, and...  I
> don't get blanks instead of tabs.  Blanks are fine if you don't understand
> tabs (or think someone in the future who doesn't understand tabs will need
> to work on your code), but tabs allow everyone to see code indented the way
> -they- want to see it, not just the way the original author wanted to see
> it.
> This script (./this-pylint) will also save output from the test in a text
> file, for make (or other dependency handling program) to use to avoid
> re-pylint'ing unmodified code.  It'll give an error typically, if pytlint
> detects any errors other than FIXME's (excluding ones, as I mentioned
> before, that have a comment disabling the warning, of course).
> I'm more than a little sad that pylint doesn't seem to be moving to python 3
> in any big hurry.
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>



--
Matteo Landi
http://www.matteolandi.net/
From: News123 on
Hi,


On 07/31/2010 11:04 AM, Matteo Landi wrote:
> What are the messages one should really care about while evaluating
> its code using pylint? It's easy to get 5 scored with a "lot of public
> methods" or bad named variables such as 'x' or 'y' .. Have you got any
> config file to share?


The most important ones are of course the errors.
Some of them might be false, but in our team we agreed, that no file is
allowed to report pylint errors.
This means
- just fixing errors (in most cases)
- rewriting code (in a few cases)
- masking errors with pylint directives in the source (some other few
errrors)




If you only want to see the errros, then just run
pylint -E filename.py

Note: This is a rather new but very useful switch.. It doesn't exist
on Ubuntu 10.4's release pylint 0.19.0, but exists on pylint 0.21.1



Apart from that. You should discuss within your team, which
errors you'd like to have ignored and adapt the pylintrc. This
is a rather personal decision.
For one project we disiabled for example following warnings:
## C0322 = "Operator not preceded by a space"
## C0323 = "Operator not followed by a space"
## C0324 = "Comma not followed by a space"
As we did not have time to rewrite all of the existing code, that
violated these rules.
We prefered to 'hide' these warnings in order to sett the more important
ones.

On another new project however we did NOT comment therese rules
and decided, that all new code should follow these rules


We disabled some special global variables, which we'd like to have in
lower case

const-rgx ==((specialvar)|(v_[a-z_][a-z0-9_]*)|([A-Z_][A-Z0-9_]*)|(__.*__))$


you could also modify variables like
# Maximum number of attributes for a class (see R0902).
max-attributes=7

# Minimum number of public methods for a class (see R0903).
min-public-methods=2

# Maximum number of public methods for a class (see R0904).
max-public-methods=20


For some graphics module functions for example we wanted to
be allowed to use variable names like x,y as they are
completely meaningful names for pixel coordinates.


so change the entry good-names
good-names=x,y,ex,Run,_



Hope, that this gave you some ideas



>
> On Sat, Jul 31, 2010 at 2:48 AM, Dan Stromberg <drsalists(a)gmail.com> wrote:
>>
>> On Fri, Jul 30, 2010 at 12:18 PM, News123 <news1234(a)free.fr> wrote:
>>>
>>> On 07/30/2010 03:12 PM, wheres pythonmonks wrote:
>>>> I am starting to use pylint to look at my code and I see that it gives a
>>>> rating.
>>>> What values do experienced python programmers get on code not
>>>> targeting the benchmark?
>>>>
>>>> I wrote some code, tried to keep it under 80 characters per line,
>>>> reasonable variable names, and I got:
>>>>
>>>> 0.12 / 10.
>>>>
>>>> Is this a good score for one not targeting the benchmark? (pylint
>>>> running in default mode)
>>>>
>>> It's not a goodf core, but arrives easily if you never ran pylint before.
>>> With very little effort you should be able to be above 5
>>> with a little more effort above 7
>>>
>>>
>>>> Somewhat related: Is the backslash the only way to extend arguments
>>>> to statements over multiple lines? (e.g.)
>>>
>>> if you have an opening parenthesis, or bracked, then you don't need a
>>> backslash
>>>
>>> so instead of
>>> if longlonglonglonglonglonglonglongvar == \
>>> otherlonglonglonglongvar:
>>>
>>> you could also write:
>>>
>>> if (longlonglonglonglonglonglonglongvar ==
>>> otherlonglonglonglongvar):
>>>
>>>
>>> same works of course with asserts.
>>>
>>>>
>>>>>>> def f(x,y,z): return(x+y+z);
>>>> ...
>>>>>>> f(1,2,
>>>> ... 3)
>>>> 6
>>>>>>> assert f(1,2,3)>0,
>>>> File "<stdin>", line 1
>>>> assert f(1,2,3)>0,
>>>> ^
>>>> SyntaxError: invalid syntax
>>>>>>>
>>>>
>>>> In the above, I could split the arguments to f (I guess b/c of the
>>>> parens) but not for assert. I could use a backslash, but I find this
>>>> ugly -- it that my only (best?) option?
>>>>
>>>> [I really like to assert my code to correctness and I like using the
>>>> second argument to assert, but this resulted in a lot of long lines
>>>> that I was unable to break except with an ugly backslash.]
>>>>
>>>> W
>>>
>> IMO, the important thing about pylint's scoring is that it's but one way of
>> many of producing good Python code. However, it's also one of the easier
>> ways of producing good python code.
>> I personally like to get my scores up near 10, by annotating in comments
>> about the few things that pylint flags that I can't just code around. This
>> requires jumping through some slightly silly hoops (EG the previously
>> mentioned "too few public methods", which my various container classes
>> always trip over), but going through this process is worthwhile for
>> highlighting the hoops pylint can detect that -aren't- so silly.
>> The one thing I like to leave unfixed is FIXME's - otherwise my preference
>> would be to go for a score of 10 for production code.
>> I also like to create a ./this-pylint script for my various projects, that
>> have global overrides - things like identifier rules, line length, and... I
>> don't get blanks instead of tabs. Blanks are fine if you don't understand
>> tabs (or think someone in the future who doesn't understand tabs will need
>> to work on your code), but tabs allow everyone to see code indented the way
>> -they- want to see it, not just the way the original author wanted to see
>> it.
>> This script (./this-pylint) will also save output from the test in a text
>> file, for make (or other dependency handling program) to use to avoid
>> re-pylint'ing unmodified code. It'll give an error typically, if pytlint
>> detects any errors other than FIXME's (excluding ones, as I mentioned
>> before, that have a comment disabling the warning, of course).
>> I'm more than a little sad that pylint doesn't seem to be moving to python 3
>> in any big hurry.
>>
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>>
>
>
>

From: Matteo Landi on
On Sun, Aug 1, 2010 at 12:27 PM, News123 <news1234(a)free.fr> wrote:
> Hi,
>
>
> On 07/31/2010 11:04 AM, Matteo Landi wrote:
>> What are the messages one should really care about while evaluating
>> its code using pylint? It's easy to get 5 scored with a "lot of public
>> methods" or bad named variables such as 'x' or 'y' .. Have you got any
>> config file to share?
>
>
> The most important ones are of course the errors.
> Some of them might be false, but in our team we agreed, that no file is
> allowed to report pylint errors.
> This means
> - just fixing errors (in most cases)
> - rewriting code (in a few cases)
> - masking errors with pylint directives in the source (some other few
> errrors)
>
>
>
>
> If you only want to see the errros, then just run
> pylint -E filename.py
>
> Note: This is a rather new but very useful switch.. It doesn't exist
>    on Ubuntu 10.4's release pylint 0.19.0, but exists on pylint 0.21.1
>
>
>
> Apart from that. You should discuss within your team, which
> errors you'd like to have ignored and adapt the pylintrc. This
> is a rather personal decision.
> For one project we disiabled for example following warnings:
> ## C0322 = "Operator not preceded by a space"
> ## C0323 = "Operator not followed by a space"
> ## C0324 = "Comma not followed by a space"
> As we did not have time to rewrite all of the existing code, that
> violated these rules.
> We prefered to 'hide' these warnings in order to sett the more important
> ones.
>
> On another new project however we did NOT comment therese rules
> and decided, that all new code should follow these rules
>
>
> We disabled some special global variables, which we'd like to have in
> lower case
>
> const-rgx ==((specialvar)|(v_[a-z_][a-z0-9_]*)|([A-Z_][A-Z0-9_]*)|(__..*__))$
>
>
> you could also modify variables like
> # Maximum number of attributes for a class (see R0902).
> max-attributes=7
>
> # Minimum number of public methods for a class (see R0903).
> min-public-methods=2
>
> # Maximum number of public methods for a class (see R0904).
> max-public-methods=20
>
>
> For some graphics module functions for example we wanted to
> be allowed to use variable names like x,y as they are
> completely meaningful names for pixel coordinates.
>
>
> so change the entry good-names
> good-names=x,y,ex,Run,_

Thank you so much, these are very precious settings.

>
>
> Hope, that this gave you some ideas
>
>
>
>>
>> On Sat, Jul 31, 2010 at 2:48 AM, Dan Stromberg <drsalists(a)gmail.com> wrote:
>>>
>>> On Fri, Jul 30, 2010 at 12:18 PM, News123 <news1234(a)free.fr> wrote:
>>>>
>>>> On 07/30/2010 03:12 PM, wheres pythonmonks wrote:
>>>>> I am starting to use pylint to look at my code and I see that it gives a
>>>>> rating.
>>>>> What values do experienced python programmers get on code not
>>>>> targeting the benchmark?
>>>>>
>>>>> I wrote some code, tried to keep it under 80 characters per line,
>>>>> reasonable variable names, and I got:
>>>>>
>>>>> 0.12 / 10.
>>>>>
>>>>> Is this a good score for one not targeting the benchmark?  (pylint
>>>>> running in default mode)
>>>>>
>>>> It's not a goodf core, but arrives easily if you never ran pylint before.
>>>> With very little effort you should be able to be above 5
>>>> with a little more effort above 7
>>>>
>>>>
>>>>> Somewhat related:  Is the backslash the only way to extend arguments
>>>>> to statements over multiple lines?  (e.g.)
>>>>
>>>> if you have an opening parenthesis, or bracked, then you don't need a
>>>> backslash
>>>>
>>>> so instead of
>>>> if longlonglonglonglonglonglonglongvar == \
>>>>        otherlonglonglonglongvar:
>>>>
>>>> you could also write:
>>>>
>>>> if (longlonglonglonglonglonglonglongvar ==
>>>>        otherlonglonglonglongvar):
>>>>
>>>>
>>>> same works of course with asserts.
>>>>
>>>>>
>>>>>>>> def f(x,y,z): return(x+y+z);
>>>>> ...
>>>>>>>> f(1,2,
>>>>> ... 3)
>>>>> 6
>>>>>>>> assert f(1,2,3)>0,
>>>>>   File "<stdin>", line 1
>>>>>     assert f(1,2,3)>0,
>>>>>                      ^
>>>>> SyntaxError: invalid syntax
>>>>>>>>
>>>>>
>>>>> In the above, I could split the arguments to f (I guess b/c of the
>>>>> parens) but not for assert.  I could use a backslash, but I find this
>>>>> ugly -- it that my only (best?) option?
>>>>>
>>>>> [I really like to assert my code to correctness and I like using the
>>>>> second argument to assert, but this resulted in a lot of long lines
>>>>> that I was unable to break except with an ugly backslash.]
>>>>>
>>>>> W
>>>>
>>> IMO, the important thing about pylint's scoring is that it's but one way of
>>> many of producing good Python code.  However, it's also one of the easier
>>> ways of producing good python code.
>>> I personally like to get my scores up near 10, by annotating in comments
>>> about the few things that pylint flags that I can't just code around.  This
>>> requires jumping through some slightly silly hoops (EG the previously
>>> mentioned "too few public methods", which my various container classes
>>> always trip over), but going through this process is worthwhile for
>>> highlighting the hoops pylint can detect that -aren't- so silly.
>>> The one thing I like to leave unfixed is FIXME's - otherwise my preference
>>> would be to go for a score of 10 for production code.
>>> I also like to create a ./this-pylint script for my various projects, that
>>> have global overrides - things like identifier rules, line length, and....  I
>>> don't get blanks instead of tabs.  Blanks are fine if you don't understand
>>> tabs (or think someone in the future who doesn't understand tabs will need
>>> to work on your code), but tabs allow everyone to see code indented the way
>>> -they- want to see it, not just the way the original author wanted to see
>>> it.
>>> This script (./this-pylint) will also save output from the test in a text
>>> file, for make (or other dependency handling program) to use to avoid
>>> re-pylint'ing unmodified code.  It'll give an error typically, if pytlint
>>> detects any errors other than FIXME's (excluding ones, as I mentioned
>>> before, that have a comment disabling the warning, of course).
>>> I'm more than a little sad that pylint doesn't seem to be moving to python 3
>>> in any big hurry.
>>>
>>>
>>> --
>>> http://mail.python.org/mailman/listinfo/python-list
>>>
>>>
>>
>>
>>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



--
Matteo Landi
http://www.matteolandi.net/