Mercurial > babel > old > mirror
diff 0.8.x/setup.py @ 142:4a7af44e6695 stable
Create branch for 0.8.x releases.
author | cmlenz |
---|---|
date | Wed, 20 Jun 2007 10:09:07 +0000 |
parents | |
children | 554d7e8462de |
line wrap: on
line diff
new file mode 100755 --- /dev/null +++ b/0.8.x/setup.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2007 Edgewall Software +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at http://babel.edgewall.org/wiki/License. +# +# This software consists of voluntary contributions made by many +# individuals. For the exact contribution history, see the revision +# history and logs, available at http://babel.edgewall.org/log/. + +from distutils.cmd import Command +import doctest +from glob import glob +import os +try: + from setuptools import setup +except ImportError: + from distutils.core import setup +import sys + + +class build_doc(Command): + description = 'Builds the documentation' + user_options = [ + ('force', None, + "force regeneration even if no reStructuredText files have changed"), + ('without-apidocs', None, + "whether to skip the generation of API documentaton"), + ] + boolean_options = ['force', 'without-apidocs'] + + def initialize_options(self): + self.force = False + self.without_apidocs = False + + def finalize_options(self): + pass + + def run(self): + from docutils.core import publish_cmdline + from docutils.nodes import raw + from docutils.parsers import rst + + docutils_conf = os.path.join('doc', 'conf', 'docutils.ini') + epydoc_conf = os.path.join('doc', 'conf', 'epydoc.ini') + + try: + from pygments import highlight + from pygments.lexers import get_lexer_by_name + from pygments.formatters import HtmlFormatter + + def code_block(name, arguments, options, content, lineno, + content_offset, block_text, state, state_machine): + lexer = get_lexer_by_name(arguments[0]) + html = highlight('\n'.join(content), lexer, HtmlFormatter()) + return [raw('', html, format='html')] + code_block.arguments = (1, 0, 0) + code_block.options = {'language' : rst.directives.unchanged} + code_block.content = 1 + rst.directives.register_directive('code-block', code_block) + except ImportError: + print 'Pygments not installed, syntax highlighting disabled' + + for source in glob('doc/*.txt'): + dest = os.path.splitext(source)[0] + '.html' + if self.force or not os.path.exists(dest) or \ + os.path.getmtime(dest) < os.path.getmtime(source): + print 'building documentation file %s' % dest + publish_cmdline(writer_name='html', + argv=['--config=%s' % docutils_conf, source, + dest]) + + if not self.without_apidocs: + try: + from epydoc import cli + old_argv = sys.argv[1:] + sys.argv[1:] = [ + '--config=%s' % epydoc_conf, + '--no-private', # epydoc bug, not read from config + '--simple-term', + '--verbose' + ] + cli.cli() + sys.argv[1:] = old_argv + + except ImportError: + print 'epydoc not installed, skipping API documentation.' + + +class test_doc(Command): + description = 'Tests the code examples in the documentation' + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + for filename in glob('doc/*.txt'): + print 'testing documentation file %s' % filename + doctest.testfile(filename, False, optionflags=doctest.ELLIPSIS) + + +setup( + name = 'Babel', + version = '0.8', + description = 'Internationalization utilities', + long_description = \ +"""A collection of tools for internationalizing Python applications.""", + author = 'Edgewall Software', + author_email = 'info@edgewall.org', + license = 'BSD', + url = 'http://babel.edgewall.org/', + download_url = 'http://babel.edgewall.org/wiki/Download', + zip_safe = False, + + classifiers = [ + 'Development Status :: 4 - Beta', + 'Environment :: Web Environment', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Topic :: Software Development :: Libraries :: Python Modules', + ], + packages = ['babel', 'babel.messages'], + package_data = {'babel': ['localedata/*.dat']}, + test_suite = 'babel.tests.suite', + + entry_points = """ + [console_scripts] + babel = babel.messages.frontend:main + + [distutils.commands] + extract_messages = babel.messages.frontend:extract_messages + new_catalog = babel.messages.frontend:new_catalog + + [distutils.setup_keywords] + message_extractors = babel.messages.frontend:check_message_extractors + + [babel.extractors] + ignore = babel.messages.extract:extract_nothing + python = babel.messages.extract:extract_python + """, + + cmdclass = {'build_doc': build_doc, 'test_doc': test_doc} +)