[Python-checkins] distutils2: Converted tabs to spaces and fixed the packages keyword output from directory

tarek.ziade python-checkins at python.org
Mon Apr 5 23:09:19 CEST 2010


tarek.ziade pushed d216562440a9 to distutils2:

http://hg.python.org/distutils2/rev/d216562440a9
changeset:   86:d216562440a9
parent:      84:51b9f966241b
user:        pumazi
date:        Mon Mar 22 16:51:35 2010 -0400
summary:     Converted tabs to spaces and fixed the packages keyword output from directory slashes to dotted notation (e.g. repoze/obob/tests to repoze.obob.tests).
files:       src/distutils2/mkpkg.py

diff --git a/src/distutils2/mkpkg.py b/src/distutils2/mkpkg.py
--- a/src/distutils2/mkpkg.py
+++ b/src/distutils2/mkpkg.py
@@ -74,773 +74,773 @@
 
 troveList = [
       'Development Status :: 1 - Planning',
-		'Development Status :: 2 - Pre-Alpha',
-		'Development Status :: 3 - Alpha',
-		'Development Status :: 4 - Beta',
-		'Development Status :: 5 - Production/Stable',
-		'Development Status :: 6 - Mature',
-		'Development Status :: 7 - Inactive',
-		'Environment :: Console',
-		'Environment :: Console :: Curses',
-		'Environment :: Console :: Framebuffer',
-		'Environment :: Console :: Newt',
-		'Environment :: Console :: svgalib',
-		'Environment :: Handhelds/PDA\'s',
-		'Environment :: MacOS X',
-		'Environment :: MacOS X :: Aqua',
-		'Environment :: MacOS X :: Carbon',
-		'Environment :: MacOS X :: Cocoa',
-		'Environment :: No Input/Output (Daemon)',
-		'Environment :: Other Environment',
-		'Environment :: Plugins',
-		'Environment :: Web Environment',
-		'Environment :: Web Environment :: Buffet',
-		'Environment :: Web Environment :: Mozilla',
-		'Environment :: Web Environment :: ToscaWidgets',
-		'Environment :: Win32 (MS Windows)',
-		'Environment :: X11 Applications',
-		'Environment :: X11 Applications :: Gnome',
-		'Environment :: X11 Applications :: GTK',
-		'Environment :: X11 Applications :: KDE',
-		'Environment :: X11 Applications :: Qt',
-		'Framework :: BFG',
-		'Framework :: Buildout',
-		'Framework :: Chandler',
-		'Framework :: CubicWeb',
-		'Framework :: Django',
-		'Framework :: IDLE',
-		'Framework :: Paste',
-		'Framework :: Plone',
-		'Framework :: Pylons',
-		'Framework :: Setuptools Plugin',
-		'Framework :: Trac',
-		'Framework :: TurboGears',
-		'Framework :: TurboGears :: Applications',
-		'Framework :: TurboGears :: Widgets',
-		'Framework :: Twisted',
-		'Framework :: ZODB',
-		'Framework :: Zope2',
-		'Framework :: Zope3',
-		'Intended Audience :: Customer Service',
-		'Intended Audience :: Developers',
-		'Intended Audience :: Education',
-		'Intended Audience :: End Users/Desktop',
-		'Intended Audience :: Financial and Insurance Industry',
-		'Intended Audience :: Healthcare Industry',
-		'Intended Audience :: Information Technology',
-		'Intended Audience :: Legal Industry',
-		'Intended Audience :: Manufacturing',
-		'Intended Audience :: Other Audience',
-		'Intended Audience :: Religion',
-		'Intended Audience :: Science/Research',
-		'Intended Audience :: System Administrators',
-		'Intended Audience :: Telecommunications Industry',
-		'License :: Aladdin Free Public License (AFPL)',
-		'License :: DFSG approved',
-		'License :: Eiffel Forum License (EFL)',
-		'License :: Free For Educational Use',
-		'License :: Free For Home Use',
-		'License :: Free for non-commercial use',
-		'License :: Freely Distributable',
-		'License :: Free To Use But Restricted',
-		'License :: Freeware',
-		'License :: Netscape Public License (NPL)',
-		'License :: Nokia Open Source License (NOKOS)',
-		'License :: OSI Approved',
-		'License :: OSI Approved :: Academic Free License (AFL)',
-		'License :: OSI Approved :: Apache Software License',
-		'License :: OSI Approved :: Apple Public Source License',
-		'License :: OSI Approved :: Artistic License',
-		'License :: OSI Approved :: Attribution Assurance License',
-		'License :: OSI Approved :: BSD License',
-		'License :: OSI Approved :: Common Public License',
-		'License :: OSI Approved :: Eiffel Forum License',
-		'License :: OSI Approved :: European Union Public Licence 1.0 (EUPL 1.0)',
-		'License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)',
-		'License :: OSI Approved :: GNU Affero General Public License v3',
-		'License :: OSI Approved :: GNU Free Documentation License (FDL)',
-		'License :: OSI Approved :: GNU General Public License (GPL)',
-		'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
-		'License :: OSI Approved :: IBM Public License',
-		'License :: OSI Approved :: Intel Open Source License',
-		'License :: OSI Approved :: ISC License (ISCL)',
-		'License :: OSI Approved :: Jabber Open Source License',
-		'License :: OSI Approved :: MIT License',
-		'License :: OSI Approved :: MITRE Collaborative Virtual Workspace License (CVW)',
-		'License :: OSI Approved :: Motosoto License',
-		'License :: OSI Approved :: Mozilla Public License 1.0 (MPL)',
-		'License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)',
-		'License :: OSI Approved :: Nethack General Public License',
-		'License :: OSI Approved :: Nokia Open Source License',
-		'License :: OSI Approved :: Open Group Test Suite License',
-		'License :: OSI Approved :: Python License (CNRI Python License)',
-		'License :: OSI Approved :: Python Software Foundation License',
-		'License :: OSI Approved :: Qt Public License (QPL)',
-		'License :: OSI Approved :: Ricoh Source Code Public License',
-		'License :: OSI Approved :: Sleepycat License',
-		'License :: OSI Approved :: Sun Industry Standards Source License (SISSL)',
-		'License :: OSI Approved :: Sun Public License',
-		'License :: OSI Approved :: University of Illinois/NCSA Open Source License',
-		'License :: OSI Approved :: Vovida Software License 1.0',
-		'License :: OSI Approved :: W3C License',
-		'License :: OSI Approved :: X.Net License',
-		'License :: OSI Approved :: zlib/libpng License',
-		'License :: OSI Approved :: Zope Public License',
-		'License :: Other/Proprietary License',
-		'License :: Public Domain',
-		'License :: Repoze Public License',
-		'Natural Language :: Afrikaans',
-		'Natural Language :: Arabic',
-		'Natural Language :: Bengali',
-		'Natural Language :: Bosnian',
-		'Natural Language :: Bulgarian',
-		'Natural Language :: Catalan',
-		'Natural Language :: Chinese (Simplified)',
-		'Natural Language :: Chinese (Traditional)',
-		'Natural Language :: Croatian',
-		'Natural Language :: Czech',
-		'Natural Language :: Danish',
-		'Natural Language :: Dutch',
-		'Natural Language :: English',
-		'Natural Language :: Esperanto',
-		'Natural Language :: Finnish',
-		'Natural Language :: French',
-		'Natural Language :: German',
-		'Natural Language :: Greek',
-		'Natural Language :: Hebrew',
-		'Natural Language :: Hindi',
-		'Natural Language :: Hungarian',
-		'Natural Language :: Icelandic',
-		'Natural Language :: Indonesian',
-		'Natural Language :: Italian',
-		'Natural Language :: Japanese',
-		'Natural Language :: Javanese',
-		'Natural Language :: Korean',
-		'Natural Language :: Latin',
-		'Natural Language :: Latvian',
-		'Natural Language :: Macedonian',
-		'Natural Language :: Malay',
-		'Natural Language :: Marathi',
-		'Natural Language :: Norwegian',
-		'Natural Language :: Panjabi',
-		'Natural Language :: Persian',
-		'Natural Language :: Polish',
-		'Natural Language :: Portuguese',
-		'Natural Language :: Portuguese (Brazilian)',
-		'Natural Language :: Romanian',
-		'Natural Language :: Russian',
-		'Natural Language :: Serbian',
-		'Natural Language :: Slovak',
-		'Natural Language :: Slovenian',
-		'Natural Language :: Spanish',
-		'Natural Language :: Swedish',
-		'Natural Language :: Tamil',
-		'Natural Language :: Telugu',
-		'Natural Language :: Thai',
-		'Natural Language :: Turkish',
-		'Natural Language :: Ukranian',
-		'Natural Language :: Urdu',
-		'Natural Language :: Vietnamese',
-		'Operating System :: BeOS',
-		'Operating System :: MacOS',
-		'Operating System :: MacOS :: MacOS 9',
-		'Operating System :: MacOS :: MacOS X',
-		'Operating System :: Microsoft',
-		'Operating System :: Microsoft :: MS-DOS',
-		'Operating System :: Microsoft :: Windows',
-		'Operating System :: Microsoft :: Windows :: Windows 3.1 or Earlier',
-		'Operating System :: Microsoft :: Windows :: Windows 95/98/2000',
-		'Operating System :: Microsoft :: Windows :: Windows CE',
-		'Operating System :: Microsoft :: Windows :: Windows NT/2000',
-		'Operating System :: OS/2',
-		'Operating System :: OS Independent',
-		'Operating System :: Other OS',
-		'Operating System :: PalmOS',
-		'Operating System :: PDA Systems',
-		'Operating System :: POSIX',
-		'Operating System :: POSIX :: AIX',
-		'Operating System :: POSIX :: BSD',
-		'Operating System :: POSIX :: BSD :: BSD/OS',
-		'Operating System :: POSIX :: BSD :: FreeBSD',
-		'Operating System :: POSIX :: BSD :: NetBSD',
-		'Operating System :: POSIX :: BSD :: OpenBSD',
-		'Operating System :: POSIX :: GNU Hurd',
-		'Operating System :: POSIX :: HP-UX',
-		'Operating System :: POSIX :: IRIX',
-		'Operating System :: POSIX :: Linux',
-		'Operating System :: POSIX :: Other',
-		'Operating System :: POSIX :: SCO',
-		'Operating System :: POSIX :: SunOS/Solaris',
-		'Operating System :: Unix',
-		'Programming Language :: Ada',
-		'Programming Language :: APL',
-		'Programming Language :: ASP',
-		'Programming Language :: Assembly',
-		'Programming Language :: Awk',
-		'Programming Language :: Basic',
-		'Programming Language :: C',
-		'Programming Language :: C#',
-		'Programming Language :: C++',
-		'Programming Language :: Cold Fusion',
-		'Programming Language :: Cython',
-		'Programming Language :: Delphi/Kylix',
-		'Programming Language :: Dylan',
-		'Programming Language :: Eiffel',
-		'Programming Language :: Emacs-Lisp',
-		'Programming Language :: Erlang',
-		'Programming Language :: Euler',
-		'Programming Language :: Euphoria',
-		'Programming Language :: Forth',
-		'Programming Language :: Fortran',
-		'Programming Language :: Haskell',
-		'Programming Language :: Java',
-		'Programming Language :: JavaScript',
-		'Programming Language :: Lisp',
-		'Programming Language :: Logo',
-		'Programming Language :: ML',
-		'Programming Language :: Modula',
-		'Programming Language :: Objective C',
-		'Programming Language :: Object Pascal',
-		'Programming Language :: OCaml',
-		'Programming Language :: Other',
-		'Programming Language :: Other Scripting Engines',
-		'Programming Language :: Pascal',
-		'Programming Language :: Perl',
-		'Programming Language :: PHP',
-		'Programming Language :: Pike',
-		'Programming Language :: Pliant',
-		'Programming Language :: PL/SQL',
-		'Programming Language :: PROGRESS',
-		'Programming Language :: Prolog',
-		'Programming Language :: Python',
-		'Programming Language :: Python :: 2',
-		'Programming Language :: Python :: 2.3',
-		'Programming Language :: Python :: 2.4',
-		'Programming Language :: Python :: 2.5',
-		'Programming Language :: Python :: 2.6',
-		'Programming Language :: Python :: 2.7',
-		'Programming Language :: Python :: 3',
-		'Programming Language :: Python :: 3.0',
-		'Programming Language :: Python :: 3.1',
-		'Programming Language :: Python :: 3.2',
-		'Programming Language :: REBOL',
-		'Programming Language :: Rexx',
-		'Programming Language :: Ruby',
-		'Programming Language :: Scheme',
-		'Programming Language :: Simula',
-		'Programming Language :: Smalltalk',
-		'Programming Language :: SQL',
-		'Programming Language :: Tcl',
-		'Programming Language :: Unix Shell',
-		'Programming Language :: Visual Basic',
-		'Programming Language :: XBasic',
-		'Programming Language :: YACC',
-		'Programming Language :: Zope',
-		'Topic :: Adaptive Technologies',
-		'Topic :: Artistic Software',
-		'Topic :: Communications',
-		'Topic :: Communications :: BBS',
-		'Topic :: Communications :: Chat',
-		'Topic :: Communications :: Chat :: AOL Instant Messenger',
-		'Topic :: Communications :: Chat :: ICQ',
-		'Topic :: Communications :: Chat :: Internet Relay Chat',
-		'Topic :: Communications :: Chat :: Unix Talk',
-		'Topic :: Communications :: Conferencing',
-		'Topic :: Communications :: Email',
-		'Topic :: Communications :: Email :: Address Book',
-		'Topic :: Communications :: Email :: Email Clients (MUA)',
-		'Topic :: Communications :: Email :: Filters',
-		'Topic :: Communications :: Email :: Mailing List Servers',
-		'Topic :: Communications :: Email :: Mail Transport Agents',
-		'Topic :: Communications :: Email :: Post-Office',
-		'Topic :: Communications :: Email :: Post-Office :: IMAP',
-		'Topic :: Communications :: Email :: Post-Office :: POP3',
-		'Topic :: Communications :: Fax',
-		'Topic :: Communications :: FIDO',
-		'Topic :: Communications :: File Sharing',
-		'Topic :: Communications :: File Sharing :: Gnutella',
-		'Topic :: Communications :: File Sharing :: Napster',
-		'Topic :: Communications :: Ham Radio',
-		'Topic :: Communications :: Internet Phone',
-		'Topic :: Communications :: Telephony',
-		'Topic :: Communications :: Usenet News',
-		'Topic :: Database',
-		'Topic :: Database :: Database Engines/Servers',
-		'Topic :: Database :: Front-Ends',
-		'Topic :: Desktop Environment',
-		'Topic :: Desktop Environment :: File Managers',
-		'Topic :: Desktop Environment :: Gnome',
-		'Topic :: Desktop Environment :: GNUstep',
-		'Topic :: Desktop Environment :: K Desktop Environment (KDE)',
-		'Topic :: Desktop Environment :: K Desktop Environment (KDE) :: Themes',
-		'Topic :: Desktop Environment :: PicoGUI',
-		'Topic :: Desktop Environment :: PicoGUI :: Applications',
-		'Topic :: Desktop Environment :: PicoGUI :: Themes',
-		'Topic :: Desktop Environment :: Screen Savers',
-		'Topic :: Desktop Environment :: Window Managers',
-		'Topic :: Desktop Environment :: Window Managers :: Afterstep',
-		'Topic :: Desktop Environment :: Window Managers :: Afterstep :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: Applets',
-		'Topic :: Desktop Environment :: Window Managers :: Blackbox',
-		'Topic :: Desktop Environment :: Window Managers :: Blackbox :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: CTWM',
-		'Topic :: Desktop Environment :: Window Managers :: CTWM :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: Enlightenment',
-		'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Epplets',
-		'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR15',
-		'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR16',
-		'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR17',
-		'Topic :: Desktop Environment :: Window Managers :: Fluxbox',
-		'Topic :: Desktop Environment :: Window Managers :: Fluxbox :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: FVWM',
-		'Topic :: Desktop Environment :: Window Managers :: FVWM :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: IceWM',
-		'Topic :: Desktop Environment :: Window Managers :: IceWM :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: MetaCity',
-		'Topic :: Desktop Environment :: Window Managers :: MetaCity :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: Oroborus',
-		'Topic :: Desktop Environment :: Window Managers :: Oroborus :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: Sawfish',
-		'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes 0.30',
-		'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes pre-0.30',
-		'Topic :: Desktop Environment :: Window Managers :: Waimea',
-		'Topic :: Desktop Environment :: Window Managers :: Waimea :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: Window Maker',
-		'Topic :: Desktop Environment :: Window Managers :: Window Maker :: Applets',
-		'Topic :: Desktop Environment :: Window Managers :: Window Maker :: Themes',
-		'Topic :: Desktop Environment :: Window Managers :: XFCE',
-		'Topic :: Desktop Environment :: Window Managers :: XFCE :: Themes',
-		'Topic :: Documentation',
-		'Topic :: Education',
-		'Topic :: Education :: Computer Aided Instruction (CAI)',
-		'Topic :: Education :: Testing',
-		'Topic :: Games/Entertainment',
-		'Topic :: Games/Entertainment :: Arcade',
-		'Topic :: Games/Entertainment :: Board Games',
-		'Topic :: Games/Entertainment :: First Person Shooters',
-		'Topic :: Games/Entertainment :: Fortune Cookies',
-		'Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)',
-		'Topic :: Games/Entertainment :: Puzzle Games',
-		'Topic :: Games/Entertainment :: Real Time Strategy',
-		'Topic :: Games/Entertainment :: Role-Playing',
-		'Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games',
-		'Topic :: Games/Entertainment :: Simulation',
-		'Topic :: Games/Entertainment :: Turn Based Strategy',
-		'Topic :: Home Automation',
-		'Topic :: Internet',
-		'Topic :: Internet :: File Transfer Protocol (FTP)',
-		'Topic :: Internet :: Finger',
-		'Topic :: Internet :: Log Analysis',
-		'Topic :: Internet :: Name Service (DNS)',
-		'Topic :: Internet :: Proxy Servers',
-		'Topic :: Internet :: WAP',
-		'Topic :: Internet :: WWW/HTTP',
-		'Topic :: Internet :: WWW/HTTP :: Browsers',
-		'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
-		'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',
-		'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards',
-		'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary',
-		'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters',
-		'Topic :: Internet :: WWW/HTTP :: HTTP Servers',
-		'Topic :: Internet :: WWW/HTTP :: Indexing/Search',
-		'Topic :: Internet :: WWW/HTTP :: Site Management',
-		'Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking',
-		'Topic :: Internet :: WWW/HTTP :: WSGI',
-		'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
-		'Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware',
-		'Topic :: Internet :: WWW/HTTP :: WSGI :: Server',
-		'Topic :: Internet :: Z39.50',
-		'Topic :: Multimedia',
-		'Topic :: Multimedia :: Graphics',
-		'Topic :: Multimedia :: Graphics :: 3D Modeling',
-		'Topic :: Multimedia :: Graphics :: 3D Rendering',
-		'Topic :: Multimedia :: Graphics :: Capture',
-		'Topic :: Multimedia :: Graphics :: Capture :: Digital Camera',
-		'Topic :: Multimedia :: Graphics :: Capture :: Scanners',
-		'Topic :: Multimedia :: Graphics :: Capture :: Screen Capture',
-		'Topic :: Multimedia :: Graphics :: Editors',
-		'Topic :: Multimedia :: Graphics :: Editors :: Raster-Based',
-		'Topic :: Multimedia :: Graphics :: Editors :: Vector-Based',
-		'Topic :: Multimedia :: Graphics :: Graphics Conversion',
-		'Topic :: Multimedia :: Graphics :: Presentation',
-		'Topic :: Multimedia :: Graphics :: Viewers',
-		'Topic :: Multimedia :: Sound/Audio',
-		'Topic :: Multimedia :: Sound/Audio :: Analysis',
-		'Topic :: Multimedia :: Sound/Audio :: Capture/Recording',
-		'Topic :: Multimedia :: Sound/Audio :: CD Audio',
-		'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Playing',
-		'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Ripping',
-		'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Writing',
-		'Topic :: Multimedia :: Sound/Audio :: Conversion',
-		'Topic :: Multimedia :: Sound/Audio :: Editors',
-		'Topic :: Multimedia :: Sound/Audio :: MIDI',
-		'Topic :: Multimedia :: Sound/Audio :: Mixers',
-		'Topic :: Multimedia :: Sound/Audio :: Players',
-		'Topic :: Multimedia :: Sound/Audio :: Players :: MP3',
-		'Topic :: Multimedia :: Sound/Audio :: Sound Synthesis',
-		'Topic :: Multimedia :: Sound/Audio :: Speech',
-		'Topic :: Multimedia :: Video',
-		'Topic :: Multimedia :: Video :: Capture',
-		'Topic :: Multimedia :: Video :: Conversion',
-		'Topic :: Multimedia :: Video :: Display',
-		'Topic :: Multimedia :: Video :: Non-Linear Editor',
-		'Topic :: Office/Business',
-		'Topic :: Office/Business :: Financial',
-		'Topic :: Office/Business :: Financial :: Accounting',
-		'Topic :: Office/Business :: Financial :: Investment',
-		'Topic :: Office/Business :: Financial :: Point-Of-Sale',
-		'Topic :: Office/Business :: Financial :: Spreadsheet',
-		'Topic :: Office/Business :: Groupware',
-		'Topic :: Office/Business :: News/Diary',
-		'Topic :: Office/Business :: Office Suites',
-		'Topic :: Office/Business :: Scheduling',
-		'Topic :: Other/Nonlisted Topic',
-		'Topic :: Printing',
-		'Topic :: Religion',
-		'Topic :: Scientific/Engineering',
-		'Topic :: Scientific/Engineering :: Artificial Intelligence',
-		'Topic :: Scientific/Engineering :: Astronomy',
-		'Topic :: Scientific/Engineering :: Atmospheric Science',
-		'Topic :: Scientific/Engineering :: Bio-Informatics',
-		'Topic :: Scientific/Engineering :: Chemistry',
-		'Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)',
-		'Topic :: Scientific/Engineering :: GIS',
-		'Topic :: Scientific/Engineering :: Human Machine Interfaces',
-		'Topic :: Scientific/Engineering :: Image Recognition',
-		'Topic :: Scientific/Engineering :: Information Analysis',
-		'Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator',
-		'Topic :: Scientific/Engineering :: Mathematics',
-		'Topic :: Scientific/Engineering :: Medical Science Apps.',
-		'Topic :: Scientific/Engineering :: Physics',
-		'Topic :: Scientific/Engineering :: Visualization',
-		'Topic :: Security',
-		'Topic :: Security :: Cryptography',
-		'Topic :: Sociology',
-		'Topic :: Sociology :: Genealogy',
-		'Topic :: Sociology :: History',
-		'Topic :: Software Development',
-		'Topic :: Software Development :: Assemblers',
-		'Topic :: Software Development :: Bug Tracking',
-		'Topic :: Software Development :: Build Tools',
-		'Topic :: Software Development :: Code Generators',
-		'Topic :: Software Development :: Compilers',
-		'Topic :: Software Development :: Debuggers',
-		'Topic :: Software Development :: Disassemblers',
-		'Topic :: Software Development :: Documentation',
-		'Topic :: Software Development :: Embedded Systems',
-		'Topic :: Software Development :: Internationalization',
-		'Topic :: Software Development :: Interpreters',
-		'Topic :: Software Development :: Libraries',
-		'Topic :: Software Development :: Libraries :: Application Frameworks',
-		'Topic :: Software Development :: Libraries :: Java Libraries',
-		'Topic :: Software Development :: Libraries :: Perl Modules',
-		'Topic :: Software Development :: Libraries :: PHP Classes',
-		'Topic :: Software Development :: Libraries :: Pike Modules',
-		'Topic :: Software Development :: Libraries :: pygame',
-		'Topic :: Software Development :: Libraries :: Python Modules',
-		'Topic :: Software Development :: Libraries :: Ruby Modules',
-		'Topic :: Software Development :: Libraries :: Tcl Extensions',
-		'Topic :: Software Development :: Localization',
-		'Topic :: Software Development :: Object Brokering',
-		'Topic :: Software Development :: Object Brokering :: CORBA',
-		'Topic :: Software Development :: Pre-processors',
-		'Topic :: Software Development :: Quality Assurance',
-		'Topic :: Software Development :: Testing',
-		'Topic :: Software Development :: Testing :: Traffic Generation',
-		'Topic :: Software Development :: User Interfaces',
-		'Topic :: Software Development :: Version Control',
-		'Topic :: Software Development :: Version Control :: CVS',
-		'Topic :: Software Development :: Version Control :: RCS',
-		'Topic :: Software Development :: Version Control :: SCCS',
-		'Topic :: Software Development :: Widget Sets',
-		'Topic :: System',
-		'Topic :: System :: Archiving',
-		'Topic :: System :: Archiving :: Backup',
-		'Topic :: System :: Archiving :: Compression',
-		'Topic :: System :: Archiving :: Mirroring',
-		'Topic :: System :: Archiving :: Packaging',
-		'Topic :: System :: Benchmark',
-		'Topic :: System :: Boot',
-		'Topic :: System :: Boot :: Init',
-		'Topic :: System :: Clustering',
-		'Topic :: System :: Console Fonts',
-		'Topic :: System :: Distributed Computing',
-		'Topic :: System :: Emulators',
-		'Topic :: System :: Filesystems',
-		'Topic :: System :: Hardware',
-		'Topic :: System :: Hardware :: Hardware Drivers',
-		'Topic :: System :: Hardware :: Mainframes',
-		'Topic :: System :: Hardware :: Symmetric Multi-processing',
-		'Topic :: System :: Installation/Setup',
-		'Topic :: System :: Logging',
-		'Topic :: System :: Monitoring',
-		'Topic :: System :: Networking',
-		'Topic :: System :: Networking :: Firewalls',
-		'Topic :: System :: Networking :: Monitoring',
-		'Topic :: System :: Networking :: Monitoring :: Hardware Watchdog',
-		'Topic :: System :: Networking :: Time Synchronization',
-		'Topic :: System :: Operating System',
-		'Topic :: System :: Operating System Kernels',
-		'Topic :: System :: Operating System Kernels :: BSD',
-		'Topic :: System :: Operating System Kernels :: GNU Hurd',
-		'Topic :: System :: Operating System Kernels :: Linux',
-		'Topic :: System :: Power (UPS)',
-		'Topic :: System :: Recovery Tools',
-		'Topic :: System :: Shells',
-		'Topic :: System :: Software Distribution',
-		'Topic :: System :: Systems Administration',
-		'Topic :: System :: Systems Administration :: Authentication/Directory',
-		'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP',
-		'Topic :: System :: Systems Administration :: Authentication/Directory :: NIS',
-		'Topic :: System :: System Shells',
-		'Topic :: Terminals',
-		'Topic :: Terminals :: Serial',
-		'Topic :: Terminals :: Telnet',
-		'Topic :: Terminals :: Terminal Emulators/X Terminals',
-		'Topic :: Text Editors',
-		'Topic :: Text Editors :: Documentation',
-		'Topic :: Text Editors :: Emacs',
-		'Topic :: Text Editors :: Integrated Development Environments (IDE)',
-		'Topic :: Text Editors :: Text Processing',
-		'Topic :: Text Editors :: Word Processors',
-		'Topic :: Text Processing',
-		'Topic :: Text Processing :: Filters',
-		'Topic :: Text Processing :: Fonts',
-		'Topic :: Text Processing :: General',
-		'Topic :: Text Processing :: Indexing',
-		'Topic :: Text Processing :: Linguistic',
-		'Topic :: Text Processing :: Markup',
-		'Topic :: Text Processing :: Markup :: HTML',
-		'Topic :: Text Processing :: Markup :: LaTeX',
-		'Topic :: Text Processing :: Markup :: SGML',
-		'Topic :: Text Processing :: Markup :: VRML',
-		'Topic :: Text Processing :: Markup :: XML',
-		'Topic :: Utilities',
+        'Development Status :: 2 - Pre-Alpha',
+        'Development Status :: 3 - Alpha',
+        'Development Status :: 4 - Beta',
+        'Development Status :: 5 - Production/Stable',
+        'Development Status :: 6 - Mature',
+        'Development Status :: 7 - Inactive',
+        'Environment :: Console',
+        'Environment :: Console :: Curses',
+        'Environment :: Console :: Framebuffer',
+        'Environment :: Console :: Newt',
+        'Environment :: Console :: svgalib',
+        'Environment :: Handhelds/PDA\'s',
+        'Environment :: MacOS X',
+        'Environment :: MacOS X :: Aqua',
+        'Environment :: MacOS X :: Carbon',
+        'Environment :: MacOS X :: Cocoa',
+        'Environment :: No Input/Output (Daemon)',
+        'Environment :: Other Environment',
+        'Environment :: Plugins',
+        'Environment :: Web Environment',
+        'Environment :: Web Environment :: Buffet',
+        'Environment :: Web Environment :: Mozilla',
+        'Environment :: Web Environment :: ToscaWidgets',
+        'Environment :: Win32 (MS Windows)',
+        'Environment :: X11 Applications',
+        'Environment :: X11 Applications :: Gnome',
+        'Environment :: X11 Applications :: GTK',
+        'Environment :: X11 Applications :: KDE',
+        'Environment :: X11 Applications :: Qt',
+        'Framework :: BFG',
+        'Framework :: Buildout',
+        'Framework :: Chandler',
+        'Framework :: CubicWeb',
+        'Framework :: Django',
+        'Framework :: IDLE',
+        'Framework :: Paste',
+        'Framework :: Plone',
+        'Framework :: Pylons',
+        'Framework :: Setuptools Plugin',
+        'Framework :: Trac',
+        'Framework :: TurboGears',
+        'Framework :: TurboGears :: Applications',
+        'Framework :: TurboGears :: Widgets',
+        'Framework :: Twisted',
+        'Framework :: ZODB',
+        'Framework :: Zope2',
+        'Framework :: Zope3',
+        'Intended Audience :: Customer Service',
+        'Intended Audience :: Developers',
+        'Intended Audience :: Education',
+        'Intended Audience :: End Users/Desktop',
+        'Intended Audience :: Financial and Insurance Industry',
+        'Intended Audience :: Healthcare Industry',
+        'Intended Audience :: Information Technology',
+        'Intended Audience :: Legal Industry',
+        'Intended Audience :: Manufacturing',
+        'Intended Audience :: Other Audience',
+        'Intended Audience :: Religion',
+        'Intended Audience :: Science/Research',
+        'Intended Audience :: System Administrators',
+        'Intended Audience :: Telecommunications Industry',
+        'License :: Aladdin Free Public License (AFPL)',
+        'License :: DFSG approved',
+        'License :: Eiffel Forum License (EFL)',
+        'License :: Free For Educational Use',
+        'License :: Free For Home Use',
+        'License :: Free for non-commercial use',
+        'License :: Freely Distributable',
+        'License :: Free To Use But Restricted',
+        'License :: Freeware',
+        'License :: Netscape Public License (NPL)',
+        'License :: Nokia Open Source License (NOKOS)',
+        'License :: OSI Approved',
+        'License :: OSI Approved :: Academic Free License (AFL)',
+        'License :: OSI Approved :: Apache Software License',
+        'License :: OSI Approved :: Apple Public Source License',
+        'License :: OSI Approved :: Artistic License',
+        'License :: OSI Approved :: Attribution Assurance License',
+        'License :: OSI Approved :: BSD License',
+        'License :: OSI Approved :: Common Public License',
+        'License :: OSI Approved :: Eiffel Forum License',
+        'License :: OSI Approved :: European Union Public Licence 1.0 (EUPL 1.0)',
+        'License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)',
+        'License :: OSI Approved :: GNU Affero General Public License v3',
+        'License :: OSI Approved :: GNU Free Documentation License (FDL)',
+        'License :: OSI Approved :: GNU General Public License (GPL)',
+        'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
+        'License :: OSI Approved :: IBM Public License',
+        'License :: OSI Approved :: Intel Open Source License',
+        'License :: OSI Approved :: ISC License (ISCL)',
+        'License :: OSI Approved :: Jabber Open Source License',
+        'License :: OSI Approved :: MIT License',
+        'License :: OSI Approved :: MITRE Collaborative Virtual Workspace License (CVW)',
+        'License :: OSI Approved :: Motosoto License',
+        'License :: OSI Approved :: Mozilla Public License 1.0 (MPL)',
+        'License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)',
+        'License :: OSI Approved :: Nethack General Public License',
+        'License :: OSI Approved :: Nokia Open Source License',
+        'License :: OSI Approved :: Open Group Test Suite License',
+        'License :: OSI Approved :: Python License (CNRI Python License)',
+        'License :: OSI Approved :: Python Software Foundation License',
+        'License :: OSI Approved :: Qt Public License (QPL)',
+        'License :: OSI Approved :: Ricoh Source Code Public License',
+        'License :: OSI Approved :: Sleepycat License',
+        'License :: OSI Approved :: Sun Industry Standards Source License (SISSL)',
+        'License :: OSI Approved :: Sun Public License',
+        'License :: OSI Approved :: University of Illinois/NCSA Open Source License',
+        'License :: OSI Approved :: Vovida Software License 1.0',
+        'License :: OSI Approved :: W3C License',
+        'License :: OSI Approved :: X.Net License',
+        'License :: OSI Approved :: zlib/libpng License',
+        'License :: OSI Approved :: Zope Public License',
+        'License :: Other/Proprietary License',
+        'License :: Public Domain',
+        'License :: Repoze Public License',
+        'Natural Language :: Afrikaans',
+        'Natural Language :: Arabic',
+        'Natural Language :: Bengali',
+        'Natural Language :: Bosnian',
+        'Natural Language :: Bulgarian',
+        'Natural Language :: Catalan',
+        'Natural Language :: Chinese (Simplified)',
+        'Natural Language :: Chinese (Traditional)',
+        'Natural Language :: Croatian',
+        'Natural Language :: Czech',
+        'Natural Language :: Danish',
+        'Natural Language :: Dutch',
+        'Natural Language :: English',
+        'Natural Language :: Esperanto',
+        'Natural Language :: Finnish',
+        'Natural Language :: French',
+        'Natural Language :: German',
+        'Natural Language :: Greek',
+        'Natural Language :: Hebrew',
+        'Natural Language :: Hindi',
+        'Natural Language :: Hungarian',
+        'Natural Language :: Icelandic',
+        'Natural Language :: Indonesian',
+        'Natural Language :: Italian',
+        'Natural Language :: Japanese',
+        'Natural Language :: Javanese',
+        'Natural Language :: Korean',
+        'Natural Language :: Latin',
+        'Natural Language :: Latvian',
+        'Natural Language :: Macedonian',
+        'Natural Language :: Malay',
+        'Natural Language :: Marathi',
+        'Natural Language :: Norwegian',
+        'Natural Language :: Panjabi',
+        'Natural Language :: Persian',
+        'Natural Language :: Polish',
+        'Natural Language :: Portuguese',
+        'Natural Language :: Portuguese (Brazilian)',
+        'Natural Language :: Romanian',
+        'Natural Language :: Russian',
+        'Natural Language :: Serbian',
+        'Natural Language :: Slovak',
+        'Natural Language :: Slovenian',
+        'Natural Language :: Spanish',
+        'Natural Language :: Swedish',
+        'Natural Language :: Tamil',
+        'Natural Language :: Telugu',
+        'Natural Language :: Thai',
+        'Natural Language :: Turkish',
+        'Natural Language :: Ukranian',
+        'Natural Language :: Urdu',
+        'Natural Language :: Vietnamese',
+        'Operating System :: BeOS',
+        'Operating System :: MacOS',
+        'Operating System :: MacOS :: MacOS 9',
+        'Operating System :: MacOS :: MacOS X',
+        'Operating System :: Microsoft',
+        'Operating System :: Microsoft :: MS-DOS',
+        'Operating System :: Microsoft :: Windows',
+        'Operating System :: Microsoft :: Windows :: Windows 3.1 or Earlier',
+        'Operating System :: Microsoft :: Windows :: Windows 95/98/2000',
+        'Operating System :: Microsoft :: Windows :: Windows CE',
+        'Operating System :: Microsoft :: Windows :: Windows NT/2000',
+        'Operating System :: OS/2',
+        'Operating System :: OS Independent',
+        'Operating System :: Other OS',
+        'Operating System :: PalmOS',
+        'Operating System :: PDA Systems',
+        'Operating System :: POSIX',
+        'Operating System :: POSIX :: AIX',
+        'Operating System :: POSIX :: BSD',
+        'Operating System :: POSIX :: BSD :: BSD/OS',
+        'Operating System :: POSIX :: BSD :: FreeBSD',
+        'Operating System :: POSIX :: BSD :: NetBSD',
+        'Operating System :: POSIX :: BSD :: OpenBSD',
+        'Operating System :: POSIX :: GNU Hurd',
+        'Operating System :: POSIX :: HP-UX',
+        'Operating System :: POSIX :: IRIX',
+        'Operating System :: POSIX :: Linux',
+        'Operating System :: POSIX :: Other',
+        'Operating System :: POSIX :: SCO',
+        'Operating System :: POSIX :: SunOS/Solaris',
+        'Operating System :: Unix',
+        'Programming Language :: Ada',
+        'Programming Language :: APL',
+        'Programming Language :: ASP',
+        'Programming Language :: Assembly',
+        'Programming Language :: Awk',
+        'Programming Language :: Basic',
+        'Programming Language :: C',
+        'Programming Language :: C#',
+        'Programming Language :: C++',
+        'Programming Language :: Cold Fusion',
+        'Programming Language :: Cython',
+        'Programming Language :: Delphi/Kylix',
+        'Programming Language :: Dylan',
+        'Programming Language :: Eiffel',
+        'Programming Language :: Emacs-Lisp',
+        'Programming Language :: Erlang',
+        'Programming Language :: Euler',
+        'Programming Language :: Euphoria',
+        'Programming Language :: Forth',
+        'Programming Language :: Fortran',
+        'Programming Language :: Haskell',
+        'Programming Language :: Java',
+        'Programming Language :: JavaScript',
+        'Programming Language :: Lisp',
+        'Programming Language :: Logo',
+        'Programming Language :: ML',
+        'Programming Language :: Modula',
+        'Programming Language :: Objective C',
+        'Programming Language :: Object Pascal',
+        'Programming Language :: OCaml',
+        'Programming Language :: Other',
+        'Programming Language :: Other Scripting Engines',
+        'Programming Language :: Pascal',
+        'Programming Language :: Perl',
+        'Programming Language :: PHP',
+        'Programming Language :: Pike',
+        'Programming Language :: Pliant',
+        'Programming Language :: PL/SQL',
+        'Programming Language :: PROGRESS',
+        'Programming Language :: Prolog',
+        'Programming Language :: Python',
+        'Programming Language :: Python :: 2',
+        'Programming Language :: Python :: 2.3',
+        'Programming Language :: Python :: 2.4',
+        'Programming Language :: Python :: 2.5',
+        'Programming Language :: Python :: 2.6',
+        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.0',
+        'Programming Language :: Python :: 3.1',
+        'Programming Language :: Python :: 3.2',
+        'Programming Language :: REBOL',
+        'Programming Language :: Rexx',
+        'Programming Language :: Ruby',
+        'Programming Language :: Scheme',
+        'Programming Language :: Simula',
+        'Programming Language :: Smalltalk',
+        'Programming Language :: SQL',
+        'Programming Language :: Tcl',
+        'Programming Language :: Unix Shell',
+        'Programming Language :: Visual Basic',
+        'Programming Language :: XBasic',
+        'Programming Language :: YACC',
+        'Programming Language :: Zope',
+        'Topic :: Adaptive Technologies',
+        'Topic :: Artistic Software',
+        'Topic :: Communications',
+        'Topic :: Communications :: BBS',
+        'Topic :: Communications :: Chat',
+        'Topic :: Communications :: Chat :: AOL Instant Messenger',
+        'Topic :: Communications :: Chat :: ICQ',
+        'Topic :: Communications :: Chat :: Internet Relay Chat',
+        'Topic :: Communications :: Chat :: Unix Talk',
+        'Topic :: Communications :: Conferencing',
+        'Topic :: Communications :: Email',
+        'Topic :: Communications :: Email :: Address Book',
+        'Topic :: Communications :: Email :: Email Clients (MUA)',
+        'Topic :: Communications :: Email :: Filters',
+        'Topic :: Communications :: Email :: Mailing List Servers',
+        'Topic :: Communications :: Email :: Mail Transport Agents',
+        'Topic :: Communications :: Email :: Post-Office',
+        'Topic :: Communications :: Email :: Post-Office :: IMAP',
+        'Topic :: Communications :: Email :: Post-Office :: POP3',
+        'Topic :: Communications :: Fax',
+        'Topic :: Communications :: FIDO',
+        'Topic :: Communications :: File Sharing',
+        'Topic :: Communications :: File Sharing :: Gnutella',
+        'Topic :: Communications :: File Sharing :: Napster',
+        'Topic :: Communications :: Ham Radio',
+        'Topic :: Communications :: Internet Phone',
+        'Topic :: Communications :: Telephony',
+        'Topic :: Communications :: Usenet News',
+        'Topic :: Database',
+        'Topic :: Database :: Database Engines/Servers',
+        'Topic :: Database :: Front-Ends',
+        'Topic :: Desktop Environment',
+        'Topic :: Desktop Environment :: File Managers',
+        'Topic :: Desktop Environment :: Gnome',
+        'Topic :: Desktop Environment :: GNUstep',
+        'Topic :: Desktop Environment :: K Desktop Environment (KDE)',
+        'Topic :: Desktop Environment :: K Desktop Environment (KDE) :: Themes',
+        'Topic :: Desktop Environment :: PicoGUI',
+        'Topic :: Desktop Environment :: PicoGUI :: Applications',
+        'Topic :: Desktop Environment :: PicoGUI :: Themes',
+        'Topic :: Desktop Environment :: Screen Savers',
+        'Topic :: Desktop Environment :: Window Managers',
+        'Topic :: Desktop Environment :: Window Managers :: Afterstep',
+        'Topic :: Desktop Environment :: Window Managers :: Afterstep :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: Applets',
+        'Topic :: Desktop Environment :: Window Managers :: Blackbox',
+        'Topic :: Desktop Environment :: Window Managers :: Blackbox :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: CTWM',
+        'Topic :: Desktop Environment :: Window Managers :: CTWM :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: Enlightenment',
+        'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Epplets',
+        'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR15',
+        'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR16',
+        'Topic :: Desktop Environment :: Window Managers :: Enlightenment :: Themes DR17',
+        'Topic :: Desktop Environment :: Window Managers :: Fluxbox',
+        'Topic :: Desktop Environment :: Window Managers :: Fluxbox :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: FVWM',
+        'Topic :: Desktop Environment :: Window Managers :: FVWM :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: IceWM',
+        'Topic :: Desktop Environment :: Window Managers :: IceWM :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: MetaCity',
+        'Topic :: Desktop Environment :: Window Managers :: MetaCity :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: Oroborus',
+        'Topic :: Desktop Environment :: Window Managers :: Oroborus :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: Sawfish',
+        'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes 0.30',
+        'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes pre-0.30',
+        'Topic :: Desktop Environment :: Window Managers :: Waimea',
+        'Topic :: Desktop Environment :: Window Managers :: Waimea :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: Window Maker',
+        'Topic :: Desktop Environment :: Window Managers :: Window Maker :: Applets',
+        'Topic :: Desktop Environment :: Window Managers :: Window Maker :: Themes',
+        'Topic :: Desktop Environment :: Window Managers :: XFCE',
+        'Topic :: Desktop Environment :: Window Managers :: XFCE :: Themes',
+        'Topic :: Documentation',
+        'Topic :: Education',
+        'Topic :: Education :: Computer Aided Instruction (CAI)',
+        'Topic :: Education :: Testing',
+        'Topic :: Games/Entertainment',
+        'Topic :: Games/Entertainment :: Arcade',
+        'Topic :: Games/Entertainment :: Board Games',
+        'Topic :: Games/Entertainment :: First Person Shooters',
+        'Topic :: Games/Entertainment :: Fortune Cookies',
+        'Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)',
+        'Topic :: Games/Entertainment :: Puzzle Games',
+        'Topic :: Games/Entertainment :: Real Time Strategy',
+        'Topic :: Games/Entertainment :: Role-Playing',
+        'Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games',
+        'Topic :: Games/Entertainment :: Simulation',
+        'Topic :: Games/Entertainment :: Turn Based Strategy',
+        'Topic :: Home Automation',
+        'Topic :: Internet',
+        'Topic :: Internet :: File Transfer Protocol (FTP)',
+        'Topic :: Internet :: Finger',
+        'Topic :: Internet :: Log Analysis',
+        'Topic :: Internet :: Name Service (DNS)',
+        'Topic :: Internet :: Proxy Servers',
+        'Topic :: Internet :: WAP',
+        'Topic :: Internet :: WWW/HTTP',
+        'Topic :: Internet :: WWW/HTTP :: Browsers',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters',
+        'Topic :: Internet :: WWW/HTTP :: HTTP Servers',
+        'Topic :: Internet :: WWW/HTTP :: Indexing/Search',
+        'Topic :: Internet :: WWW/HTTP :: Site Management',
+        'Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking',
+        'Topic :: Internet :: WWW/HTTP :: WSGI',
+        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
+        'Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware',
+        'Topic :: Internet :: WWW/HTTP :: WSGI :: Server',
+        'Topic :: Internet :: Z39.50',
+        'Topic :: Multimedia',
+        'Topic :: Multimedia :: Graphics',
+        'Topic :: Multimedia :: Graphics :: 3D Modeling',
+        'Topic :: Multimedia :: Graphics :: 3D Rendering',
+        'Topic :: Multimedia :: Graphics :: Capture',
+        'Topic :: Multimedia :: Graphics :: Capture :: Digital Camera',
+        'Topic :: Multimedia :: Graphics :: Capture :: Scanners',
+        'Topic :: Multimedia :: Graphics :: Capture :: Screen Capture',
+        'Topic :: Multimedia :: Graphics :: Editors',
+        'Topic :: Multimedia :: Graphics :: Editors :: Raster-Based',
+        'Topic :: Multimedia :: Graphics :: Editors :: Vector-Based',
+        'Topic :: Multimedia :: Graphics :: Graphics Conversion',
+        'Topic :: Multimedia :: Graphics :: Presentation',
+        'Topic :: Multimedia :: Graphics :: Viewers',
+        'Topic :: Multimedia :: Sound/Audio',
+        'Topic :: Multimedia :: Sound/Audio :: Analysis',
+        'Topic :: Multimedia :: Sound/Audio :: Capture/Recording',
+        'Topic :: Multimedia :: Sound/Audio :: CD Audio',
+        'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Playing',
+        'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Ripping',
+        'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Writing',
+        'Topic :: Multimedia :: Sound/Audio :: Conversion',
+        'Topic :: Multimedia :: Sound/Audio :: Editors',
+        'Topic :: Multimedia :: Sound/Audio :: MIDI',
+        'Topic :: Multimedia :: Sound/Audio :: Mixers',
+        'Topic :: Multimedia :: Sound/Audio :: Players',
+        'Topic :: Multimedia :: Sound/Audio :: Players :: MP3',
+        'Topic :: Multimedia :: Sound/Audio :: Sound Synthesis',
+        'Topic :: Multimedia :: Sound/Audio :: Speech',
+        'Topic :: Multimedia :: Video',
+        'Topic :: Multimedia :: Video :: Capture',
+        'Topic :: Multimedia :: Video :: Conversion',
+        'Topic :: Multimedia :: Video :: Display',
+        'Topic :: Multimedia :: Video :: Non-Linear Editor',
+        'Topic :: Office/Business',
+        'Topic :: Office/Business :: Financial',
+        'Topic :: Office/Business :: Financial :: Accounting',
+        'Topic :: Office/Business :: Financial :: Investment',
+        'Topic :: Office/Business :: Financial :: Point-Of-Sale',
+        'Topic :: Office/Business :: Financial :: Spreadsheet',
+        'Topic :: Office/Business :: Groupware',
+        'Topic :: Office/Business :: News/Diary',
+        'Topic :: Office/Business :: Office Suites',
+        'Topic :: Office/Business :: Scheduling',
+        'Topic :: Other/Nonlisted Topic',
+        'Topic :: Printing',
+        'Topic :: Religion',
+        'Topic :: Scientific/Engineering',
+        'Topic :: Scientific/Engineering :: Artificial Intelligence',
+        'Topic :: Scientific/Engineering :: Astronomy',
+        'Topic :: Scientific/Engineering :: Atmospheric Science',
+        'Topic :: Scientific/Engineering :: Bio-Informatics',
+        'Topic :: Scientific/Engineering :: Chemistry',
+        'Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)',
+        'Topic :: Scientific/Engineering :: GIS',
+        'Topic :: Scientific/Engineering :: Human Machine Interfaces',
+        'Topic :: Scientific/Engineering :: Image Recognition',
+        'Topic :: Scientific/Engineering :: Information Analysis',
+        'Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator',
+        'Topic :: Scientific/Engineering :: Mathematics',
+        'Topic :: Scientific/Engineering :: Medical Science Apps.',
+        'Topic :: Scientific/Engineering :: Physics',
+        'Topic :: Scientific/Engineering :: Visualization',
+        'Topic :: Security',
+        'Topic :: Security :: Cryptography',
+        'Topic :: Sociology',
+        'Topic :: Sociology :: Genealogy',
+        'Topic :: Sociology :: History',
+        'Topic :: Software Development',
+        'Topic :: Software Development :: Assemblers',
+        'Topic :: Software Development :: Bug Tracking',
+        'Topic :: Software Development :: Build Tools',
+        'Topic :: Software Development :: Code Generators',
+        'Topic :: Software Development :: Compilers',
+        'Topic :: Software Development :: Debuggers',
+        'Topic :: Software Development :: Disassemblers',
+        'Topic :: Software Development :: Documentation',
+        'Topic :: Software Development :: Embedded Systems',
+        'Topic :: Software Development :: Internationalization',
+        'Topic :: Software Development :: Interpreters',
+        'Topic :: Software Development :: Libraries',
+        'Topic :: Software Development :: Libraries :: Application Frameworks',
+        'Topic :: Software Development :: Libraries :: Java Libraries',
+        'Topic :: Software Development :: Libraries :: Perl Modules',
+        'Topic :: Software Development :: Libraries :: PHP Classes',
+        'Topic :: Software Development :: Libraries :: Pike Modules',
+        'Topic :: Software Development :: Libraries :: pygame',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+        'Topic :: Software Development :: Libraries :: Ruby Modules',
+        'Topic :: Software Development :: Libraries :: Tcl Extensions',
+        'Topic :: Software Development :: Localization',
+        'Topic :: Software Development :: Object Brokering',
+        'Topic :: Software Development :: Object Brokering :: CORBA',
+        'Topic :: Software Development :: Pre-processors',
+        'Topic :: Software Development :: Quality Assurance',
+        'Topic :: Software Development :: Testing',
+        'Topic :: Software Development :: Testing :: Traffic Generation',
+        'Topic :: Software Development :: User Interfaces',
+        'Topic :: Software Development :: Version Control',
+        'Topic :: Software Development :: Version Control :: CVS',
+        'Topic :: Software Development :: Version Control :: RCS',
+        'Topic :: Software Development :: Version Control :: SCCS',
+        'Topic :: Software Development :: Widget Sets',
+        'Topic :: System',
+        'Topic :: System :: Archiving',
+        'Topic :: System :: Archiving :: Backup',
+        'Topic :: System :: Archiving :: Compression',
+        'Topic :: System :: Archiving :: Mirroring',
+        'Topic :: System :: Archiving :: Packaging',
+        'Topic :: System :: Benchmark',
+        'Topic :: System :: Boot',
+        'Topic :: System :: Boot :: Init',
+        'Topic :: System :: Clustering',
+        'Topic :: System :: Console Fonts',
+        'Topic :: System :: Distributed Computing',
+        'Topic :: System :: Emulators',
+        'Topic :: System :: Filesystems',
+        'Topic :: System :: Hardware',
+        'Topic :: System :: Hardware :: Hardware Drivers',
+        'Topic :: System :: Hardware :: Mainframes',
+        'Topic :: System :: Hardware :: Symmetric Multi-processing',
+        'Topic :: System :: Installation/Setup',
+        'Topic :: System :: Logging',
+        'Topic :: System :: Monitoring',
+        'Topic :: System :: Networking',
+        'Topic :: System :: Networking :: Firewalls',
+        'Topic :: System :: Networking :: Monitoring',
+        'Topic :: System :: Networking :: Monitoring :: Hardware Watchdog',
+        'Topic :: System :: Networking :: Time Synchronization',
+        'Topic :: System :: Operating System',
+        'Topic :: System :: Operating System Kernels',
+        'Topic :: System :: Operating System Kernels :: BSD',
+        'Topic :: System :: Operating System Kernels :: GNU Hurd',
+        'Topic :: System :: Operating System Kernels :: Linux',
+        'Topic :: System :: Power (UPS)',
+        'Topic :: System :: Recovery Tools',
+        'Topic :: System :: Shells',
+        'Topic :: System :: Software Distribution',
+        'Topic :: System :: Systems Administration',
+        'Topic :: System :: Systems Administration :: Authentication/Directory',
+        'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP',
+        'Topic :: System :: Systems Administration :: Authentication/Directory :: NIS',
+        'Topic :: System :: System Shells',
+        'Topic :: Terminals',
+        'Topic :: Terminals :: Serial',
+        'Topic :: Terminals :: Telnet',
+        'Topic :: Terminals :: Terminal Emulators/X Terminals',
+        'Topic :: Text Editors',
+        'Topic :: Text Editors :: Documentation',
+        'Topic :: Text Editors :: Emacs',
+        'Topic :: Text Editors :: Integrated Development Environments (IDE)',
+        'Topic :: Text Editors :: Text Processing',
+        'Topic :: Text Editors :: Word Processors',
+        'Topic :: Text Processing',
+        'Topic :: Text Processing :: Filters',
+        'Topic :: Text Processing :: Fonts',
+        'Topic :: Text Processing :: General',
+        'Topic :: Text Processing :: Indexing',
+        'Topic :: Text Processing :: Linguistic',
+        'Topic :: Text Processing :: Markup',
+        'Topic :: Text Processing :: Markup :: HTML',
+        'Topic :: Text Processing :: Markup :: LaTeX',
+        'Topic :: Text Processing :: Markup :: SGML',
+        'Topic :: Text Processing :: Markup :: VRML',
+        'Topic :: Text Processing :: Markup :: XML',
+        'Topic :: Utilities',
    ]
 
 def askYn(question, default = None, helptext = None):
