brett cannon liivppythonorg bcc stdlibsig two false starts years trying cleanup reorganize stdlib creating sig get going guido give pep onceover past several days creating two new bugs reports issues 2715 2716 pep 3108 finally ready public vetting reading pep remember either removing modules renaming moving package additions covered pep also realize right people consulted stuff eg web sig urllib package please think something seems drastic eg removal macspecific modules taken lightly fact proper people asked okay going lastly want turn drawnout thread people think module stay happen use suggest module remove please think propose change proposal process reorg every time gotten way control want happen time ok way pep pep 3108 title standard library reorganization version revision 62573 lastmodified date 20080428 175636 0700 mon 28 apr 2008 author brett cannon status draft type standards track contenttype textxrst created 01jan2007 pythonversion 30 posthistory abstract like language pythons standard library stdlib grown years rich time modules lost need included python also introduction naming convention modules since pythons inception modules follow python 30 presented chance remove modules long term usefulness chance also allows renaming modules follow python style guide pep0008_ pep lists modules included python 30 modules need renamed modules remove guido pronounced silly old stuff deleted stdlib py3k sillyoldstuff_ openended purpose module removed needs justification longer distributed python range module deprecated python 2x platform longer widely used section pep lists various modules removed subsection represents different reason modules removed module must specific justification top listed specific subsection make sure modules truly deserve removed fact removed reason mentions long since module uniquely edited reference long since checkin done specifically module change applied universally across entire stdlib edit time denoted unique last time file edited period procedure thoroughly remove module remove module remove tests edit modulessetupdist setuppy needed remove docs applicable run regression test suite using uall watch tests skipped import failed removed module deprecation warning added 26 would better make changes 26 merge changes 3k branch perform procedure avoid merge conflicts previously deprecated pep 4 lists modules deprecated stdlib pep0004_ specified motivations mirror listed pep 4 modules listed pep time first alpha release python 30 removed entire contents libold also removed modules already removed imported kept distribution python users rely upon code buildtools documented deprecated since python 23 without explicit reason cfmfile documented deprecated since python 24 without explicit reason cl documented obsolete since python 20 earlier interface sgi hardware md5 supplanted hashlib module mimetools documented obsolete without explicit reason mimewriter supplaned email package mimify supplanted email package multifile supplanted email package posixfile locking better done fcntllockf rfc822 supplanted email package sha supplanted hashlib package sv documented obsolete since python 20 earlier interface obsolete sgi indigo hardware timing documented obsolete since python 20 earlier timeclock gives better time resolution platformspecific minimal use python supports many platforms widely held platforms modules limited use people platforms limited usefulness would better longer burden python development team maintenance module mentioned documented undocumented modules specified platforms also removed irix irix operating system longer produced irixretirement_ removing modules platirix56 directory deemed reasonable fact alal done 30 provides sound support indy indigo workstations workstations longer available code uniquely edited three years cd done 30 cd drive control sgi systems sgi longer sells machines irix code uniquely edited 14 years cddb done 30 undocumented cdplayer done 30 undocumented clclcl_old done 30 compression library sgi systems sgi longer sells machines irix code uniquely edited 14 years deviceglglcgencgensuport done 30 gl access predecessor opengl edited least eight years thirdparty libraries provide better support pyopengl pyopengl_ errno done 30 undocumented file done 30 undocumented flflflp done 30 wrapper forms library irixforms_ forms edited 12 years library widely used first eight hits google python docs fl fm done 30 wrapper iris font manager library available sgi machines longer come irix get done 30 undocumented glws done 30 undocumented imgfile done 30 wrapper sgi libimage library imglib image files rgb files python imaging library provdes readonly support pil_ uniquely edited 13 years done 30 undocumented ioctl done 30 undocumented jpeg done 30 wrapper jpeg decompressor code uniquely edited nine years thirdparty libraries provide better support python imaging library pil_ panel done 30 undocumented panelparser done 30 undocumented readcd done 30 undocumented sv done 30 undocumented torgb done 30 undocumented wait done 30 undocumented macspecific modules macspecific modules mostly unmaintained eg bgen tool used autogenerate many modules never updated support ucs4 also pythons place maintain large amount osspecific modules thus modules platmac removed stub module proxy access provided use urllib _builtinsuites undocumented package libscriptpackages audio_mac undocumented aepack osa support better thirdparty modules appscript appscript_ hardcoded endianness breaks intel macs might need rename carbon package dependent aetools see aepack aetypes see aepack applesingle undocumented applesingle binary file format aux aux longer distributed appletrawmain undocumented appletrunner undocumented argvemulator undocumented autogil bad model using python cfrunloop bgenlocations undocumented bundlebuilder undocumented carbon carbon development stopped support 64bit systems completely dependent bgen never updated support ucs4 unicode builds python codewarrior undocumented package libscriptpackages colorpicker better use cocoa guis easydialogs better use cocoa guis explorer undocumented package libscriptpackages finder undocumented package libscriptpackages findertools longer useful framework poorly documented updated support carbon events gensuitemodule see aepack ic icopen needed os x meant replace open usually bad thing macerrors undocumented macos would also mean removal binhex macostools macresource undocumented miniaeframe see aepack nav undocumented netscape undocumented package libscriptpackages pimp undocumented pixmapwrapper undocumented stdsuites undocumented package libscriptpackages systemevents undocumented package libscriptpackages terminal undocumented package libscriptpackages terminalcommand undocumented videoreader longer used w longer distributed python _pyobjc httppyobjcsourceforgenet solaris sunaudiodevsunaudiodev done 30 access sound card sun machines code uniquely edited eight years hardly used modules platformindependent hardly used easy implement functionality scratch audience code small audiodev done 30 undocumented edited five years removed sunaudio go well also undocumented edited seven years imputil undocumented never updated support absolute imports mutex easy implement using semaphore queue block lock attempt uniquely edited since addition 15 years ago useful sched module threadsafe stringold done 30 function versions methods string objects obsolete since python 16 functionality string object module moved string module mostly constants symtable_symtable undocumented toaiff done 30 moved demo undocumented requires sox library installed system user easily handled allowing application specify module name check existence import found new done 30 rebinding names types module also call type builtin get types easily docstring states module longer useful revision 27241 20020615 pure done 30 written pure atria bought rational bought ibm words old testtestall done 30 days regrtest obsolete becoming obsolete signifies either another module stdlib widely distributed thirdparty library provides better solution module meant bastionrexec done 30 restricted execution security turned python 23 modules deemed unsafe bsddb185 done 30 superceded bsddb3 built default documentation specifies module never used directly new code commands subprocess module replaces pep0324_ remove getstatus move rest subprocess compiler need add ast bytecode mechanism done 30 maintain builtin compiler stdlib package redundant astremoval_ ast created compiler available ast_ mechanism compile ast needs added dircache negligible use easily replicated dl done 30 ctypes provides better support functionality fpformat functionality supported string interpolation htmllib superceded htmlparser ihooks undocumented use rexec turned since python 23 imageop done 30 better support thirdparty libraries python imaging library pil_ unit tests relied rgbimg imgfile rgbimg removed python 26 imgfile slated removal pep done 30 linuxaudiodev done 30 replaced ossaudiodev mhlib obsolete mailbox format popen2 done 30 subprocess module replaces pep0324_ sched replaced threadingtimer sgmllib fully parse sgml stdlib support htmllib slated removal stat osstat returns tuple attributes functions module made methods object returned osstat statvfs osstatvfs returns tuple attributes thread people use threading instead rename thread _thread deprecate dummy_thread rename _dummy_thread move threadget_ident threading guido previously supported deprecation threaddeprecation_ urllib superceded urllib2 functionality unique urllib kept urllib package_ userdict done 30 useful since types superclass useful bits moved collections module userlistuserstring done 30 useful since types superclass modules rename along stdlib gaining modules longer relevant also issue naming many modules existed stdlib pep 8 came existence pep0008_ led naming inconsistencies namespace bloat addressed pep 8 violations pep 8 specifies modules short alllowercase names underscores used improves readability pep0008_ use underscores discouraged package names following modules violate pep 8 somehow renamed moved package current name replacement name _winreg winreg rename also module public interface thus leading underscore configparser configparser copy_reg copyreg pixmapwrapper pixmapwrapper queue queue socketserver socketserver merging c python implementations interface several interfaces python c implementation great c implementation speed python implementation fallback need expose two implementations independently stdlib python 30 interfaces two implementations merged single public interface c module given leading underscore delineate fact reference implementation python implementation means semantic difference c python versions must dealt python 30 else c implementation removed fixed one interface listed xmletreeelementtree externally maintained module thus direct control python development team renaming see open issues_ discussion picklecpickle rename cpickle _pickle semantic completeness c implementation verified profilecprofile rename cprofile _profile semantic completeness c implementation verified stringiocstringio done 30 add class io module public documented interface several modules stdlib defined public interface modules exist support code modules exposed meant used directly renamed reflect fact current name replacement name markupbase _markupbase done 30 dummy_thread _dummy_thread _ assumes thread renamed _thread poorly chosen names modules names poorly chosen hindsight renamed prevent bad name perpetuating beyond 2x series current name replacement name repr reprlib testtest_support testsupport grouping modules stdlib grown several areas within expanded include multiple modules eg dbm support thus new packages make sense renaming makes modules name easier work dbm package current name replacement name anydbm dbmtools 1_ dbhash dbmbsd dbm dbmndbm dumbdm dbmdumb gdbm dbmgnu whichdb dbmtools 1_ 1 dbmtools combine anybdbm whichdb since public api modules name conflict two modules closely related usage html package current name replacement name htmlparser htmlparser htmlentitydefs htmlentities http package current name replacement name httplib httpclient basehttpserver httpserver 2_ cgihttpserver httpserver 2_ simplehttpserver httpserver 2_ cookie httpcookies cookielib httpcookiejar 2 httpserver module combine specified modules safely naming conflicts tkinter package current name replacement name canvas tkintercanvas dialog tkinterdialog filedialog tkinterfiledialog 4_ fixtk tkinter_fix scrolledtext tkinterscrolledtext simpledialog tkintersimpledialog 5_ tix tkintertix tkconstants tkinterconstants tkdnd tkinterdnd tkinter tkinter__init__ tkcolorchooser tkintercolorchooser tkcommondialog tkintercommondialog tkfiledialog tkinterfiledialog 4_ tkfont tkinterfont tkmessagebox tkintermessagebox tksimpledialog tkintersimpledialog 5_ turtle tkinterturtle 4 tkinterfiledialog safely combine filedialog tkfiledialog naming conflicts 5 tkintersimpledialog safely combine simpledialog tksimpledialog naming conflicts urllib package originally new package named url common use name variable deemed better keep name urllib instead shift existing modules around new package current name replacement name urllib2 urllibrequest urlparse urllibparse urllib urllibparse urllibrequest 6_ 6 quotingrelated functions urllib added urllibparse urlliburlopener urllibfancyurlopener added urllibrequest long documentation modules updated xmlrpc package current name replacement name xmlrpclib xmlrpcclient simplexmlrpcserver xmlrpcserver 3_ cgixmlrpcserver xmlrpcserver 3_ 3 modules combined xmlrpcserver naming conflicts thus safely merged transition plan modules removed removal modules continuing exist python 2x series ie deprecated explicitly 2x series warningswarn3k used issue deprecationwarning renaming modules modules renamed stub modules created original names kept directory within stdlib eg like libold used need keep stub modules within directory prevent naming conflicts caseinsensitive filesystems cases nothing case module changing stub modules import module code based new naming type warning raised modules removed raised stub modules support 2to3 refactoring tool renames also used 2to3_ import statements rewritten import statement none rest code needs touched accomplished using keyword import statements bind module namespace old name importing based new name open issues renaming modules maintained outside stdlib xmletreeelementtree meet pep 8 naming standards also exposed c implementation pep0008_ externally maintained package though pep0360_ request made maintainer change name matches pep 8 hides c implementation rejected ideas modules originally suggested removal asynchatasyncore josiah carlson said maintain modules audioopsunauaifc audio modules formats still used base64quopriuu still widely used codecs module provide nice api basic usage fileinput useful work stdin linecache used internally several places nis testimonials people new installations nis still occurring getopt simpler optparse repr useful basis overriding used internally telnetlib really handy quickanddirty remote access hardware supports using telnet configuration querying tkinter would prevent idle existing gui toolkit would available box introducing new toplevel package suggested entire stdlib placed within package pep address issue design issues naming deserve special consideration import semantics etc everything within pep easily handled new toplevel package introduced introducing new packages contain themerelated modules writing pep noticed certain themes appeared stdlib past people suggested introducing new packages help collect modules share similar theme eg audio open issue created suggest new packages introduce end though enough support could pulled together warrant moving forward idea instead name simplification chosen guiding force peps create references pep0004 pep 4 deprecation standard modules httpwwwpythonorgdevpepspep0004 pep0008 pep 8 style guide python code httpwwwpythonorgdevpepspep0008 pep0324 pep 324 subprocess new process module httpwwwpythonorgdevpepspep0324 pep0360 pep 360 externally maintained packages httpwwwpythonorgdevpepspep0360 moduleindex python documentation global module index httpdocspythonorgmodindexhtml timingmodule python library reference obsolete httpdocspythonorglibobsoletemoduleshtml sillyoldstuff pythondev email py3k release schedule worries httpmailpythonorgpipermailpython30002006december005130html threaddeprecation pythondev email autoloading httpmailpythonorgpipermailpythondev2005october057244html pydevsummary20041101 pythondev summary 20041101 httpwwwpythonorgdevsummary20041101_20041115id10 2to3 2to3 refactoring tool httpsvnpythonorgviewsandboxtrunk2to3 pyopengl pyopengl httppyopenglsourceforgenet pil python imaging library pil httpwwwpythonwarecomproductspil twisted twisted httptwistedmatrixcomtrac irixretirement sgi press release end general availability mips irix products december 2006 httpwwwsgicomsupportmips_irixhtml irixforms forms library mark overmars ftpftpcsruunlpubsgiforms sunau wikipedia au file format httpenwikipediaorgwikiau_file_format appscript appscript httpappscriptsourceforgenet ast _ast module httpdocspythonorglibasthtml astremoval pythondev email getting compiler package failures httpmailpythonorgpipermailpython30002007may007615html copyright document placed public domain thu 07 aug 2008 200010 0700 python3000 pep 3108 stdlib reorgcleanup