[Python-3000] stdlib reorganization
Guido van Rossum
guido at python.org
Tue May 23 17:17:03 CEST 2006
I have to ignore this topic. It's too big and contentious to get easy
agreement. (The one thing I *don't* want is move the entire stdlib
hierarchy under 'py' or something like that.) Eric Raymond once made
detailed proposal, you can probably still find it somewhere. Good
luck!
--Guido
On 5/22/06, Talin <talin at acm.org> wrote:
> Guido van Rossum wrote:
> > On 5/22/06, Antoine Pitrou <solipsis at pitrou.net> wrote:
> >
> >>Yet "array" is not named "arraylib", "calendar" is not named
> >>"calendarlib", "email" is not named "emaillib"... Shall I continue? ;)
> >
> >
> > Please stop this pointless debate. We all know that the stdlib uses
> > many different inconsistent naming conventions. And I admit full
> > responsibility for many of those.
> >
> > If you want to do something about it, come up with a consistent naming
> > convention.
>
> Well, in that case, let me ask this: What would be the general
> parameters / requirements of the re-organization? I mean, any programmer
> can come along and divide up things into categories, but I suspect that
> there are subtler requirements than that.
>
> Here are some examples of some requirements that I can think of:
>
> 1) No mass renaming of modules unless there's something seriously wrong
> with the existing name.
>
> 2) For most cases, I suspect that you will want to add no more than one
> additional level to the hierarchy. Namespaces will still be fairly flat,
> with large numbers of items per namespace, but not quite as broad and
> flat as they are today. (In other words, avoid deep nesting - we don't
> want to have to type sys.runtime.types.containers.UserDict.UserDict.)
>
> So that people will have something to argue about, I'd suggest the
> following as a top-level category list. Note that only a small amount of
> thought has gone into this :)
>
> sys - contains the existing sys, plus atexit, site, user, etc.
>
> rt - runtime modules - gc, fpectl, inspect, etc.
>
> types - existing types module, mixin types, type predicates.
>
> persist - marshall, pickle, shelve, etc. Possibly zip and
> maybe ConfigParser
>
> imp - import machinery - existing imp, zipimport, pkgutil,
> modulefinder
>
> string - existing string, plus repr, pprint, textwrap, stringprep.
> Possibly fnmatch.
>
> encoding - codecs, unicodedata
> Example: net.protocols.http
>
> conversions - data conversion modules - fpformat
>
> re - regular expressions - unchanged
>
> collection - existing collections, queue, heapq, array
> Example: collections.array.array
>
> algorithms - diff, random, whrandom
>
> testing - doctest, unittest, test, test_support
>
> math - existing math, decimal, cmath
> Example: math.decimal
>
> doc - documentation tools - pydoc
>
> itertools - unchanged
>
> functional - unchanged
>
> console - cmd, shlex, curses*, getopt, optparse, readline,
> rlcompleter
>
> os - existing os plus errno
>
> os.path - as-is
>
> os.file - existing os.file plus fileinput, tempfile, filecmp,
> mmap
>
> os.dir - existing os.dir plus dircache, stat*, glob, shutil
>
> os.stream - popen*
>
> os.process - subprocess, signal
>
> os.socket - existing socket, select
>
> os.thread - existing threading, mutex
>
> os.posix - posix-specific
>
> os.win32 - win32-specific
>
> os.osx - osx-specific
>
> locale - unchanged
>
> logging - unchanged
>
> platform - unchanged
>
> compression - zlib, gzip, bz2, etc. (Or perhaps an 'archive'
> module including 'tar'.)
>
> db - database packages - the various databases, gdbm, bsddb, etc.
>
> debug - pdb, bdb, etc.
>
> profile - profiler, hotshot, etc.
>
> net.protocols - http, imap, pop, ftp, etc.
> Example: net.protocols.http
>
> net.formats - mail, mime, binhex, etc.
> Example: net.formats.mime
>
> net.tools - webbrowser, SocketServer, robotparser, etc.
>
> xml.* - xml-related packages
> Example: xml.sax
>
> media.audio - audio packages
>
> media.image - image conversion packages
>
> rexec - rename to 'restrict' (Too much confusion with 'regex')
>
> python - python language services (compiler, parser, etc.)
>
>
> -- Talin
>
> _______________________________________________
> Python-3000 mailing list
> Python-3000 at python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: http://mail.python.org/mailman/options/python-3000/guido%40python.org
>
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000
mailing list