-	while True:
-		answer = ask(question, default, helptext, required = True)
-		if answer and answer[0].lower() in 'yn':
-			return(answer[0].lower())
+    while True:
+        answer = ask(question, default, helptext, required = True)
+        if answer and answer[0].lower() in 'yn':
+            return(answer[0].lower())
 
-		print '\nERROR: You must select "Y" or "N".\n'
+        print '\nERROR: You must select "Y" or "N".\n'
 
 
 def ask(question, default = None, helptext = None, required = True,
         lengthy = False, multiline = False):
-	prompt = '%s: ' % ( question, )
-	if default:
-		prompt = '%s [%s]: ' % ( question, default )
-		if default and len(question) + len(default) > 70:
-			prompt = '%s\n    [%s]: ' % ( question, default )
-	if lengthy or multiline:
-		prompt += '\n   >'
+    prompt = '%s: ' % ( question, )
+    if default:
+        prompt = '%s [%s]: ' % ( question, default )
+        if default and len(question) + len(default) > 70:
+            prompt = '%s\n    [%s]: ' % ( question, default )
+    if lengthy or multiline:
+        prompt += '\n   >'
 
-	if not helptext: helptext = 'No additional help available.'
-	if helptext[0] == '\n': helptext = helptext[1:]
-	if helptext[-1] == '\n': helptext = helptext[:-1]
+    if not helptext: helptext = 'No additional help available.'
+    if helptext[0] == '\n': helptext = helptext[1:]
+    if helptext[-1] == '\n': helptext = helptext[:-1]
 
