On Oct 26, 2010, at 9:31 AM, Guido van Rossum wrote:
> I would like Gregor Lingl's approval of turning turtle.py into a package.  It 
> might make some things harder for novices, e.g. trackebacks and just browsing 
> the source code.
> 
> Also many people don't expect to find any code in a file named __init__.py 
> (and most of the time I agree with this).  But the alternative isn't so great 
> either, assuming we'll want strict backwards compatibility (I wouldn't want 
> the instructions in Gregor's or anyone's book to start failing because of 
> this).  You can't rename turtle to turtle/turtle.py either, because then 
> there'd be horrible confusion between turtle/ and turtle.py.
> 
> IOW, yes, flat still seems better than nested here!


Thanks for saying this.  It might be a good time to also have a discussion 
about what may be an emerging trend of wanting to split standard library 
modules into packages.

I understand the urge to split longer modules into multiple source files but 
would like to mention some of the advantages of keeping modules in a single 
source file.

Taking the decimal module as an example:

*  Right now, I can pull up the source and entire history from subversion by 
knowing just the module name:   
http://svn.python.org/view/python/branches/py3k/Lib/decimal.py?view=markup , 
and I can search the entire module with nothing more sophisticated than "find" 
in the web browser.   That no longer works with unittest.

* I can easily email the file to someone or copy it back to a previous version 
of Python because only one file is involved.  To look at the code, I don't have 
to guess how someone would have partitioned it into 
decimal.context.utils.threadlocal.py or somesuch.  I don't need a packaging 
tool to distribute a module (pyparsing and BeautifulSoup are two examples of 
tools that are easily managed by just being in one file).

* Some editors are set up to easily dance across multiple files and directories 
as if they were a single unit; however, many editors are not.  Most file 
viewers and editors work better with single files.    Take two operations in 
IDLE for example.  If I press Alt-M for open module, I can retrieve all of the 
source for decimal (but this won't work with the logging or unittest packages). 
 Once the source is visible, I press Alt-C to bring up a class browser for 
quickly reviewing the source (but this also won't work with packages).  Several 
Python editors have this capability (provided by the pyclbr module) but they 
are defeated by packaging.

* The Lib directory is more easily grepped when it is flat.  The more we nest 
the Lib directory, the harder it will be to search the sources (while excluding 
the test directory).

Packaging is not always wrong.  Maybe it was the right thing to do for 
unittest, maybe not.  I just wanted to bring up some of the advantages of 
having a single file for a library module.  It would not be a good thing if 
some of the newer committers embarked on taking modules over 2000 lines and 
split them into packages.   Right now, we have hundreds of source files, but it 
wouldn't take long for someone on a packaging mission to turn that into 
thousands.

If someone wants to reorganize code for clarity, I would prefer keeping it 
within one file, bringing related functions together and using comment lines to 
mark the major sections.  ISTM, this is cleaner than introducing a new 
directory and having multiple files that cross-import one another.


Raymond
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to