trivial: Cleanup setup.py
[docutils.git] / docutils / setup.py
bloba94e688f7daf751d6c7d7620a54f2449ddd89ee1
1 #!/usr/bin/env python
2 # $Id$
3 # Copyright: This file has been placed in the public domain.
5 from __future__ import print_function
7 import sys
8 import os
9 import glob
11 try:
12 import setuptools
13 from distutils.core import setup, Command
14 from distutils.command.build import build
15 from distutils.command.build_py import build_py
16 from distutils.command.install_data import install_data
17 from distutils.util import convert_path
18 from distutils import log
19 except ImportError:
20 print('Error: The "distutils" standard module, which is required for the ')
21 print('installation of Docutils, could not be found. You may need to ')
22 print('install a package called "python-devel" (or similar) on your ')
23 print('system using your package manager.')
24 sys.exit(1)
27 class smart_install_data(install_data):
28 # From <http://wiki.python.org/moin/DistutilsInstallDataScattered>,
29 # by Pete Shinners.
31 def run(self):
32 # need to change self.install_dir to the library dir
33 install_cmd = self.get_finalized_command('install')
34 self.install_dir = getattr(install_cmd, 'install_lib')
35 return install_data.run(self)
38 class build_data(Command):
40 def initialize_options(self):
41 pass
43 def finalize_options(self):
44 pass
46 def run(self):
47 build_py_cmd = self.get_finalized_command('build_py')
48 data_files = self.distribution.data_files
49 for f in data_files:
50 dir = convert_path(f[0])
51 dir = os.path.join(build_py_cmd.build_lib, dir)
52 self.mkpath(dir)
53 for data in f[1]:
54 data = convert_path(data)
55 self.copy_file(data, dir)
58 # let our build_data run
59 build.sub_commands.append(('build_data', lambda *a: True))
62 s5_theme_files = []
63 for dir in glob.glob('docutils/writers/s5_html/themes/*'):
64 if os.path.isdir(dir):
65 theme_files = glob.glob('%s/*' % dir)
66 s5_theme_files.append((dir, theme_files))
69 package_data = {
70 'name': 'docutils',
71 'description': 'Docutils -- Python Documentation Utilities',
72 'long_description': """\
73 Docutils is a modular system for processing documentation
74 into useful formats, such as HTML, XML, and LaTeX. For
75 input Docutils supports reStructuredText, an easy-to-read,
76 what-you-see-is-what-you-get plaintext markup syntax.""", # wrap at col 60
77 'url': 'http://docutils.sourceforge.net/',
78 'version': '0.16b.dev',
79 'author': 'David Goodger',
80 'author_email': 'goodger@python.org',
81 'maintainer': 'docutils-develop list',
82 'maintainer_email': 'docutils-develop@lists.sourceforge.net',
83 'license': 'public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)',
84 'platforms': 'OS-independent',
85 'python_requires': '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
86 'cmdclass': {
87 'build_data': build_data,
88 'install_data': smart_install_data,
90 'package_dir': {
91 'docutils': 'docutils',
92 'docutils.tools': 'tools'
94 'packages': [
95 'docutils',
96 'docutils.languages',
97 'docutils.parsers',
98 'docutils.parsers.rst',
99 'docutils.parsers.rst.directives',
100 'docutils.parsers.rst.languages',
101 'docutils.readers',
102 'docutils.transforms',
103 'docutils.utils',
104 'docutils.utils.math',
105 'docutils.writers',
106 'docutils.writers.html4css1',
107 'docutils.writers.html5_polyglot',
108 'docutils.writers.pep_html',
109 'docutils.writers.s5_html',
110 'docutils.writers.latex2e',
111 'docutils.writers.xetex',
112 'docutils.writers.odf_odt',
114 'data_files': [
115 ('docutils/parsers/rst/include',
116 glob.glob('docutils/parsers/rst/include/*.txt')),
117 ('docutils/writers/html5_polyglot', [
118 'docutils/writers/html5_polyglot/minimal.css',
119 'docutils/writers/html5_polyglot/plain.css',
120 'docutils/writers/html5_polyglot/math.css',
121 'docutils/writers/html5_polyglot/template.txt']),
122 ('docutils/writers/html4css1', [
123 'docutils/writers/html4css1/html4css1.css',
124 'docutils/writers/html4css1/template.txt']),
125 ('docutils/writers/latex2e', [
126 'docutils/writers/latex2e/default.tex',
127 'docutils/writers/latex2e/titlepage.tex',
128 'docutils/writers/latex2e/xelatex.tex']),
129 ('docutils/writers/pep_html', [
130 'docutils/writers/pep_html/pep.css',
131 'docutils/writers/pep_html/template.txt']),
132 ('docutils/writers/s5_html/themes', [
133 'docutils/writers/s5_html/themes/README.txt']),
134 ('docutils/writers/odf_odt', ['docutils/writers/odf_odt/styles.odt']),
135 ] + s5_theme_files,
136 'scripts': [
137 'tools/rst2html.py',
138 'tools/rst2html4.py',
139 'tools/rst2html5.py',
140 'tools/rst2s5.py',
141 'tools/rst2latex.py',
142 'tools/rst2xetex.py',
143 'tools/rst2man.py',
144 'tools/rst2xml.py',
145 'tools/rst2pseudoxml.py',
146 'tools/rstpep2html.py',
147 'tools/rst2odt.py',
148 'tools/rst2odt_prepstyles.py',
150 # BUG pypi did not like following languages
151 # 'Natural Language :: Lithuanian',
152 'classifiers': [
153 'Development Status :: 4 - Beta',
154 'Environment :: Console',
155 'Intended Audience :: End Users/Desktop',
156 'Intended Audience :: Other Audience',
157 'Intended Audience :: Developers',
158 'Intended Audience :: System Administrators',
159 'License :: Public Domain',
160 'License :: OSI Approved :: Python Software Foundation License',
161 'License :: OSI Approved :: BSD License',
162 'License :: OSI Approved :: GNU General Public License (GPL)',
163 'Operating System :: OS Independent',
164 'Programming Language :: Python :: 2',
165 'Programming Language :: Python :: 2.7',
166 'Programming Language :: Python :: 3',
167 'Programming Language :: Python :: 3.5',
168 'Programming Language :: Python :: 3.6',
169 'Programming Language :: Python :: 3.7',
170 'Topic :: Documentation',
171 'Topic :: Software Development :: Documentation',
172 'Topic :: Text Processing',
173 'Natural Language :: English', # main/default language, keep first
174 'Natural Language :: Afrikaans',
175 'Natural Language :: Catalan',
176 'Natural Language :: Chinese (Simplified)',
177 'Natural Language :: Chinese (Traditional)',
178 'Natural Language :: Czech',
179 'Natural Language :: Dutch',
180 'Natural Language :: Esperanto',
181 'Natural Language :: Finnish',
182 'Natural Language :: French',
183 'Natural Language :: Galician',
184 'Natural Language :: German',
185 'Natural Language :: Italian',
186 'Natural Language :: Japanese',
187 'Natural Language :: Polish',
188 'Natural Language :: Portuguese (Brazilian)',
189 'Natural Language :: Russian',
190 'Natural Language :: Slovak',
191 'Natural Language :: Spanish',
192 'Natural Language :: Swedish',
195 """Distutils setup parameters."""
198 def do_setup():
199 # Install data files properly.
200 dist = setup(**package_data)
201 return dist
204 if __name__ == '__main__':
205 do_setup()