-	while True:
-		sys.stdout.write(prompt)
-		sys.stdout.flush()
+    while True:
+        sys.stdout.write(prompt)
+        sys.stdout.flush()
 
-		line = sys.stdin.readline().strip()
-		if line == '?':
-			print '=' * 70
-			print helptext
-			print '=' * 70
-			continue
-		if default and not line: return(default)
-		if not line and required:
-			print '*' * 70
-			print 'This value cannot be empty.'
-			print '==========================='
-			if helptext: print helptext
-			print '*' * 70
-			continue
-		return(line)
+        line = sys.stdin.readline().strip()
+        if line == '?':
+            print '=' * 70
+            print helptext
+            print '=' * 70
+            continue
+        if default and not line: return(default)
+        if not line and required:
+            print '*' * 70
+            print 'This value cannot be empty.'
+            print '==========================='
+            if helptext: print helptext
+            print '*' * 70
+            continue
+        return(line)
 
 
 def buildTroveDict(troveList):
-	dict = {}
-	for key in troveList:
-		subDict = dict
-		for subkey in key.split(' :: '):
-			if not subkey in subDict: subDict[subkey] = {}
-			subDict = subDict[subkey]
-	return(dict)
+    dict = {}
+    for key in troveList:
+        subDict = dict
+        for subkey in key.split(' :: '):
+            if not subkey in subDict: subDict[subkey] = {}
+            subDict = subDict[subkey]
+    return(dict)
 troveDict = buildTroveDict(troveList)
 
 
 class SetupClass:
