pymailcgi also reuses parts of the mailtools module package and mailconfig py module we wrote in the former of these is accessible to imports from the pp package rootand the latter is largely copied by local version in the pymailcgi directory so that it can differ between pymailgui and pymailcgi the externs py module is intended to hide these modulesactual locationsin case the install structure varies on some machines in factthis system again demonstrates the powers of code reuse in practical way in this editionit gets great deal of logic for free from the new mailtools package of --message loadingsendingdeletingparsingcomposingdecoding and encodingand attachments--even though that package' modules were originally developed for the pymailgui program when it came time to update pymailcgi latertools for handling complex things such as attachments and message text searches were already in place see for mailtools source code as usualpymailcgi also uses variety of standard library modulessmtplibpoplibemail *cgiurllib *and the like thanks to the reuse of both custom and standard library codethis system achieves much in minimal amount of code all toldpymailcgi consists of just lines of new codeincluding whitespacecommentsand the top-level html file (see file linecounts xls in this system' source directory for detailsthe prior edition' version claimed to be some new linesthis compares favorably to the size of the pymailgui client-side "desktopprogram in but most of this difference owes to the vastly more limited functionality in pymailcgi--there are no local save filesno transfer thread overlapno message cachingno inbox synchronization tests or recoveryno multiple-message selectionsno raw mail text viewsand so on moreoveras the next section describespymailcgi' unicode policies are substantially more limited in this releaseand although arbitrary the pymailcgi server