My first Python program

Seebs usenet-nospam at seebs.net
Wed Oct 13 15:10:37 EDT 2010


On 2010-10-13, Jean-Michel Pichavant <jeanmichel at sequans.com> wrote:
> If you wonder about some defects reported by such linters, you can then 
> ask in this list why something is not that good, because it may not be 
> always obvious.

> 'pylint' is one them, pretty effective.

Okay, several questions about stuff pylint found.

1.  If I have a message that I wish to print, it is quite possible
that message + indentation exceeds 80 lines.  What's the idiomatic way
to solve this?  Do I just break the string up into parts, or do I just
accept that some lines are over 80 characters, or what?
2.  It warns about **kw, both because the name is short and because of
the "** magic".  I was previously advised that the name "kw" is canonical
for that usage, in which case, why am I getting linted at?
3.  More generally, the usage of **kw is probably not really right, but I'm
not sure what to do.

The issue here is as follows:

In C, some functions have an optional argument with the curious trait that,
if present, it is always of the same type.  e.g., open(2).  In my wrappers,
I indicate this by declaring it as something like "...{mode_t mode}".  The
intent is that in a declaration, this will turn into:
	foo(blah blah blah, ... /* mode_t mode */)
so there's an indication of why there's a "..." there.
But C comments don't nest.  And there's a couple of points where I want to
put the declaration in a comment.  So in those cases, I need to do something
other than /*...*/:
	/* foo(blah blah blah, ... mode_t mode) */

The problem:  The determination of whether I wish to do this is at the level
of the "represent this function in the following way" (Function.comment()),
but the implementation is two layers down.  So right now, I am passing
down 'comment = True' from the top level through, and I'm doing it using
a **kw keyword argument.

The rationale is that I could just use
	def decl(comment = False):
		...
but then the invocation:
	func.decl(True)
would be utterly opaque.  I want to name the thing I'm passing or otherwise
indicate what it is.

It could be that I am Doing This Wrong.  Is there a good idiom for labeling
optional arguments, and passing them on (if they exist)?

-s
-- 
Copyright 2010, all wrongs reversed.  Peter Seebach / usenet-nospam at seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
I am not speaking for my employer, although they do rent some of my opinions.



More information about the Python-list mailing list