-	def __init__(self):
-		self.config = None
-		self.classifierDict = {}
-		self.setupData = {}
-		self.setupData['classifier'] = self.classifierDict
-		self.setupData['packages'] = {}
+    def __init__(self):
+        self.config = None
+        self.classifierDict = {}
+        self.setupData = {}
+        self.setupData['classifier'] = self.classifierDict
+        self.setupData['packages'] = {}
 
-		self.loadConfigFile()
+        self.loadConfigFile()
 
 
-	def lookupOption(self, key):
-		if not self.config.has_option('DEFAULT', key): return(None)
-		return(self.config.get('DEFAULT', key))
+    def lookupOption(self, key):
+        if not self.config.has_option('DEFAULT', key): return(None)
+        return(self.config.get('DEFAULT', key))
 
 
-	def loadConfigFile(self):
-		self.config = ConfigParser.RawConfigParser()
-		self.config.read(os.path.expanduser('~/.mkpkgpy'))
-		self.setupData['author'] = self.lookupOption('author')
-		self.setupData['author_email'] = self.lookupOption('author_email')
+    def loadConfigFile(self):
+        self.config = ConfigParser.RawConfigParser()
+        self.config.read(os.path.expanduser('~/.mkpkgpy'))
+        self.setupData['author'] = self.lookupOption('author')
+        self.setupData['author_email'] = self.lookupOption('author_email')
 
 
-	def updateConfigFile(self):
-		valuesDifferent = False
-		for compareKey in ('author', 'author_email'):
-			if self.lookupOption(compareKey) != self.setupData[compareKey]:
-				valuesDifferent = True
-				self.config.set('DEFAULT', compareKey, self.setupData[compareKey])
+    def updateConfigFile(self):
+        valuesDifferent = False
+        for compareKey in ('author', 'author_email'):
+            if self.lookupOption(compareKey) != self.setupData[compareKey]:
+                valuesDifferent = True
+                self.config.set('DEFAULT', compareKey, self.setupData[compareKey])
 
