As part of my New Years resolution to get all of my current and planned PEPs actually written, accepted, and implemented for 2007, here is the stdlib reorg PEP.  I have already checked it into svn but I have inlined it below for comments.
<br><br>The PEP is separated into two parts: removal and renaming.&nbsp; For removal I tried to keep the list to what I thought was very reasonable.&nbsp; If you look in Open Issues there are some possible removals that I am not so sure on so I would like feedback on those.&nbsp; I also have not touched the various Mac modules since I never use them and a bunch of them are undocumented.&nbsp; If Bob or Donald (or anyone else for that matter) could help me identify Mac modules that could go I would really appreciate it.
<br><br>For the renaming I listed all of the modules that either violate PEP 8, have both a Python and C implementation, or do not have a public API and thus should be hidden.&nbsp; The only possibly controversial renaming is of _winreg, dummy_threading, and repr.&nbsp; _winreg should be renamed since the higher-level version never materialized.&nbsp; I personally want dummy_threading renamed mockthreading since dummythreading just looks bad to me, it really is more of a mock implementation, and I wrote the module to begin with.&nbsp; =)&nbsp; and repr should be renamed reprlib (if it is not flagged for removal of its public interface) so it doesn&#39;t shadow a built-in.
<br><br>The Open Issues section also has a bunch of suggested groupings of modules that seemed extremely obvious to me or that other people pointed out.&nbsp; I know Guido didn&#39;t OK this but they were just staring me in the face so I just went ahead and listed what I thought could be reasonable packages to create or modules that really don&#39;t need to be separate.&nbsp; Since we are doing renames anyway I figured it wouldn&#39;t hurt to at least consider these.&nbsp; They are also not extensive in terms of putting the entire stdlib into a handful of packages, just stuff that is obviously the same theme (
e.g., collections) or are tightly coupled (e.g., urllib/urllib2).&nbsp; I leave it to Guido and the rest of you guys to either tell me to ignore these possibilities or to actually move forward with some of them.<br><br>Anyway, have at it!
<br><br>-Brett<br><br><br>-----------------------------------------<br><br>Abstract<br>========<br><br>Just like the language itself, Python&#39;s standard library (stdlib) has<br>grown over the years to be very rich.&nbsp; But over time some modules
<br>have lost their need to be included with Python.&nbsp; There has also been<br>an introduction of a naming convention for modules since Python&#39;s<br>inception that not all modules follow.<br><br>With Python 3.0 a chance to remove modules that do not have long term
<br>usefulness has presented itself.&nbsp; This chance also allows for the<br>renaming of modules so that they follow the Python style guide<br>[#pep-0008]_.&nbsp; This PEP lists modules that should not be included in<br>Python 3.0
 and what modules need to be renamed.<br><br><br>Modules to Remove<br>=================<br><br>Guido pronounced that &quot;silly old stuff&quot; is to be deleted from the<br>stdlib for Py3K [#silly-old-stuff]_.&nbsp; This is open-ended on purpose.
<br>Each module to be removed needs to have a justification as to why it<br>should no longer be distributed with Python.&nbsp; This can range from the<br>module being deprecated in Python 2.x to being for a platform that is<br>
no longer widely used.<br><br>This section of the PEP lists the various modules to be removed. Each<br>subsection represents a different reason for modules to be<br>removed.&nbsp; Each module must have a specific justification on top of
<br>being listed in a specific subsection so as to make sure only modules<br>that truly deserve to be removed are in fact removed.<br><br>When a reason mentions how long it has been since a module has been<br>&quot;uniquely edited&quot;, it is in reference to how long it has been since a
<br>checkin was done specifically for the module and not for a change that<br>applied universally across the entire stdlib.&nbsp; If an edit time is not<br>denoted as &quot;unique&quot; then it is the last time the file was edited,
<br>period.<br><br><br>Previously deprecated<br>---------------------<br><br>Modules in this section have been deprecated at some point in the<br>Python 2.x release series but are currently still distributed with<br>Python.&nbsp; Deprecation information is gathered either from PEP 4 or the
<br>Global Module Index [#pep-0004]_, [#module-index]_.&nbsp; Each module is<br>listed with the Python version that the deprecation started in.<br><br>* buildtools<br>&nbsp;&nbsp;&nbsp; 2.3<br>* cfmfile<br>&nbsp;&nbsp;&nbsp; 2.4<br>* gopherlib<br>&nbsp;&nbsp;&nbsp; 2.5<br>
* macfs<br>&nbsp;&nbsp;&nbsp; 2.3<br>* md5<br>&nbsp;&nbsp;&nbsp; 2.5<br>* mimetools<br>&nbsp;&nbsp;&nbsp; 2.3<br>* MimeWriter<br>&nbsp;&nbsp;&nbsp; 2.3<br>* mimefy<br>&nbsp;&nbsp;&nbsp; 2.3<br>* multifile<br>&nbsp;&nbsp;&nbsp; 2.3<br>* posixfile<br>&nbsp;&nbsp;&nbsp; 1.5<br>* rfc822<br>&nbsp;&nbsp;&nbsp; 2.3<br>* rgbimg<br>&nbsp;&nbsp;&nbsp; 2.5<br>* sha
<br>&nbsp;&nbsp;&nbsp; 2.5<br><br><br>Platform-specific with minimal use<br>----------------------------------<br><br>Python supports many platforms, some of which are not widely held.<br>And on some of these platforms there are modules that have limited use
<br>to people on those platforms.&nbsp; Because of their limited usefulness it<br>would be better to no longer burden the Python development team with<br>their maintenance.<br><br>* IRIX (which is no longer produced [#irix-retirement]_)
<br>&nbsp;&nbsp;&nbsp; + AL/al<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Provides sound support on Indy and Indigo workstations.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Both workstations are no longer available.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Code has not been uniquely edited in three years.<br>&nbsp;&nbsp;&nbsp; + cd<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - CD drive control for SGI systems.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * SGI no longer sells machines with IRIX on them.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Code has not been uniquely edited in 14 years.<br>&nbsp;&nbsp;&nbsp; + DEVICE/GL/gl/cgen/cgensuport<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - OpenGL access.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Has not been edited in at least eight years.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Third-party libraries provide better support.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * PyOpenGL [#pyopengl]_<br>&nbsp;&nbsp;&nbsp; + FL/fl/flp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper for the FORMS library [#irix-forms]_
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * FORMS has not been edited in 12 years.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Library is not widely used.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * First eight hits on Google are for Python docs for fl.<br>&nbsp;&nbsp;&nbsp; + fm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper to the IRIS Font Manager library.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Only available on SGI machines which no longer come with<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IRIX.<br>&nbsp;&nbsp;&nbsp; + imgfile<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper for SGI libimage library for imglib image files<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (``.rgb`` files).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Python Imaging Library provdes read-only support [#pil]_.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Not uniquely edited in 13 years.<br>&nbsp;&nbsp;&nbsp; + jpeg<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper for JPEG (de)compressor.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Code not uniquely edited in nine years.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Third-party libraries provide better support.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Python Imaging Library [#pil]_<br>&nbsp;&nbsp;&nbsp; + sv<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper for Indigo video card.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Harware is no longer manufactured.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Undocumented.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Code not uniquely edited in 13 years.
<br>* Solaris<br>&nbsp;&nbsp;&nbsp; + SUNAUDIODEV/sunaudiodev<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Access to the sound card on Sun machines.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Code not uniquely edited in over eight years.<br>* Mac<br>&nbsp;&nbsp;&nbsp; + applesingle<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Undocumented.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * AppleSingle is a binary file format for A/UX.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + A/UX no longer distributed.<br>* UNIX<br>&nbsp;&nbsp;&nbsp; + nis<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Wrapper for NIS.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * NIS has been replaced by LDAP, DNS, and Kerberos.
<br><br><br>Minimal usage<br>-------------<br><br>Some modules that are platform-independent have minimal usage.&nbsp; This<br>can be from how easy it is to implement the functionality from scratch<br>or because the audience for the code is small.
<br><br>* audiodev<br>&nbsp;&nbsp;&nbsp; + Undocumented.<br>&nbsp;&nbsp;&nbsp; + Not edited in five years.<br>&nbsp;&nbsp;&nbsp; + If removed sunaudio should go as well.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Undocumented.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Not edited in over seven years.<br>* fileinput<br>&nbsp;&nbsp;&nbsp; + Basic functionality handled by ``itertools.chain``.
<br>&nbsp;&nbsp;&nbsp; + Using ``enumerate`` (for the line number in the file),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ``itertools.repeat`` (for returning the filename with each<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line), and ``zip`` (for connecting the ``enumerate`` object and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ``itertools.repeat`` object)&nbsp; provides 95% of other unique
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abilities of fileinput.<br>* imputil<br>&nbsp;&nbsp;&nbsp; + Undocumented.<br>&nbsp;&nbsp;&nbsp; + Never updated to support absolute imports.<br>* mutex<br>&nbsp;&nbsp;&nbsp; + Easy to implement using a semaphore and a queue.<br>&nbsp;&nbsp;&nbsp; + Cannot block on a lock attempt.
<br>&nbsp;&nbsp;&nbsp; + Not uniquely edited since its addition 15 years ago.<br>* repr<br>&nbsp;&nbsp;&nbsp; + Controls output of the repr of objects.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - String slicing and string interpolation can do similar work.<br>&nbsp;&nbsp;&nbsp; + Used by pdb, but do not need to expose API.
<br>* symtable/_symtable<br>&nbsp;&nbsp;&nbsp; + Undocumented.<br>* telnetlib<br>&nbsp;&nbsp;&nbsp; + Telnet is not used very much anymore.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Telnet is unsafe.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Most people use SSH instead.<br>* toaiff<br>&nbsp;&nbsp;&nbsp; + Undocumented.<br>
&nbsp;&nbsp;&nbsp; + Requires ``sox`` library to be installed on the system.<br>* user<br>&nbsp;&nbsp;&nbsp; + Easily handled by allowing the application specify its own<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; module name, check for existence, and import if found.<br>* new<br>&nbsp;&nbsp;&nbsp; + Just a rebinding of names from the &#39;types&#39; module.
<br>&nbsp;&nbsp;&nbsp; + Can also call ``type`` built-in to get most types easily.<br>* pure<br>&nbsp;&nbsp;&nbsp; + Written before Pure Atria was bought by Rational which was then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bought by IBM (in other words, very old).<br><br>Obsolete<br>
--------<br><br>Becoming obsolete signifies that either another module in the stdlib<br>or a widely distributed third-party library provides a better solution<br>for what the module is meant for.<br><br>* base64/quopri/uu
<br>&nbsp;&nbsp;&nbsp; + Support exists in the codecs module.<br>&nbsp;&nbsp;&nbsp; + If removed (along with binhex), also remove binascii.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - C implementation of base64, binhex, and uu modules.<br>* asynchat/asyncore<br>&nbsp;&nbsp;&nbsp; + Third-party libraries provide better solutions.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - twisted [#twisted]_<br>&nbsp;&nbsp;&nbsp; + Deprecation previously supported [#py-dev-summary-2004-11-01]_<br>* Bastion/rexec<br>&nbsp;&nbsp;&nbsp; + Restricted execution / security.<br>&nbsp;&nbsp;&nbsp; + Turned off in Python 2.3.<br>&nbsp;&nbsp;&nbsp; + Modules deemed unsafe.
<br>* dl<br>&nbsp;&nbsp;&nbsp; + ctypes provides better support for same functionality.<br>* fpformat<br>&nbsp;&nbsp;&nbsp; + All functionality is supported by string interpolation.<br>* getopt<br>&nbsp;&nbsp;&nbsp; + optparse provides better functionality.<br>* ihooks
<br>&nbsp;&nbsp;&nbsp; + Documented except for saying that module might be obsolete.<br>&nbsp;&nbsp;&nbsp; + For use with rexec which has been turned off since Python 2.3.<br>* imageop<br>&nbsp;&nbsp;&nbsp; + Better support by third-party libraries.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Python Imaging Library [#pil]_.
<br>* linuxaudiodev<br>&nbsp;&nbsp;&nbsp; + Replaced by ossaudiodev.<br>* stat<br>&nbsp;&nbsp;&nbsp; + ``os.stat`` now returns a tuple with attributes.<br>* statvfs<br>&nbsp;&nbsp;&nbsp; + ``os.statvfs`` now returns a tuple with attributes.<br>* strop<br>&nbsp;&nbsp;&nbsp; + Implements functions used by &#39;string&#39; module that have now
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; become methods on the str type.<br>* thread<br>&nbsp;&nbsp;&nbsp; + People should use &#39;threading&#39; instead.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Rename &#39;thread&#39; to _thread.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Deprecate dummy_thread.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Rename to _mockthread.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Change of name better reflects modules purpose.<br>&nbsp;&nbsp;&nbsp; + Guido has previously supported the deprecation<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [#thread-deprecation]_.<br>* timing<br>&nbsp;&nbsp;&nbsp; + Use timeit or time.<br>&nbsp;&nbsp;&nbsp; + Documentation says the module is obsolete [#timing-module]_.
<br><br><br>Modules to Rename<br>=================<br><br>Along with the stdlib gaining some modules that are no longer<br>relevant, there is also the issue of naming.&nbsp; Many modules existed in<br>the stdlib before PEP 8 came into existence [#pep-0008]_.&nbsp; This has
<br>led to some naming inconsistencies that should be addressed.<br><br>Any module that has been suggested for removal and does not meet the<br>required naming scheme is *not* listed below.<br><br><br>PEP 8 violations<br>
----------------<br><br>PEP 8 specifies that modules &quot;should have short, lowercase names,<br>without underscores&quot; [#pep-0008]_.&nbsp; There is no mention, though, if<br>this rule extends to modules contained within a package.&nbsp; The
<br>assumption is that underscores are acceptable in module names when<br>they are contained within a package but that any uppercase letters is<br>not.<br><br>* _winreg<br>&nbsp;&nbsp;&nbsp; winreg (rename also because module has a public interface).
<br>* autoGIL<br>&nbsp;&nbsp;&nbsp; autogil<br>* BaseHTTPServer<br>&nbsp;&nbsp;&nbsp; basehttpserver<br>* Carbon<br>&nbsp;&nbsp;&nbsp; carbon<br>* CGIHTTPServer<br>&nbsp;&nbsp;&nbsp; cgihttpserver<br>* ColorPicker<br>&nbsp;&nbsp;&nbsp; colorpicker<br>* ConfigParser<br>&nbsp;&nbsp;&nbsp; configparser<br>* Cookie
<br>&nbsp;&nbsp;&nbsp; cookie<br>* copy_reg<br>&nbsp;&nbsp;&nbsp; copyreg<br>* cProfile<br>* DocXMLRPCServer<br>&nbsp;&nbsp;&nbsp; docxmlrpcserver<br>* dummy_threading<br>&nbsp;&nbsp;&nbsp; mockthreading (rename because &quot;mock&quot; makes more sense than<br>&nbsp;&nbsp;&nbsp; &quot;dummy&quot; and rename already required).
<br>* EasyDialogs<br>&nbsp;&nbsp;&nbsp; easydialogs<br>* FrameWork<br>&nbsp;&nbsp;&nbsp; framework<br>* HTMLParser<br>&nbsp;&nbsp;&nbsp; htmlparser<br>* MacOS<br>&nbsp;&nbsp;&nbsp; macos<br>* MiniAEFrame<br>&nbsp;&nbsp;&nbsp; miniaeframe<br>* Nav<br>&nbsp;&nbsp;&nbsp; nav<br>* PixMapWrapper<br>&nbsp;&nbsp;&nbsp; pixmapwrapper
<br>* py_compile<br>&nbsp;&nbsp;&nbsp; pycompile<br>* Queue<br>&nbsp;&nbsp;&nbsp; queue<br>* repr<br>&nbsp;&nbsp;&nbsp; reprlib (rename because module name shadows a built-in).<br>* ScrolledText<br>&nbsp;&nbsp;&nbsp; scrolledtext<br>* SimpleHTTPServer<br>&nbsp;&nbsp;&nbsp; simplehttpserver<br>* SimpleXMLRPCServer
<br>&nbsp;&nbsp;&nbsp; simplexmlrpcserver<br>* SocketServer<br>&nbsp;&nbsp;&nbsp; socketserver<br>* StringIO<br>&nbsp;&nbsp;&nbsp; stringio<br>* Tix<br>&nbsp;&nbsp;&nbsp; tix<br>* Tkinter<br>&nbsp;&nbsp;&nbsp; tkinter<br>* UserDict<br>&nbsp;&nbsp;&nbsp; userdict<br>* UserList<br>&nbsp;&nbsp;&nbsp; userlist<br>* UserString<br>
&nbsp;&nbsp;&nbsp; userstring<br>* W<br>&nbsp;&nbsp;&nbsp; w<br><br><br>Merging C and Python implementations of the same interface<br>----------------------------------------------------------<br><br>Several interfaces have both a Python and C implementation.&nbsp; While it
<br>is great to have a C implementation for speed with a Python<br>implementation as fallback, there is no need to expose the two<br>implementations independently in the stdlib.&nbsp; For Python 3.0 all<br>interfaces with two implementations will be merged into a single
<br>public interface.<br><br>The C module is to be given a leading underscore to delineate the fact<br>that it is not the reference implementation (the Python implementation<br>is).&nbsp; This means that any semantic difference between the C and Python
<br>versions must be dealt with before Python 3.0 or else the C<br>implementation will be removed until it can be fixed.<br><br>One interface that is not listed below is xml.etree.ElementTree.&nbsp; This<br>is an externally maintained module and thus is not under the direct
<br>control of the Python development team for renaming.&nbsp; See `Open<br>Issues`_ for a discussion on this.<br><br>* pickle/cPickle<br>&nbsp;&nbsp;&nbsp; + Rename cPickle to _pickle.<br>&nbsp;&nbsp;&nbsp; + Semantic completeness of C implementation *not* verified.
<br>* profile/cProfile<br>&nbsp;&nbsp;&nbsp; + Rename cProfile to profile.<br>&nbsp;&nbsp;&nbsp; + Semantic completeness of C implementation *not* verified.<br>* StringIO/cStringIO<br>&nbsp;&nbsp;&nbsp; + Rename StringIO to stringio.<br>&nbsp;&nbsp;&nbsp; + Rename cStringIO to _stringio.
<br>&nbsp;&nbsp;&nbsp; + Semantic completeness of C implementation *not* verified.<br><br><br>No public, documented interface<br>-------------------------------<br><br>There are several modules in the stdlib that have no defined public<br>
interface.&nbsp; These modules exist as support code for other modules that<br>are exposed.&nbsp; Because they are not meant to be used directly they<br>should be renamed to reflect this fact.<br><br>* bdb<br>&nbsp;&nbsp;&nbsp; _bdb<br>* markupbase
<br>&nbsp;&nbsp;&nbsp; _markupbase<br>* opcode<br>&nbsp;&nbsp;&nbsp; _opcode<br>* dummythread<br>&nbsp;&nbsp;&nbsp; _mockthread (assuming the deprecation of &#39;thread&#39; occurs).<br><br><br>Transition Plan<br>===============<br><br>For modules to be removed<br>-------------------------
<br><br>A PendingDeprecationWarning will be set in Python 2.6 for all modules<br>slated to be removed in Python 3.0.&nbsp; This will allow people to know<br>which modules will not exist but without being overly noisy since<br>
PendingDeprecationWarning is by default silenced.<br><br><br>For modules to be renamed<br>-------------------------<br><br>Modules will be renamed in Python 2.6 .&nbsp; The original names of the<br>modules will still work but will raise ImportWarning upon import.&nbsp; The
<br>refactoring tool for transitioning to Python 3.0 will refactor imports<br>that use the original names to the new names.<br><br><br>Open Issues<br>===========<br><br>Consolidate dependent modules together into a single module or package?
<br>-----------------------------------------------------------------------<br><br>The stdlib has several modules that have a level of dependency between<br>them (e.g., urllib and urllib2).&nbsp; Usually one is a low-level module
<br>that provides basic abilities with a corresponding higher-level API is<br>given in another module for simple use-cases.&nbsp; In Python 3.0 we could<br>group these dependent modules together into a single module or package
<br>to better reflect their relationship.<br><br>Keep in mind when looking at the groupings that deprecation or removal<br>is also a possibility if there is enough overlap or a module is<br>obsolete.<br><br>* Cookie/cookielib
<br>* urllib/urllib2<br>&nbsp;&nbsp;&nbsp; + urlparse?<br>&nbsp;&nbsp;&nbsp; + httplib?<br>* cgi/cgitb<br>* Tix/Tkinter<br>* getpass/pwd/spwd/grp<br>* mailbox/mhlib<br>* anydbm/whichdbm<br>* bsddb/dbhash<br>* pickle/pickletools<br>* HTMLParser/htmllib
<br>* ftplib/netrc<br>* parser/symbol<br><br><br>Consolidate certain modules with similar themes together in a package?<br>----------------------------------------------------------------------<br><br>Packages are often used to group together modules that have a similar
<br>theme but do not have any direct relationship or dependency upon each<br>other.&nbsp; For Python 3.0 obvious groupings could be done since renaming<br>of various modules is already occurring.<br><br>* collections<br>&nbsp;&nbsp;&nbsp; + heapq
<br>&nbsp;&nbsp;&nbsp; + Queue<br>&nbsp;&nbsp;&nbsp; + sets<br>&nbsp;&nbsp;&nbsp; + UserDist<br>&nbsp;&nbsp;&nbsp; + UserList<br>&nbsp;&nbsp;&nbsp; + What to do with UserString?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Have a package for Python implementations of built-in types<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instead of putting the User* modules into &#39;collections&#39;?
<br>* mac<br>&nbsp;&nbsp;&nbsp; + Various Mac-specific modules.<br>&nbsp;&nbsp;&nbsp; + Same can be done for other platform-specific code.<br>* Profiling<br>&nbsp;&nbsp;&nbsp; + cProfile<br>&nbsp;&nbsp;&nbsp; + profile<br>&nbsp;&nbsp;&nbsp; + hotshot<br>&nbsp;&nbsp;&nbsp; + pstats<br>* email<br>&nbsp;&nbsp;&nbsp; + mailbox<br>
&nbsp;&nbsp;&nbsp; + mhlib<br>* Databases<br>&nbsp;&nbsp;&nbsp; + anydbm<br>&nbsp;&nbsp;&nbsp; + dbhash<br>&nbsp;&nbsp;&nbsp; + dbm<br>&nbsp;&nbsp;&nbsp; + bsddb<br>&nbsp;&nbsp;&nbsp; + dumbdbm<br>&nbsp;&nbsp;&nbsp; + gdbm<br>&nbsp;&nbsp;&nbsp; + whichdb<br>* Audio<br>&nbsp;&nbsp;&nbsp; + aifc<br>&nbsp;&nbsp;&nbsp; + audioop<br>&nbsp;&nbsp;&nbsp; + chunk<br>&nbsp;&nbsp;&nbsp; + ossaudiodev<br>&nbsp;&nbsp;&nbsp; + sunau
<br>&nbsp;&nbsp;&nbsp; + wave<br>&nbsp;&nbsp;&nbsp; + winsound<br>* Servers<br>&nbsp;&nbsp;&nbsp; + BaseHTTPServer<br>&nbsp;&nbsp;&nbsp; + CGIHTTPServer<br>&nbsp;&nbsp;&nbsp; + DocXMLRPCServer<br>&nbsp;&nbsp;&nbsp; + SimpleHTTPServer<br>&nbsp;&nbsp;&nbsp; + SimpleXMLRPCServer<br>&nbsp;&nbsp;&nbsp; + SocketServer<br><br><br>Modules reliant on obsolete/rarely used file formats?
<br>-----------------------------------------------------<br><br>Several modules in the stdlib work on a specific file format.&nbsp; It is<br>possible some of these formats are no longer used and thus the stdlib<br>modules for them can go.&nbsp; Below is a list of some modules which rely
<br>on a file format that may be obsolete.<br><br>* aifc<br>&nbsp;&nbsp;&nbsp; AIFF and AIFF-C audio files.&nbsp; Appears to be only user of the cl<br>&nbsp;&nbsp;&nbsp; module (which is undocumented).<br>* audioop<br>&nbsp;&nbsp;&nbsp; Raw (8|16|32)-bit wide audio files (as generated by the al and
<br>&nbsp;&nbsp;&nbsp; sunaudiodev modules).<br>* binhex<br>&nbsp;&nbsp;&nbsp; binhex4 encoding.<br>* chunk<br>&nbsp;&nbsp;&nbsp; AIFF, AIFF-C, and RMFF audio files.<br>* sunau<br>&nbsp;&nbsp;&nbsp; Sun AU audio files [#sun-au]_.<br><br><br>Renaming of modules maintained outside of the stdlib
<br>----------------------------------------------------<br><br>xml.etree.ElementTree not only does not meet PEP 8 naming standards<br>but it also has an exposed C implementation [#pep-0008]_.&nbsp; It is an<br>externally maintained package, though [#pep-0360]_.&nbsp; A request will be
<br>made for the maintainer to change the name so that it matches PEP 8<br>and hides the C implementation.<br><br><br>References<br>==========<br><br>.. [#pep-0004] PEP 4: Deprecation of Standard Modules<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.python.org/dev/pep-0004/">
http://www.python.org/dev/pep-0004/</a>)<br><br>.. [#pep-0008] PEP 8: Style Guide for Python Code<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.python.org/dev/pep-0008/">http://www.python.org/dev/pep-0008/</a>)<br><br>.. [#pep-0360] PEP 360: Externally Maintained Packages
<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.python.org/peps/pep-0360/">http://www.python.org/peps/pep-0360/</a>)<br><br>.. [#module-index] Python Documentation: Global Module Index<br>&nbsp;&nbsp;&nbsp; (<a href="http://docs.python.org/modindex.html">
http://docs.python.org/modindex.html</a>)<br><br>.. [#timing-module] Python Library Reference: Obsolete<br>&nbsp;&nbsp;&nbsp; (<a href="http://docs.python.org/lib/obsolete-modules.html">http://docs.python.org/lib/obsolete-modules.html</a>
)<br><br>.. [#silly-old-stuff] Python-Dev email: &quot;Py3k release schedule worries&quot;<br>&nbsp;&nbsp;&nbsp; (<a href="http://mail.python.org/pipermail/python-3000/2006-December/005130.html">http://mail.python.org/pipermail/python-3000/2006-December/005130.html
</a>)<br><br>.. [#thread-deprecation] Python-Dev email: Autoloading?<br>&nbsp;&nbsp;&nbsp; (<a href="http://mail.python.org/pipermail/python-dev/2005-October/057244.html">http://mail.python.org/pipermail/python-dev/2005-October/057244.html
</a>)<br><br>.. [#py-dev-summary-2004-11-01] Python-Dev Summary: 2004-11-01<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.python.org/dev/summary/2004-11-01_2004-11-15/#id10">http://www.python.org/dev/summary/2004-11-01_2004-11-15/#id10</a>
)<br><br>.. [#pyopengl] PyOpenGL<br>&nbsp;&nbsp;&nbsp; (<a href="http://pyopengl.sourceforge.net/">http://pyopengl.sourceforge.net/</a>)<br><br>.. [#pil] Python Imaging Library (PIL)<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.pythonware.com/products/pil/">
http://www.pythonware.com/products/pil/</a>)<br><br>.. [#twisted] Twisted<br>&nbsp;&nbsp;&nbsp; (<a href="http://twistedmatrix.com/trac/">http://twistedmatrix.com/trac/</a>)<br><br>.. [#irix-retirement] SGI Press Release:<br>&nbsp;&nbsp;&nbsp; End of General Availability for MIPS IRIX Products -- December 2006
<br>&nbsp;&nbsp;&nbsp; (<a href="http://www.sgi.com/support/mips_irix.html">http://www.sgi.com/support/mips_irix.html</a>)<br><br>.. [#irix-forms] FORMS Library by Mark Overmars<br>&nbsp;&nbsp;&nbsp; (<a href="ftp://ftp.cs.ruu.nl/pub/SGI/FORMS">ftp://ftp.cs.ruu.nl/pub/SGI/FORMS
</a>)<br><br>.. [#sun-au] Wikipedia: Au file format<br>&nbsp;&nbsp;&nbsp; (<a href="http://en.wikipedia.org/wiki/Au_file_format">http://en.wikipedia.org/wiki/Au_file_format</a>)<br>