1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#!/usr/bin/env python
# $Id$
# Copyright: This file has been placed in the public domain.
import sys
import os
from distutils.core import setup
from distutils.command.build_py import build_py
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
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.3.7',
'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',],
'scripts' : ['tools/rst2html.py','tools/rst2latex.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()
|