-		if not valuesDifferent: return
+        if not valuesDifferent: return
 
-		self.config.write(open(os.path.expanduser('~/.pygiver'), 'w'))
+        self.config.write(open(os.path.expanduser('~/.pygiver'), 'w'))
 
 
-	def loadExistingSetup(self):
-		raise NotImplementedError
+    def loadExistingSetup(self):
+        raise NotImplementedError
 
 
-	def inspectFile(self, path):
-		fp = open(path, 'r')
-		for line in [ fp.readline() for x in range(10) ]:
-			m = re.match(r'^#!.*python((?P<major>\d)(\.\d+)?)?$', line)
-			if m:
-				if m.group('major') == '3':
-					self.classifierDict['Programming Language :: Python :: 3'] = 1
-				else:
-					self.classifierDict['Programming Language :: Python :: 2'] = 1
-		fp.close()
+    def inspectFile(self, path):
+        fp = open(path, 'r')
+        for line in [ fp.readline() for x in range(10) ]:
+            m = re.match(r'^#!.*python((?P<major>\d)(\.\d+)?)?$', line)
+            if m:
+                if m.group('major') == '3':
+                    self.classifierDict['Programming Language :: Python :: 3'] = 1
+                else:
+                    self.classifierDict['Programming Language :: Python :: 2'] = 1
+        fp.close()
 
 
-	def inspectDirectory(self):
-		dirName = os.path.basename(os.getcwd())
-		self.setupData['name'] = dirName
-		m = re.match(r'(.*)-(\d.+)', dirName)
-		if m:
-			self.setupData['name'] = m.group(1)
-			self.setupData['version'] = m.group(2)
+    def inspectDirectory(self):
+        dirName = os.path.basename(os.getcwd())
+        self.setupData['name'] = dirName
+        m = re.match(r'(.*)-(\d.+)', dirName)
+        if m:
+            self.setupData['name'] = m.group(1)
+            self.setupData['version'] = m.group(2)
 
