diff options
Diffstat (limited to 'setup.py')
-rwxr-xr-x | setup.py | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/setup.py b/setup.py new file mode 100755 index 000000000..84032bdac --- /dev/null +++ b/setup.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python +# $Id$ +# Copyright: This file has been placed in the public domain. + +import sys +import os +import glob +from distutils.core import setup +from distutils.command.build_py import build_py + +# From <http://groups.google.de/groups?as_umsgid=f70e3538.0404141327.6cea58ca@posting.google.com>. +from distutils.command.install import INSTALL_SCHEMES +for scheme in INSTALL_SCHEMES.values(): + scheme['data'] = scheme['purelib'] + + +def do_setup(): + kwargs = package_data.copy() + extras = get_extras() + if extras: + kwargs['py_modules'] = extras + if sys.hexversion >= 0x02030000: # Python 2.3 + kwargs['classifiers'] = classifiers + else: + kwargs['cmdclass'] = {'build_py': dual_build_py} + dist = setup(**kwargs) + return dist + +s5_theme_files = [] +for dir in glob.glob('docutils/writers/s5_html/themes/*'): + if os.path.isdir(dir): + theme_files = glob.glob('%s/*' % dir) + s5_theme_files.append((dir, theme_files)) + +package_data = { + 'name': 'docutils', + 'description': 'Docutils -- Python Documentation Utilities', + 'long_description': """\ +Docutils is a modular system for processing documentation +into useful formats, such as HTML, XML, and LaTeX. For +input Docutils supports reStructuredText, an easy-to-read, +what-you-see-is-what-you-get plaintext markup syntax.""", # wrap at col 60 + 'url': 'http://docutils.sourceforge.net/', + 'version': '0.4', + 'author': 'David Goodger', + 'author_email': 'goodger@users.sourceforge.net', + 'license': 'public domain, Python, BSD, GPL (see COPYING.txt)', + 'platforms': 'OS-independent', + 'package_dir': {'docutils': 'docutils', '': 'extras'}, + 'packages': ['docutils', + 'docutils.languages', + 'docutils.parsers', + 'docutils.parsers.rst', + 'docutils.parsers.rst.directives', + 'docutils.parsers.rst.languages', + 'docutils.readers', + 'docutils.readers.python', + 'docutils.transforms', + 'docutils.writers', + 'docutils.writers.html4css1', + 'docutils.writers.pep_html', + 'docutils.writers.s5_html', + 'docutils.writers.latex2e', + 'docutils.writers.newlatex2e'], + 'data_files': ([('docutils/parsers/rst/include', + glob.glob('docutils/parsers/rst/include/*.txt')), + ('docutils/writers/html4css1', + ['docutils/writers/html4css1/html4css1.css']), + ('docutils/writers/latex2e', + ['docutils/writers/latex2e/latex2e.tex']), + ('docutils/writers/newlatex2e', + ['docutils/writers/newlatex2e/base.tex']), + ('docutils/writers/pep_html', + ['docutils/writers/pep_html/pep.css', + 'docutils/writers/pep_html/template.txt']), + ('docutils/writers/s5_html/themes', + ['docutils/writers/s5_html/themes/README.txt']),] + + s5_theme_files), + 'scripts' : ['tools/rst2html.py', + 'tools/rst2s5.py', + 'tools/rst2latex.py', + 'tools/rst2newlatex.py', + 'tools/rst2xml.py', + 'tools/rst2pseudoxml.py'],} +"""Distutils setup parameters.""" + +classifiers = [ + 'Development Status :: 3 - Alpha', + 'Environment :: Console', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Other Audience', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'License :: Public Domain', + 'License :: OSI Approved :: Python Software Foundation License', + 'License :: OSI Approved :: BSD License', + 'License :: OSI Approved :: GNU General Public License (GPL)', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Topic :: Documentation', + 'Topic :: Software Development :: Documentation', + 'Topic :: Text Processing', + 'Natural Language :: English', # main/default language, keep first + 'Natural Language :: Afrikaans', + 'Natural Language :: Esperanto', + 'Natural Language :: French', + 'Natural Language :: German', + 'Natural Language :: Italian', + 'Natural Language :: Russian', + 'Natural Language :: Slovak', + 'Natural Language :: Spanish', + 'Natural Language :: Swedish',] +"""Trove classifiers for the Distutils "register" command; +Python 2.3 and up.""" + +extra_modules = [('optparse', '1.4.1', None), + ('textwrap', None, None), + ('roman', '1.4', ['toRoman', 'fromRoman', + 'InvalidRomanNumeralError'])] +"""Third-party modules to install if they're not already present. +List of (module name, minimum __version__ string, [attribute names]).""" + +def get_extras(): + extras = [] + for module_name, version, attributes in extra_modules: + try: + module = __import__(module_name) + if version and module.__version__ < version: + raise ValueError + for attribute in attributes or []: + getattr(module, attribute) + print ('"%s" module already present; ignoring extras/%s.py.' + % (module_name, module_name)) + except (ImportError, AttributeError, ValueError): + extras.append(module_name) + return extras + + +class dual_build_py(build_py): + + """ + This class allows the distribution of both packages *and* modules with one + call to `distutils.core.setup()` (necessary for pre-2.3 Python). Thanks + to Thomas Heller. + """ + + def run(self): + if not self.py_modules and not self.packages: + return + if self.py_modules: + self.build_modules() + if self.packages: + self.build_packages() + self.byte_compile(self.get_outputs(include_bytecode=0)) + + +if __name__ == '__main__' : + do_setup() |