pydoc enforcement.

J. Cliff Dyer jcd at sdf.lonestar.org
Tue Dec 2 09:33:35 EST 2008


On Tue, 2008-12-02 at 09:38 +1100, Ken Faulkner wrote:
> Hi
> 
> Yeah, I was thinking about something at commit time for a VCS...
> catch is, soo many VCS's out there. 
> And I wasn't thinking of the default action throwing compile errors,
> but would only do that if a particular flag was given.
> Still, just an idea.
> 

I meant more that a cultural solution might work better than a technical
one.  Don't allow commits that aren't documented, and *properly*
documented.  If you find them, back them out, scold the commiter, and
revise.


> I'm just finding more and more public modules/API's/libraries that
> have so little documentation that it really does force reading a LOT
> of the source to figure out whats going on. Sure, a lot of the time
> thats required, but some modules are just painful..
> 
> oh well... was just a thought.
> 
> Ken
> 
> 
> 
> On Tue, Dec 2, 2008 at 3:03 AM, J. Cliff Dyer <jcd at sdf.lonestar.org>
> wrote:
>         
>         
>         On Sun, 2008-11-30 at 16:27 -0800, ken.faulkner at gmail.com
>         wrote:
>         > I've been thinking about implementing (although no idea yet
>         *HOW*) the
>         > following features/extension for the python compile stage
>         and would be
>         > interested in any thoughts/comments/flames etc.
>         >
>         > Basically I'm interested adding a check to see if:
>         >   1) pydoc's are written for every function/method.
>         >   2) There are entries for each parameter, defined by some
>         > predetermined syntax.
>         >
>         > My idea is that as much as I love dynamic typing, there are
>         times when
>         > using some modules/API's that have less than stellar
>         documentation. I
>         > was thinking that if it was possible to enable some switch
>         that
>         > basically forced compilation to fail if certain
>         documentation criteria
>         > weren't met.
>         >
>         > Yes, it should be up to developers to provide documentation
>         in the
>         > first place. Or, the client developer might need to read the
>         source
>         > (IF its available)...  but having some "forced"
>         documentation might at
>         > least ease the problem a little.
>         >
>         > For example (half borrowing from Javadoc).
>         >
>         > class Foo( object ):
>         >
>         >   def bar( self, ui ):
>         >      pass
>         >
>         >
>         > Would fail, since the bar method has an "unknown" parameter
>         called
>         > "ui".
>         > What I think could be interesting is that the compiler
>         forces some
>         > documentation such as:
>         >
>         > class Foo( object ):
>         >
>         >   def bar( self, ui ):
>         >     """
>         >     @Param: ui :  blah blah blah.
>         >     """
>         >      pass
>         >
>         >
>         > The compiler could check for @Param matching each parameter
>         passed to
>         > the method/function. Sure, a lot of people might just not
>         put a
>         > description in, so we'd be no better off. But at least its
>         getting
>         > them *that* far, maybe it would encourage them to actually
>         fill in
>         > details.
>         >
>         > Now ofcourse, in statically  typed language, they might have
>         the
>         > description as "Instance of UIClass" or something like that.
>         For
>         > Python, maybe just a description of "Instance of abstract
>         class UI" or
>         > "List of Dictionaries"...  or whatever. Sure, precise class
>         names
>         > mightn't be mentioned (since we mightn't know what is being
>         used
>         > then), but having *some* description would certainly be
>         helpful (I
>         > feel).
>         >
>         > Even if no-one else is interested in this feature, I think
>         it could
>         > help my own development (and would be an interested "first
>         change"
>         > into Python itself).
>         >
>         > Apart from bagging the idea, does anyone have a suggestion
>         on where in
>         > the Python source I would start for implementing such an
>         idea?
>         >
>         > Thanks
>         >
>         > Ken
>         
>         
>         For the reasons already stated, I think it's probably a bad
>         idea to
>         enforce this at compile time.  I think it's a great idea to
>         make sure
>         that this information is present in all your code, but unless
>         you want
>         to see useless stubs, the correct time to enforce this is at
>         commit
>         time.  Don't accept any improperly documented patches.
>         
>         Syntax is not enough to ensure what you want to ensure.  The
>         semantics
>         have to be right as well.
>         
>         Cheers,
>         Cliff
>         
>         
>         
>         
> 




More information about the Python-list mailing list