-		for root, dirs, files in os.walk('.'):
-			for file in files:
-				if root == '.' and file == 'setup.py': continue
-				fileName = os.path.join(root, file)
-				self.inspectFile(fileName)
+        for root, dirs, files in os.walk('.'):
+            for file in files:
+                if root == '.' and file == 'setup.py': continue
+                fileName = os.path.join(root, file)
+                self.inspectFile(fileName)
 
-				if file == '__init__.py':
-					trySrc = os.path.join('.', 'src')
-					tmpRoot = root
-					if tmpRoot.startswith(trySrc):
-						tmpRoot = tmpRoot[len(trySrc):]
-					if tmpRoot.startswith(os.path.sep):
-						tmpRoot = tmpRoot[len(os.path.sep):]
+                if file == '__init__.py':
+                    trySrc = os.path.join('.', 'src')
+                    tmpRoot = root
+                    if tmpRoot.startswith(trySrc):
+                        tmpRoot = tmpRoot[len(trySrc):]
+                    if tmpRoot.startswith(os.path.sep):
+                        tmpRoot = tmpRoot[len(os.path.sep):]
 
-					self.setupData['packages'][tmpRoot] = root[1 + len(os.path.sep):]
+                    self.setupData['packages'][tmpRoot] = root[1 + len(os.path.sep):]
 
 
-	def queryUser(self):
-		self.setupData['name'] = ask('Package name', self.setupData['name'],
-		      helpText['name'])
-		self.setupData['version'] = ask('Current version number',
-		      self.setupData.get('version'), helpText['version'])
-		self.setupData['description'] = ask('Package description',
-		      self.setupData.get('description'), helpText['description'],
-		      lengthy = True)
-		self.setupData['author'] = ask('Author name',
-		      self.setupData.get('author'), helpText['author'])
-		self.setupData['author_email'] = ask('Author e-mail address',
-		      self.setupData.get('author_email'), helpText['author_email'])
-		self.setupData['url'] = ask('Project URL',
-		      self.setupData.get('url'), helpText['url'], required = False)
+    def queryUser(self):
+        self.setupData['name'] = ask('Package name', self.setupData['name'],
+              helpText['name'])
+        self.setupData['version'] = ask('Current version number',
+              self.setupData.get('version'), helpText['version'])
+        self.setupData['description'] = ask('Package description',
+              self.setupData.get('description'), helpText['description'],
+              lengthy = True)
+        self.setupData['author'] = ask('Author name',
+              self.setupData.get('author'), helpText['author'])
+        self.setupData['author_email'] = ask('Author e-mail address',
+              self.setupData.get('author_email'), helpText['author_email'])
+        self.setupData['url'] = ask('Project URL',
+              self.setupData.get('url'), helpText['url'], required = False)
 
-		if (askYn('Do you want to set Trove classifiers?',
-				helptext = helpText['do_classifier']) == 'y'):
-			self.setTroveClassifier()
+        if (askYn('Do you want to set Trove classifiers?',
+                helptext = helpText['do_classifier']) == 'y'):
+            self.setTroveClassifier()
 
 
-	def setTroveClassifier(self):
-		self.setTroveDevStatus(self.classifierDict)
-		self.setTroveLicense(self.classifierDict)
-		self.setTroveOther(self.classifierDict)
+    def setTroveClassifier(self):
+        self.setTroveDevStatus(self.classifierDict)
+        self.setTroveLicense(self.classifierDict)
+        self.setTroveOther(self.classifierDict)
 
 
-	def setTroveOther(self, classifierDict):
-		if askYn('Do you want to set other trove identifiers', 'n',
-				helpText['trove_generic']) != 'y': return
+    def setTroveOther(self, classifierDict):
+        if askYn('Do you want to set other trove identifiers', 'n',
+                helpText['trove_generic']) != 'y': return
 
-		self.walkTrove(classifierDict, [troveDict], '')
-	
-	def walkTrove(self, classifierDict, trovePath, desc):
-		trove = trovePath[-1]
+        self.walkTrove(classifierDict, [troveDict], '')
+    
+    def walkTrove(self, classifierDict, trovePath, desc):
+        trove = trovePath[-1]
 
-		if not trove:
-			return
+        if not trove:
+            return
 
-		for key in sorted(trove.keys()):
-			if len(trove[key]) == 0:
-				if askYn('Add "%s"' % desc[4:] + ' :: ' + key, 'n') == 'y':
-					classifierDict[desc[4:] + ' :: ' + key] = 1
-				continue
+        for key in sorted(trove.keys()):
+            if len(trove[key]) == 0:
+                if askYn('Add "%s"' % desc[4:] + ' :: ' + key, 'n') == 'y':
+                    classifierDict[desc[4:] + ' :: ' + key] = 1
+                continue
 
-			if askYn('Do you want to set items under\n   "%s" (%d sub-items)'
-					% ( key, len(trove[key]) ), 'n',
-					helpText['trove_generic']) == 'y':
-				self.walkTrove(classifierDict, trovePath + [trove[key]],
-						desc + ' :: ' + key)
+            if askYn('Do you want to set items under\n   "%s" (%d sub-items)'
+                    % ( key, len(trove[key]) ), 'n',
+                    helpText['trove_generic']) == 'y':
+                self.walkTrove(classifierDict, trovePath + [trove[key]],
+                        desc + ' :: ' + key)
 
 
-	def setTroveLicense(self, classifierDict):
-		while True:
-			license = ask('What license do you use',
-			      helptext = helpText['trove_license'], required = False)
-			if not license: return
+    def setTroveLicense(self, classifierDict):
+        while True:
+            license = ask('What license do you use',
+                  helptext = helpText['trove_license'], required = False)
+            if not license: return
 
-			licenseWords = license.lower().split(' ')
+            licenseWords = license.lower().split(' ')
 
-			foundList = []
-			for index in range(len(troveList)):
-				troveItem = troveList[index]
-				if not troveItem.startswith('License :: '): continue
-				troveItem = troveItem[11:].lower()
+            foundList = []
+            for index in range(len(troveList)):
+                troveItem = troveList[index]
+                if not troveItem.startswith('License :: '): continue
+                troveItem = troveItem[11:].lower()
 
-				allMatch = True
-				for word in licenseWords:
-					if not word in troveItem:
-						allMatch = False
-						break
-				if allMatch: foundList.append(index)
+                allMatch = True
+                for word in licenseWords:
+                    if not word in troveItem:
+                        allMatch = False
+                        break
+                if allMatch: foundList.append(index)
 
-			question = 'Matching licenses:\n\n'
-			for i in xrange(1, len(foundList) + 1):
-				question += '   %s) %s\n' % ( i, troveList[foundList[i - 1]] )
-			question += ('\nType the number of the license you wish to use or '
-			         '? to try again:')
-			troveLicense = ask(question, required = False)
+            question = 'Matching licenses:\n\n'
+            for i in xrange(1, len(foundList) + 1):
+                question += '   %s) %s\n' % ( i, troveList[foundList[i - 1]] )
+            question += ('\nType the number of the license you wish to use or '
+                     '? to try again:')
+            troveLicense = ask(question, required = False)
 
-			if troveLicense == '?': continue
-			if troveLicense == '': return
-			foundIndex = foundList[int(troveLicense) - 1]
-			classifierDict[troveList[foundIndex]] = 1
-			try:
-				return
-			except IndexError:
-				print 'ERROR: Invalid selection, type a number from the list above.'
+            if troveLicense == '?': continue
+            if troveLicense == '': return
+            foundIndex = foundList[int(troveLicense) - 1]
+            classifierDict[troveList[foundIndex]] = 1
+            try:
+                return
+            except IndexError:
+                print 'ERROR: Invalid selection, type a number from the list above.'
 
 
-	def setTroveDevStatus(self, classifierDict):
-		while True:
-			devStatus = ask('''Please select the project status:
+    def setTroveDevStatus(self, classifierDict):
+        while True:
+            devStatus = ask('''Please select the project status:
 
 1 - Planning
 2 - Pre-Alpha
@@ -851,71 +851,79 @@
 7 - Inactive
 
 Status''', required = False)
-			if devStatus:
-				try:
-					key = {
-						   '1' : 'Development Status :: 1 - Planning',
-						   '2' : 'Development Status :: 2 - Pre-Alpha',
-						   '3' : 'Development Status :: 3 - Alpha',
-						   '4' : 'Development Status :: 4 - Beta',
-						   '5' : 'Development Status :: 5 - Production/Stable',
-						   '6' : 'Development Status :: 6 - Mature',
-						   '7' : 'Development Status :: 7 - Inactive',
-						   }[devStatus]
-					classifierDict[key] = 1
-					return
-				except KeyError:
-					print 'ERROR: Invalid selection, type a single digit number.'
+            if devStatus:
+                try:
+                    key = {
+                           '1' : 'Development Status :: 1 - Planning',
+                           '2' : 'Development Status :: 2 - Pre-Alpha',
+                           '3' : 'Development Status :: 3 - Alpha',
+                           '4' : 'Development Status :: 4 - Beta',
+                           '5' : 'Development Status :: 5 - Production/Stable',
+                           '6' : 'Development Status :: 6 - Mature',
+                           '7' : 'Development Status :: 7 - Inactive',
+                           }[devStatus]
+                    classifierDict[key] = 1
+                    return
+                except KeyError:
+                    print 'ERROR: Invalid selection, type a single digit number.'
 
+    def _dotted_packages(self, data):
+        packages = sorted(data.keys())
+        modified_pkgs = []
+        for pkg in packages:
+            pkg = pkg.lstrip('./')
+            pkg = pkg.replace('/', '.')
+            modified_pkgs.append(pkg)
+        return modified_pkgs
 
-	def writeSetup(self):
-		if os.path.exists('setup.py'): shutil.move('setup.py', 'setup.py.old')
+    def writeSetup(self):
+        if os.path.exists('setup.py'): shutil.move('setup.py', 'setup.py.old')
 
-		fp = open('setup.py', 'w')
-		fp.write('#!/usr/bin/env python\n\n')
-		fp.write('from distutils2.core import setup\n\n')
+        fp = open('setup.py', 'w')
+        fp.write('#!/usr/bin/env python\n\n')
+        fp.write('from distutils2.core import setup\n\n')
 
-		fp.write('from sys import version\n')
-		fp.write('if version < \'2.2.3\':\n')
-		fp.write('    from distutils2.dist import DistributionMetadata\n')
-		fp.write('    DistributionMetadata.classifier = None\n')
-		fp.write('    DistributionMetadata.download_url = None\n')
+        fp.write('from sys import version\n')
+        fp.write('if version < \'2.2.3\':\n')
+        fp.write('    from distutils2.dist import DistributionMetadata\n')
+        fp.write('    DistributionMetadata.classifier = None\n')
+        fp.write('    DistributionMetadata.download_url = None\n')
 
-		fp.write('setup(name = %s,\n' % repr(self.setupData['name']))
-		fp.write('        version = %s,\n' % repr(self.setupData['version']))
-		fp.write('        description = %s,\n'
-				% repr(self.setupData['description']))
-		fp.write('        author = %s,\n' % repr(self.setupData['author']))
-		fp.write('        author_email = %s,\n'
-				% repr(self.setupData['author_email']))
-		if self.setupData['url']:
-			fp.write('        url = %s,\n' % repr(self.setupData['url']))
-		if self.setupData['classifier']:
-			fp.write('        classifier = [\n')
-			for classifier in sorted(self.setupData['classifier'].keys()):
-				fp.write('              %s,\n' % repr(classifier))
-			fp.write('           ],\n')
-		if self.setupData['packages']:
-			fp.write('        packages = %s,\n'
-					% repr(sorted(self.setupData['packages'].keys())))
-			fp.write('        package_dir = %s,\n'
-					% repr(self.setupData['packages']))
-		fp.write('        #scripts = [\'path/to/script\']\n')
+        fp.write('setup(name = %s,\n' % repr(self.setupData['name']))
+        fp.write('        version = %s,\n' % repr(self.setupData['version']))
+        fp.write('        description = %s,\n'
+                % repr(self.setupData['description']))
+        fp.write('        author = %s,\n' % repr(self.setupData['author']))
+        fp.write('        author_email = %s,\n'
+                % repr(self.setupData['author_email']))
+        if self.setupData['url']:
+            fp.write('        url = %s,\n' % repr(self.setupData['url']))
+        if self.setupData['classifier']:
+            fp.write('        classifier = [\n')
+            for classifier in sorted(self.setupData['classifier'].keys()):
+                fp.write('              %s,\n' % repr(classifier))
+            fp.write('           ],\n')
+        if self.setupData['packages']:
+            fp.write('        packages = %s,\n'
+                    % repr(self._dotted_packages(self.setupData['packages'])))
+            fp.write('        package_dir = %s,\n'
+                    % repr(self.setupData['packages']))
+        fp.write('        #scripts = [\'path/to/script\']\n')
 
-		fp.write('        )\n')
-		fp.close()
-		os.chmod('setup.py', 0755)
+        fp.write('        )\n')
+        fp.close()
+        os.chmod('setup.py', 0755)
 
-		print 'Wrote "setup.py".'
+        print 'Wrote "setup.py".'
 
 
 def main():
-	setup = SetupClass()
-	setup.inspectDirectory()
-	setup.queryUser()
-	setup.updateConfigFile()
-	setup.writeSetup()
+    setup = SetupClass()
+    setup.inspectDirectory()
+    setup.queryUser()
+    setup.updateConfigFile()
+    setup.writeSetup()
 
 
 if __name__ == '__main__':
-	main()
+    main()

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list