From: <mi...@us...> - 2012-05-11 21:03:13
|
Revision: 7433 http://docutils.svn.sourceforge.net/docutils/?rev=7433&view=rev Author: milde Date: 2012-05-11 21:03:07 +0000 (Fri, 11 May 2012) Log Message: ----------- Fix [ 3525847 ] UnicodeEncodeError with locale == C and 8-bit char in path argument of `include` directive. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/parsers/rst/directives/misc.py trunk/docutils/test/alltests.py trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-05-09 15:16:51 UTC (rev 7432) +++ trunk/docutils/HISTORY.txt 2012-05-11 21:03:07 UTC (rev 7433) @@ -16,7 +16,11 @@ Changes Since 0.9 ================= +* docutils/parsers/rst/directives/misc.py + - Fix [ 3525847 ] UnicodeEncodeError with locale == C and 8-bit char + in path argument of `include` directive. + Release 0.9 (2012-05-02) ======================== Modified: trunk/docutils/docutils/parsers/rst/directives/misc.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-05-09 15:16:51 UTC (rev 7432) +++ trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-05-11 21:03:07 UTC (rev 7433) @@ -73,6 +73,11 @@ error_handler=(self.state.document.settings.\ input_encoding_error_handler), handle_io_errors=None) + except UnicodeEncodeError, error: + raise self.severe(u'Problems with "%s" directive path:\n' + 'Cannot encode input file path "%s" ' + '(wrong locale?).' % + (self.name, SafeString(path))) except IOError, error: raise self.severe(u'Problems with "%s" directive path:\n%s.' % (self.name, ErrorString(error))) Modified: trunk/docutils/test/alltests.py =================================================================== --- trunk/docutils/test/alltests.py 2012-05-09 15:16:51 UTC (rev 7432) +++ trunk/docutils/test/alltests.py 2012-05-11 21:03:07 UTC (rev 7433) @@ -33,8 +33,13 @@ self.encoding = getattr(stream, 'encoding', None) def write(self, string): - self.stream.write(string) - self.file.write(string) + try: + self.stream.write(string) + self.file.write(string) + except UnicodeEncodeError: # Py3k writing to "ascii" stream/file + string = string.encode('raw_unicode_escape').decode('ascii') + self.stream.write(string) + self.file.write(string) def flush(self): self.stream.flush() Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py 2012-05-09 15:16:51 UTC (rev 7432) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py 2012-05-11 21:03:07 UTC (rev 7433) @@ -50,6 +50,18 @@ nonexistent_rel = DocutilsTestSupport.utils.relative_path( os.path.join(DocutilsTestSupport.testroot, 'dummy'), nonexistent) +# Different error for path with 8bit chars with locale == C or None: +try: + open(u'\u043c\u0438\u0440.txt') +except UnicodeEncodeError: + errstr_8bit_path = u"""\ +Cannot encode input file path "\u043c\u0438\u0440.txt" (wrong locale?).\ +""" +except: + errstr_8bit_path = u"""\ +InputError: [Errno 2] No such file or directory: '\u043c\u0438\u0440.txt'.\ +""" + totest = {} totest['include'] = [ @@ -414,10 +426,10 @@ <system_message level="4" line="3" source="test data" type="SEVERE"> <paragraph> Problems with "include" directive path: - InputError: [Errno 2] No such file or directory: '\u043c\u0438\u0440.txt'. + %s <literal_block xml:space="preserve"> .. include:: \u043c\u0438\u0440.txt -"""], +""" % errstr_8bit_path], ["""\ Testing errors in included file: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-04 20:14:16
|
Revision: 7437 http://docutils.svn.sourceforge.net/docutils/?rev=7437&view=rev Author: milde Date: 2012-06-04 20:14:08 +0000 (Mon, 04 Jun 2012) Log Message: ----------- Fix [ 3527842 ]. Under Python?\194?\1603, converted tests and tools are now stored in the ``test3/`` and ``tools3/`` sub-directories and not installed in the PYTHONPATH. In order to make this work: - Make tests independent from the location of the ``test/`` directory. - Use converted sources from the ``build/`` directory for tests under Python?\194?\1603. Remove functional/tests/stylesheet_path_html4css1.py made redunant by functional/tests/math_output_html.py. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/README.txt trunk/docutils/setup.py trunk/docutils/test/DocutilsTestSupport.py trunk/docutils/test/functional/expected/compact_lists.html trunk/docutils/test/functional/expected/dangerous.html trunk/docutils/test/functional/expected/field_name_limit.html trunk/docutils/test/functional/expected/math_output_html.html trunk/docutils/test/functional/expected/math_output_latex.html trunk/docutils/test/functional/expected/math_output_mathjax.html trunk/docutils/test/functional/expected/math_output_mathml.xhtml trunk/docutils/test/functional/expected/pep_html.html trunk/docutils/test/functional/expected/standalone_rst_html4css1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html trunk/docutils/test/functional/tests/compact_lists.py trunk/docutils/test/functional/tests/dangerous.py trunk/docutils/test/functional/tests/field_name_limit.py trunk/docutils/test/functional/tests/math_output_html.py trunk/docutils/test/functional/tests/math_output_latex.py trunk/docutils/test/functional/tests/math_output_mathjax.py trunk/docutils/test/functional/tests/math_output_mathml.py trunk/docutils/test/functional/tests/pep_html.py trunk/docutils/test/functional/tests/standalone_rst_html4css1.py trunk/docutils/test/functional/tests/standalone_rst_s5_html_1.py trunk/docutils/test/test_dependencies.py trunk/docutils/test/test_writers/test_html4css1_template.py trunk/docutils/test/test_writers/test_s5.py Added Paths: ----------- trunk/docutils/test/functional/input/data/html4css1.css trunk/docutils/test/functional/input/data/math.css Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/HISTORY.txt 2012-06-04 20:14:08 UTC (rev 7437) @@ -16,11 +16,28 @@ Changes Since 0.9 ================= +* docutils/setup.py + + - Fix [ 3527842 ]. Under Python 3, converted tests and tools are now + stored in the ``test3/`` and ``tools3/`` sub-directories and not + installed in the PYTHONPATH. + +* docutils/test/ + + - Make tests independent from the location of the ``test/`` directory. + - Use converted sources from the ``build/`` directory for tests under + Python 3. + * docutils/parsers/rst/directives/misc.py - - Fix [ 3525847 ] UnicodeEncodeError with locale == C and 8-bit char - in path argument of `include` directive. + - Fix [ 3525847 ]. Catch and report UnicodeEncodeError with + ``locale == C`` and 8-bit char in path argument of `include` directive. +* docutils/test/alltests.py + + - class `Tee`: catch UnicodeError when writing to "ascii" stream or + file under Python 3. + Release 0.9 (2012-05-02) ======================== @@ -125,7 +142,7 @@ * docutils/test/ - - Apply [ 3303733 ] and [ 3365041 ] to fix tests under py3k. + - Apply [ 3303733 ] and [ 3365041 ] to fix tests under Py3k. * docutils/writers/latex2e/__init__.py @@ -226,7 +243,7 @@ * docutils/io.py: - Do not close() sys.stdin, sys.stdout, or sys.stderr. Prevents - ``Exception ValueError: 'I/O operation on closed file.'`` with Python 3. + ``Exception ValueError: 'I/O operation on closed file.'`` with Python 3. Release 0.7 (2010-07-07) ======================== @@ -294,7 +311,7 @@ * setup.py: - - Python 3 support: copy test/ and tools/ to the build-dir + - Python 3 support: copy test/ and tools/ to the build-dir and convert Python sources with 2to3. Modified: trunk/docutils/README.txt =================================================================== --- trunk/docutils/README.txt 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/README.txt 2012-06-04 20:14:08 UTC (rev 7437) @@ -21,9 +21,9 @@ http://www.python.org/ - Docutils is compatible with Python versions from 2.3 up to 2.6 and - version 3.1. (Support for Python 3 is new and might still have some - issues.) + Docutils is compatible with Python versions from 2.3 up to 2.7 and + versions 3.1 and 3.2. (Support for Python 3 is new and might still + have some issues.) 2. Use the latest Docutils code. Get the code from Subversion or from the snapshot: @@ -42,7 +42,7 @@ (enter admin password) ./setup.py install - Docutils will only work with Python 3, if installed with a Python + Docutils will only work with Python 3, if installed with a Python version >= 3. If your default Python version is 2.x, also call ``python3 setup.py install`` from the temporary directory. See Installation_ below for details. @@ -104,8 +104,7 @@ http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/sandbox/?view=tar To keep up to date on the latest developments, download fresh copies -of the snapshots regularly. New functionality is being added weekly, -sometimes daily. (There's also the `Subversion repository`_.) +of the snapshots regularly. (There's also the `Subversion repository`_.) .. _Subversion repository: docs/dev/repository.html @@ -117,13 +116,18 @@ Python is available from http://www.python.org/. -The `Python Imaging Library`, or PIL, is used for some image -manipulation operations if it is installed. +Docutils uses the following packages for enhanced functionality, if they are +installed: -.. _Python Imaging Library: http://www.pythonware.com/products/pil/ -.. _Optik: http://optik.sourceforge.net/ +* The `Python Imaging Library`, or PIL, is used for some image + manipulation operations. +* The `Pygments`_ syntax highlighter is used for content of `code` + directives and roles. +.. _Python Imaging Library: http://www.pythonware.com/products/pil/ +.. _pygments: http://pygments.org/ + Project Files & Directories =========================== @@ -151,10 +155,6 @@ * docutils: The project source directory, installed as a Python package. -* extras: Directory for third-party modules that Docutils depends on - (roman.py). These are only installed if - they're not already present. - * docs: The project documentation directory. Read ``docs/index.txt`` for an overview. @@ -233,22 +233,20 @@ To install for a specific python version, specify the Python executable for this version. +Developing under Python 3 +------------------------- -Python 3 peculiarities ----------------------- +Under Python 3, installing with ``setup.py`` converts the source to Python 3 +compatible code before installing. If you want to test or develop Docutils, +also run ``python3 setup.py build``. This will generate Python 3 compatible +sources, in the ``build/`` sub-directory, tests in ``tests3/``, and +developer tools in ``tools3``. -If called from Python 3, setup.py, in addition to copying the sources -to the right place, will also convert them using 2to3 to Python 3 -compatible code. +Do changes on the Python 2 versions of the sources and re-run the build +command. This works incrementally, so if you change one file it will only +reconvert that file the next time you run setup.py build. -* If you want to test or develop Docutils, also run ``python3 setup.py - build``. This will generate Python 3 compatible sources, tests and - developer tools in the build directory. Do changes on the Python 2 - versions of the sources and re-run the build command. This works - incrementally, so if you change one file it will only reconvert that - file the next time you run setup.py build. - Usage ===== @@ -310,8 +308,8 @@ For testing with Python 3 use the converted test suite:: - cd <archive_directory_path>/build/<Python-3-subdir>/test - python alltests.py + cd <archive_directory_path>/test3 + python3 alltests.py You should see a long line of periods, one for each test, and then a @@ -342,7 +340,7 @@ cd ..\tools python quicktest.py --version -Python 3 users must use ``build/<Python-3-subdir>/tools/quicktest.py``. +For Python 3, the path is ``tools3/quicktest.py``. .. _open a bug report: Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/setup.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -32,7 +32,7 @@ 'tools/' and 'test/' dirs and run 2to3 on *.py files. """ manifest_in = """\ - exclude *.pyc *~ .DS_Store + exclude *.pyc *~ .DS_Store rst2*.py rstpep2html.py recursive-exclude * *.pyc *~ .DS_Store recursive-exclude functional/output * include functional/output/README.txt @@ -48,7 +48,7 @@ print("copying aux dirs") loglevel = log.set_threshold(log.ERROR) for source in ['tools', 'test']: - dest = os.path.join(self.build_lib, source) + dest = source + '3' copydir_run_2to3(source, dest, template=self.manifest_in) log.set_threshold(loglevel) @@ -187,6 +187,7 @@ 'License :: OSI Approved :: GNU General Public License (GPL)', 'Operating System :: OS Independent', 'Programming Language :: Python', + 'Programming Language :: Python :: 3', 'Topic :: Documentation', 'Topic :: Software Development :: Documentation', 'Topic :: Text Processing', Modified: trunk/docutils/test/DocutilsTestSupport.py =================================================================== --- trunk/docutils/test/DocutilsTestSupport.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/DocutilsTestSupport.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -50,9 +50,15 @@ testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir) os.chdir(testroot) -sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..'))) +if sys.version_info >= (3,0): + sys.path.insert(0, os.path.normpath(os.path.join(testroot, + '..', 'build', 'lib'))) + sys.path.append(os.path.normpath(os.path.join(testroot, '..', + 'build', 'lib', 'extras'))) +else: + sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..'))) + sys.path.append(os.path.normpath(os.path.join(testroot, '..', 'extras'))) sys.path.insert(0, testroot) -sys.path.append(os.path.normpath(os.path.join(testroot, '..', 'extras'))) try: import difflib @@ -129,13 +135,13 @@ # aliases for assertion methods, deprecated since Python 2.7 - failUnlessEqual = assertEquals = assertEqual + failUnlessEqual = assertEquals = assertEqual assertNotEquals = failIfEqual = assertNotEqual class CustomTestCase(StandardTestCase): - + """ Helper class, providing extended functionality over unittest.TestCase. @@ -166,7 +172,7 @@ self.expected = expected self.run_in_debugger = run_in_debugger self.suite_settings = suite_settings.copy() or {} - + # Ring your mother. unittest.TestCase.__init__(self, method_name) @@ -791,7 +797,7 @@ # interpolate standard variables: expected = self.expected % {'version': docutils.__version__} self.compare_output(self.input, output, expected) - + standard_content_type_template = ('<meta http-equiv="Content-Type"' ' content="text/html; charset=%s" />\n') standard_generator_template = ( Modified: trunk/docutils/test/functional/expected/compact_lists.html =================================================================== --- trunk/docutils/test/functional/expected/compact_lists.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/compact_lists.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document"> Modified: trunk/docutils/test/functional/expected/dangerous.html =================================================================== --- trunk/docutils/test/functional/expected/dangerous.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/dangerous.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document"> Modified: trunk/docutils/test/functional/expected/field_name_limit.html =================================================================== --- trunk/docutils/test/functional/expected/field_name_limit.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/field_name_limit.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document"> Modified: trunk/docutils/test/functional/expected/math_output_html.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_html.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/math_output_html.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,8 +5,8 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/math.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/math.css" type="text/css" /> </head> <body> <div class="document" id="mathematics"> Modified: trunk/docutils/test/functional/expected/math_output_latex.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_latex.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/math_output_latex.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document" id="mathematics"> Modified: trunk/docutils/test/functional/expected/math_output_mathjax.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -6,7 +6,7 @@ <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document" id="mathematics"> Modified: trunk/docutils/test/functional/expected/math_output_mathml.xhtml =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-06-04 20:14:08 UTC (rev 7437) @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="document" id="mathematics"> Modified: trunk/docutils/test/functional/expected/pep_html.html =================================================================== --- trunk/docutils/test/functional/expected/pep_html.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/pep_html.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -10,7 +10,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>PEP 100 -- Test PEP</title> - <link rel="stylesheet" href="../../../docutils/writers/pep_html/pep.css" type="text/css" /> + <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body bgcolor="white"> <table class="navigation" cellpadding="0" cellspacing="0" Modified: trunk/docutils/test/functional/expected/standalone_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -13,7 +13,7 @@ <meta content="reStructuredText, test, parser" name="keywords" /> <meta content="A test document, containing at least one example of each reStructuredText construct." lang="en" name="description" /> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> <body> <div class="header"> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -8,7 +8,7 @@ <title>Slide Shows</title> <meta name="author" content="David Goodger" /> <meta name="date" content="2005-11-28" /> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> <!-- configuration parameters --> <meta name="defaultView" content="slideshow" /> <meta name="controlVis" content="hidden" /> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-06-04 20:14:08 UTC (rev 7437) @@ -8,7 +8,7 @@ <title>Slide Shows</title> <meta name="author" content="David Goodger" /> <meta name="date" content="2005-11-28" /> -<link rel="stylesheet" href="../../../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> <!-- configuration parameters --> <meta name="defaultView" content="slideshow" /> <meta name="controlVis" content="hidden" /> Added: trunk/docutils/test/functional/input/data/html4css1.css =================================================================== --- trunk/docutils/test/functional/input/data/html4css1.css (rev 0) +++ trunk/docutils/test/functional/input/data/html4css1.css 2012-06-04 20:14:08 UTC (rev 7437) @@ -0,0 +1,311 @@ +/* +:Author: David Goodger (go...@py...) +:Id: $Id$ +:Copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the HTML output of Docutils. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. +*/ + +/* used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0 } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 ! important } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 ! important } + +.last, .with-subtitle { + margin-bottom: 0 ! important } + +.hidden { + display: none } + +a.toc-backref { + text-decoration: none ; + color: black } + +blockquote.epigraph { + margin: 2em 5em ; } + +dl.docutils dd { + margin-bottom: 0.5em } + +object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { + overflow: hidden; +} + +/* Uncomment (and remove this text!) to get bold-faced definition list terms +dl.docutils dt { + font-weight: bold } +*/ + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ + +div.dedication { + margin: 2em 5em ; + text-align: center ; + font-style: italic } + +div.dedication p.topic-title { + font-weight: bold ; + font-style: normal } + +div.figure { + margin-left: 2em ; + margin-right: 2em } + +div.footer, div.header { + clear: both; + font-size: smaller } + +div.line-block { + display: block ; + margin-top: 1em ; + margin-bottom: 1em } + +div.line-block div.line-block { + margin-top: 0 ; + margin-bottom: 0 ; + margin-left: 1.5em } + +div.sidebar { + margin: 0 0 0.5em 1em ; + border: medium outset ; + padding: 1em ; + background-color: #ffffee ; + width: 40% ; + float: right ; + clear: right } + +div.sidebar p.rubric { + font-family: sans-serif ; + font-size: medium } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em } + +h1.title { + text-align: center } + +h2.subtitle { + text-align: center } + +hr.docutils { + width: 75% } + +img.align-left, .figure.align-left, object.align-left { + clear: left ; + float: left ; + margin-right: 1em } + +img.align-right, .figure.align-right, object.align-right { + clear: right ; + float: right ; + margin-left: 1em } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left } + +.align-center { + clear: both ; + text-align: center } + +.align-right { + text-align: right } + +/* reset inner alignment in figures */ +div.align-right { + text-align: inherit } + +/* div.align-center * { */ +/* text-align: left } */ + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.attribution { + text-align: right ; + margin-left: 50% } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.rubric { + font-weight: bold ; + font-size: larger ; + color: maroon ; + text-align: center } + +p.sidebar-title { + font-family: sans-serif ; + font-weight: bold ; + font-size: larger } + +p.sidebar-subtitle { + font-family: sans-serif ; + font-weight: bold } + +p.topic-title { + font-weight: bold } + +pre.address { + margin-bottom: 0 ; + margin-top: 0 ; + font: inherit } + +pre.literal-block, pre.doctest-block, pre.math, pre.code { + margin-left: 2em ; + margin-right: 2em } + +pre.code .ln { /* line numbers */ + color: grey; +} + +.code { + background-color: #eeeeee +} + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option { + white-space: nowrap } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80% } + +table.citation { + border-left: solid 1px gray; + margin-left: 1px } + +table.docinfo { + margin: 2em 4em } + +table.docutils { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +table.footnote { + border-left: solid 1px black; + margin-left: 1px } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap ; + padding-left: 0 } + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100% } + +ul.auto-toc { + list-style-type: none } Property changes on: trunk/docutils/test/functional/input/data/html4css1.css ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/docutils/test/functional/input/data/math.css =================================================================== --- trunk/docutils/test/functional/input/data/math.css (rev 0) +++ trunk/docutils/test/functional/input/data/math.css 2012-06-04 20:14:08 UTC (rev 7437) @@ -0,0 +1,274 @@ +/* +* math2html: convert LaTeX equations to HTML output. +* +* Copyright (C) 2009,2010 Alex Fernández +* +* Released under the terms of the `2-Clause BSD license'_, in short: +* Copying and distribution of this file, with or without modification, +* are permitted in any medium without royalty provided the copyright +* notice and this notice are preserved. +* This file is offered as-is, without any warranty. +* +* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause +* +* Based on eLyXer: convert LyX source files to HTML output. +* http://elyxer.nongnu.org/ +*/ +/* --end-- +* CSS file for LaTeX formulas. +*/ + +/* Formulas */ +.formula { + text-align: center; + font-family: "DejaVu Serif", serif; + margin: 1.2em 0; +} +span.formula { + white-space: nowrap; +} +div.formula { + padding: 0.5ex; + margin-left: auto; + margin-right: auto; +} + +/* Basic features */ +a.eqnumber { + display: inline-block; + float: right; + clear: right; + font-weight: bold; +} +span.unknown { + color: #800000; +} +span.ignored, span.arraydef { + display: none; +} +.formula i { + letter-spacing: 0.1ex; +} + +/* Alignment */ +.align-left, .align-l { + text-align: left; +} +.align-right, .align-r { + text-align: right; +} +.align-center, .align-c { + text-align: center; +} + +/* Structures */ +span.overline, span.bar { + text-decoration: overline; +} +.fraction, .fullfraction { + display: inline-block; + vertical-align: middle; + text-align: center; +} +.fraction .fraction { + font-size: 80%; + line-height: 100%; +} +span.numerator { + display: block; +} +span.denominator { + display: block; + padding: 0ex; + border-top: thin solid; +} +sup.numerator, sup.unit { + font-size: 70%; + vertical-align: 80%; +} +sub.denominator, sub.unit { + font-size: 70%; + vertical-align: -20%; +} +span.sqrt { + display: inline-block; + vertical-align: middle; + padding: 0.1ex; +} +sup.root { + font-size: 70%; + position: relative; + left: 1.4ex; +} +span.radical { + display: inline-block; + padding: 0ex; + font-size: 150%; + vertical-align: top; +} +span.root { + display: inline-block; + border-top: thin solid; + padding: 0ex; + vertical-align: middle; +} +span.symbol { + font-size: 125%; +} +span.bigsymbol { + font-size: 150%; +} +span.largesymbol { + font-size: 175%; +} +span.hugesymbol { + font-size: 200%; +} +span.scripts { + display: inline-table; + vertical-align: middle; +} +.script { + display: table-row; + text-align: left; + line-height: 150%; +} +span.limits { + display: inline-table; + vertical-align: middle; +} +.limit { + display: table-row; + line-height: 95%; +} +sup.limit, sub.limit { + line-height: 150%; +} +span.symbolover { + display: inline-block; + text-align: center; + position: relative; + float: right; + right: 100%; + bottom: 0.5em; + width: 0px; +} +span.withsymbol { + display: inline-block; +} +span.symbolunder { + display: inline-block; + text-align: center; + position: relative; + float: right; + right: 80%; + top: 0.3em; + width: 0px; +} + +/* Environments */ +span.array, span.bracketcases, span.binomial, span.environment { + display: inline-table; + text-align: center; + border-collapse: collapse; + margin: 0em; + vertical-align: middle; +} +span.arrayrow, span.binomrow { + display: table-row; + padding: 0ex; + border: 0ex; +} +span.arraycell, span.bracket, span.case, span.binomcell, span.environmentcell { + display: table-cell; + padding: 0ex 0.2ex; + line-height: 99%; + border: 0ex; +} +/* +* CSS file for LaTeX formulas, extra stuff: +* binomials, vertical braces, stackrel, fonts and colors. +*/ + +/* Inline binomials */ +span.binom { + display: inline-block; + vertical-align: middle; + text-align: center; + font-size: 80%; +} +span.binomstack { + display: block; + padding: 0em; +} + +/* Over- and underbraces */ +span.overbrace { + border-top: 2pt solid; +} +span.underbrace { + border-bottom: 2pt solid; +} + +/* Stackrel */ +span.stackrel { + display: inline-block; + text-align: center; +} +span.upstackrel { + display: block; + padding: 0em; + font-size: 80%; + line-height: 64%; + position: relative; + top: 0.15em; + +} +span.downstackrel { + display: block; + vertical-align: bottom; + padding: 0em; +} + +/* Fonts */ +span.mathsf, span.textsf { + font-style: normal; + font-family: sans-serif; +} +span.mathrm, span.textrm { + font-style: normal; + font-family: serif; +} +span.text, span.textnormal { + font-style: normal; +} +span.textipa { + color: #008080; +} +span.fraktur { + font-family: "Lucida Blackletter", eufm10, blackletter; +} +span.blackboard { + font-family: Blackboard, msbm10, serif; +} +span.scriptfont { + font-family: "Monotype Corsiva", "Apple Chancery", "URW Chancery L", cursive; + font-style: italic; +} + +/* Colors */ +span.colorbox { + display: inline-block; + padding: 5px; +} +span.fbox { + display: inline-block; + border: thin solid black; + padding: 2px; +} +span.boxed, span.framebox { + display: inline-block; + border: thin solid black; + padding: 5px; +} + Property changes on: trunk/docutils/test/functional/input/data/math.css ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/docutils/test/functional/tests/compact_lists.py =================================================================== --- trunk/docutils/test/functional/tests/compact_lists.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/compact_lists.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -8,4 +8,6 @@ writer_name = "html" # Settings -#settings_overrides['key'] = +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/dangerous.py =================================================================== --- trunk/docutils/test/functional/tests/dangerous.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/dangerous.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -10,3 +10,6 @@ # Settings settings_overrides['file_insertion_enabled'] = False settings_overrides['raw_enabled'] = False +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/field_name_limit.py =================================================================== --- trunk/docutils/test/functional/tests/field_name_limit.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/field_name_limit.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -10,3 +10,6 @@ # Settings settings_overrides['field_name_limit'] = 0 # no limit settings_overrides['docinfo_xform'] = False +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/math_output_html.py =================================================================== --- trunk/docutils/test/functional/tests/math_output_html.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/math_output_html.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -7,10 +7,11 @@ parser_name = "rst" writer_name = "html" -# Extra setting +# Extra settings +settings_overrides['math_output'] = 'HTML' +# stylesheets: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css,' + 'functional/input/data/math.css') -settings_overrides['math_output'] = 'HTML' -settings_overrides['stylesheet_path'] = ( - '../docutils/writers/html4css1/html4css1.css, ' - '../docutils/writers/html4css1/math.css ') Modified: trunk/docutils/test/functional/tests/math_output_latex.py =================================================================== --- trunk/docutils/test/functional/tests/math_output_latex.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/math_output_latex.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -7,7 +7,10 @@ parser_name = "rst" writer_name = "html" -# Extra setting +# Settings +settings_overrides['math_output'] = 'latex' +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') -settings_overrides['math_output'] = 'latex' - + Modified: trunk/docutils/test/functional/tests/math_output_mathjax.py =================================================================== --- trunk/docutils/test/functional/tests/math_output_mathjax.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/math_output_mathjax.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -7,7 +7,9 @@ parser_name = "rst" writer_name = "html" -# Extra setting - +# Settings settings_overrides['math_output'] = 'MathJax' +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/math_output_mathml.py =================================================================== --- trunk/docutils/test/functional/tests/math_output_mathml.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/math_output_mathml.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -7,6 +7,8 @@ parser_name = "rst" writer_name = "html" -# Extra setting - +# Settings settings_overrides['math_output'] = 'MathML' +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/pep_html.py =================================================================== --- trunk/docutils/test/functional/tests/pep_html.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/pep_html.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -12,3 +12,6 @@ settings_overrides['pep_home'] = "http://www.python.org/peps" settings_overrides['no_random'] = 1 settings_overrides['cloak_email_addresses'] = 1 +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/standalone_rst_html4css1.py =================================================================== --- trunk/docutils/test/functional/tests/standalone_rst_html4css1.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/standalone_rst_html4css1.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -7,4 +7,8 @@ # Keyword parameters passed to publish_file. writer_name = "html4css1" -# Settings: settings_overrides['setting'] = value +# Settings: +# local copy of default stylesheet: +# (Test runs in ``docutils/test/``, we need relative path from there.) +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') Modified: trunk/docutils/test/functional/tests/standalone_rst_s5_html_1.py =================================================================== --- trunk/docutils/test/functional/tests/standalone_rst_s5_html_1.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/functional/tests/standalone_rst_s5_html_1.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -9,6 +9,9 @@ # Settings: settings_overrides['theme'] = 'small-black' +# local copy of default stylesheet: +settings_overrides['stylesheet_path'] = ( + 'functional/input/data/html4css1.css') # Extra functional tests. Modified: trunk/docutils/test/test_dependencies.py =================================================================== --- trunk/docutils/test/test_dependencies.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/test_dependencies.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -24,7 +24,6 @@ 'scaled-image': u'../docs/user/rst/images/biohazard.png', 'figure-image': u'../docs/user/rst/images/title.png', 'stylesheet': u'data/stylesheet.txt', - 'default-stylesheet': u'../docutils/writers/html4css1/html4css1.css', } @@ -71,11 +70,13 @@ self.assertEqual(record, expected) def test_dependencies_html(self): - keys = ['include', 'raw', 'default-stylesheet'] + keys = ['include', 'raw'] if PIL: keys += ['figure-image', 'scaled-image'] expected = [paths[key] for key in keys] - record = self.get_record(writer_name='html') + # stylesheets are tested separately in test_stylesheet_dependencies(): + so = {'stylesheet_path': None, 'stylesheet': None} + record = self.get_record(writer_name='html', settings_overrides=so) # the order of the files is arbitrary record.sort() expected.sort() Modified: trunk/docutils/test/test_writers/test_html4css1_template.py =================================================================== --- trunk/docutils/test/test_writers/test_html4css1_template.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/test_writers/test_html4css1_template.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -15,6 +15,7 @@ def suite(): settings = {'template': os.path.join(DocutilsTestSupport.testroot, 'data', 'full-template.txt'), + 'stylesheet_path': '/test.css', 'embed_stylesheet': 0,} s = DocutilsTestSupport.PublishTestSuite('html', suite_settings=settings) s.generateTests(totest) @@ -55,7 +56,7 @@ stylesheet = """\ -<link rel="stylesheet" href="../docutils/writers/html4css1/html4css1.css" type="text/css" />""" +<link rel="stylesheet" href="/test.css" type="text/css" />""" body_prefix = """\ @@ -112,7 +113,7 @@ stylesheet = """\ -<link rel="stylesheet" href="../docutils/writers/html4css1/html4css1.css" type="text/css" />""" +<link rel="stylesheet" href="/test.css" type="text/css" />""" body_prefix = """\ Modified: trunk/docutils/test/test_writers/test_s5.py =================================================================== --- trunk/docutils/test/test_writers/test_s5.py 2012-05-24 17:48:15 UTC (rev 7436) +++ trunk/docutils/test/test_writers/test_s5.py 2012-06-04 20:14:08 UTC (rev 7437) @@ -13,7 +13,8 @@ def suite(): - settings = {'embed_stylesheet': 0,} + settings = {'stylesheet_path': '/test.css', + 'embed_stylesheet': 0,} s = DocutilsTestSupport.PublishTestSuite('s5', suite_settings=settings) s.generateTests(totest_1) settings['hidden_controls'] = 0 @@ -48,7 +49,7 @@ <meta name="generator" content="Docutils %(version)s: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Show Title</title> -<link rel="stylesheet" href="../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="/test.css" type="text/css" /> <!-- configuration parameters --> <meta name="defaultView" content="slideshow" /> <meta name="controlVis" content="hidden" /> @@ -113,7 +114,7 @@ <meta name="generator" content="Docutils %(version)s: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Bogus Slide Show</title> -<link rel="stylesheet" href="../docutils/writers/html4css1/html4css1.css" type="text/css" /> +<link rel="stylesheet" href="/test.css" type="text/css" /> <!-- configuration parameters --> <meta name="defaultView" content="outline" /> <meta name="controlVis" content="visible" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-14 20:40:01
|
Revision: 7443 http://docutils.svn.sourceforge.net/docutils/?rev=7443&view=rev Author: milde Date: 2012-06-14 20:39:55 +0000 (Thu, 14 Jun 2012) Log Message: ----------- Document latest fixes. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-13 23:27:03 UTC (rev 7442) +++ trunk/docutils/HISTORY.txt 2012-06-14 20:39:55 UTC (rev 7443) @@ -18,10 +18,14 @@ * docutils/setup.py - - Fix [ 3527842 ]. Under Python 3, converted tests and tools are now - stored in the ``test3/`` and ``tools3/`` sub-directories and not - installed in the PYTHONPATH. + - Fix [ 3527842 ]. Under Python 3, converted tests and tools were + installed in the PYTHONPATH. Converted tests are now + stored in ``test3/``, tools no longer need conversion. + If you installed one of Docutils versions 0.7 ... 0.9 with + ``setup.py install`` under Python 3, remove the spurious + ``test/`` and ``tools/`` directories in the site library root. + * docutils/test/ - Make tests independent from the location of the ``test/`` directory. @@ -39,14 +43,14 @@ * docutils/parsers/rst/directives/misc.py - - Fix [ 3525847 ]. Catch and report UnicodeEncodeError with + - Fix [ 3525847 ]. Catch and report UnicodeEncodeError with ``locale == C`` and 8-bit char in path argument of `include` directive. * docutils/test/alltests.py - class `Tee`: catch UnicodeError when writing to "ascii" stream or file under Python 3. - + Release 0.9 (2012-05-02) ======================== Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-13 23:27:03 UTC (rev 7442) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-14 20:39:55 UTC (rev 7443) @@ -19,6 +19,8 @@ Future changes ============== +* Support for Python 2.3 will be dropped in version 0.10. + * docutils/math, docutils/error_reporting.py, and docutils/urischemes.py will move to the utils package Code importing these modules needs to adapt, e.g.:: @@ -42,12 +44,21 @@ is called with `handle_io_errors`, :0.10 + n+1: remove the `handle_io_errors` option. -* end of python2.3 support with 0.10, most likely. Changes Since 0.9 ================= +* docutils/setup.py + - Fix [ 3527842 ]. Under Python 3, converted tests and tools were + installed in the PYTHONPATH. Converted tests are now + stored in ``docutils/test3/``, tools no longer need conversion. + + If you installed one of Docutils versions 0.7 ... 0.9 with + ``setup.py install`` under Python 3, remove the spurious + ``test/`` and ``tools/`` directories in the site library root. + + Release 0.9 (2012-05-02) ========================= @@ -93,14 +104,11 @@ - Fix [ 3364658 ] (Change last file with Apache license to BSD-2-Clause) and [ 3395920 ] (correct copyright info for rst.el). -* docutils/test/ - - - Apply [ 3303733 ] and [ 3365041 ] to fix tests under py3k. - * docutils/writers/latex2e/__init__.py - Clean up Babel language setting. Restores Sphinx compatibility. + Release 0.8 (2011-07-07) ======================== @@ -158,6 +166,7 @@ * and fixes and enhancements here and there. + Release 0.7 (2010-07-07) ======================== @@ -202,6 +211,7 @@ - Python 3 support: copy test/ and tools/ to the build-dir and convert Python sources with 2to3. + Release 0.6 (2009-10-11) ======================== @@ -321,6 +331,7 @@ * Enhance emacs support. + Release 0.4 (2006-01-09) ======================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-13 14:14:23
|
Revision: 7440 http://docutils.svn.sourceforge.net/docutils/?rev=7440&view=rev Author: milde Date: 2012-06-13 14:14:12 +0000 (Wed, 13 Jun 2012) Log Message: ----------- Fixup: more save implementation of binary data output under Python 3. Prevent test error under Python 3. Add tests for FileOutput. Document. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/io.py trunk/docutils/test/DocutilsTestSupport.py trunk/docutils/test/test_error_reporting.py trunk/docutils/test/test_io.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-11 21:02:39 UTC (rev 7439) +++ trunk/docutils/HISTORY.txt 2012-06-13 14:14:12 UTC (rev 7440) @@ -28,6 +28,11 @@ - Use converted sources from the ``build/`` directory for tests under Python 3. +* docutils/io.py + + - Fix writing binary data to sys.stdout under Python 3 (allows + ``rst2odt.py`` to be used with output redirection). + * docutils/parsers/rst/directives/misc.py - Fix [ 3525847 ]. Catch and report UnicodeEncodeError with Modified: trunk/docutils/docutils/io.py =================================================================== --- trunk/docutils/docutils/io.py 2012-06-11 21:02:39 UTC (rev 7439) +++ trunk/docutils/docutils/io.py 2012-06-13 14:14:12 UTC (rev 7440) @@ -21,7 +21,22 @@ class InputError(IOError): pass class OutputError(IOError): pass +def check_encoding(stream, encoding): + """Test, whether the encoding of `stream` matches `encoding`. + Returns + + :None: if `encoding` or `stream.encoding` are not a valid encoding + argument (e.g. ``None``) or `stream.encoding is missing. + :True: if the encoding argument resolves to the same value as `encoding`, + :False: if the encodings differ. + """ + try: + return codecs.lookup(stream.encoding) == codecs.lookup(encoding) + except (LookupError, AttributeError, TypeError): + return None + + class Input(TransformSpec): """ @@ -231,10 +246,7 @@ else: self.source = sys.stdin elif (sys.version_info >= (3,0) and - self.encoding and hasattr(self.source, 'encoding') and - self.encoding != self.source.encoding and - codecs.lookup(self.encoding) != - codecs.lookup(self.source.encoding)): + check_encoding(self.source, self.encoding) is False): # TODO: re-open, warn or raise error? raise UnicodeError('Encoding clash: encoding given is "%s" ' 'but source is opened with encoding "%s".' % @@ -327,10 +339,7 @@ if destination_path: self.opened = False else: - if sys.version_info >= (3,0) and 'b' in self.mode: - self.destination = sys.stdout.buffer - else: - self.destination = sys.stdout + self.destination = sys.stdout elif (# destination is file-type object -> check mode: mode and hasattr(self.destination, 'mode') and mode != self.destination.mode): @@ -342,17 +351,22 @@ self.destination_path = self.destination.name except AttributeError: pass - if (encoding and hasattr(self.destination, 'encoding') - and codecs.lookup(self.encoding) != - codecs.lookup(self.destination.encoding)): - if self.destination is sys.stdout and sys.version_info >= (3,0): - self.destination = sys.stdout.buffer - else: - raise UnicodeError('Encoding of %s (%s) ' - 'differs from specified encoding (%s)' % - (self.destination_path or 'destination', - self.destination.encoding, encoding)) + # Special cases under Python 3: different encoding or binary output + if sys.version_info >= (3,0): + if ('b' in self.mode + and self.destination in (sys.stdout, sys.stderr) + ): + self.destination = self.destination.buffer + if check_encoding(self.destination, self.encoding) is False: + if self.destination in (sys.stdout, sys.stderr): + self.destination = self.destination.buffer + else: # TODO: try the `write to .buffer` scheme instead? + raise ValueError('Encoding of %s (%s) differs \n' + ' from specified encoding (%s)' % + (self.destination_path or 'destination', + destination.encoding, encoding)) + def open(self): # Specify encoding in Python 3. if sys.version_info >= (3,0): @@ -375,25 +389,23 @@ def write(self, data): """Encode `data`, write it to a single file, and return it. - With Python 3 or binary output mode, `data` is returned unchanged. + With Python 3 or binary output mode, `data` is returned unchanged, + except when specified encoding and output encoding differ. """ - if sys.version_info < (3,0) and 'b' not in self.mode: - data = self.encode(data) if not self.opened: self.open() try: # In Python < 2.5, try...except has to be nested in try...finally. try: - if (sys.version_info >= (3,0) - and self.destination is sys.stdout.buffer - and 'b' not in self.mode): - # encode now, as sys.stdout.encoding != self.encoding - bdata = self.encode(data) - if os.linesep != '\n': - bdata = bdata.replace('\n', os.linesep) - self.destination.buffer.write(bdata) - else: - self.destination.write(data) - except (UnicodeError, LookupError), err: # can only happen in py3k + if 'b' not in self.mode and (sys.version_info < (3,0) or + check_encoding(self.destination, self.encoding) is False): + data = self.encode(data) + if sys.version_info >= (3,0) and os.linesep != '\n': + # writing as binary data -> fix endings + data = data.replace('\n', os.linesep) + + self.destination.write(data) + + except (UnicodeError, LookupError), err: raise UnicodeError( 'Unable to encode output data. output-encoding is: ' '%s.\n(%s)' % (self.encoding, ErrorString(err))) Modified: trunk/docutils/test/DocutilsTestSupport.py =================================================================== --- trunk/docutils/test/DocutilsTestSupport.py 2012-06-11 21:02:39 UTC (rev 7439) +++ trunk/docutils/test/DocutilsTestSupport.py 2012-06-13 14:14:12 UTC (rev 7440) @@ -881,7 +881,7 @@ return_tuple = [] for i in args: r = repr(i) - if ( (isinstance(i, str) or isinstance(i, unicode)) + if ( (isinstance(i, bytes) or isinstance(i, unicode)) and '\n' in i): stripped = '' if isinstance(i, unicode) and r.startswith('u'): Modified: trunk/docutils/test/test_error_reporting.py =================================================================== --- trunk/docutils/test/test_error_reporting.py 2012-06-11 21:02:39 UTC (rev 7439) +++ trunk/docutils/test/test_error_reporting.py 2012-06-13 14:14:12 UTC (rev 7440) @@ -158,14 +158,14 @@ # ----------------- # Stub: Buffer with 'strict' auto-conversion of input to byte string: -class BBuf(BytesIO, object): +class BBuf(BytesIO, object): # super class object required by Python <= 2.5 def write(self, data): if isinstance(data, unicode): data.encode('ascii', 'strict') super(BBuf, self).write(data) # Stub: Buffer expecting unicode string: -class UBuf(StringIO, object): +class UBuf(StringIO, object): # super class object required by Python <= 2.5 def write(self, data): # emulate Python 3 handling of stdout, stderr if isinstance(data, bytes): Modified: trunk/docutils/test/test_io.py =================================================================== --- trunk/docutils/test/test_io.py 2012-06-11 21:02:39 UTC (rev 7439) +++ trunk/docutils/test/test_io.py 2012-06-13 14:14:12 UTC (rev 7440) @@ -13,13 +13,46 @@ from docutils import io from docutils._compat import b, bytes from docutils.error_reporting import locale_encoding +from test_error_reporting import BBuf, UBuf +# python 2.3 +if not hasattr(unittest.TestCase, "assertTrue"): + assertTrue = unittest.TestCase.failUnless + +class mock_stdout(UBuf): + encoding = 'utf8' + + def __init__(self): + self.buffer = BBuf() + UBuf.__init__(self) + +class HelperTests(unittest.TestCase): + + def test_check_encoding_true(self): + """Return `True` if lookup returns the same codec""" + self.assertEqual(io.check_encoding(mock_stdout, 'utf8'), True) + self.assertEqual(io.check_encoding(mock_stdout, 'utf-8'), True) + self.assertEqual(io.check_encoding(mock_stdout, 'UTF-8'), True) + + def test_check_encoding_false(self): + """Return `False` if lookup returns different codecs""" + self.assertEqual(io.check_encoding(mock_stdout, 'ascii'), False) + self.assertEqual(io.check_encoding(mock_stdout, 'latin-1'), False) + + def test_check_encoding_none(self): + """Cases where the comparison fails.""" + # stream.encoding is None: + self.assertEqual(io.check_encoding(io.FileInput(), 'ascii'), None) + # stream.encoding does not exist: + self.assertEqual(io.check_encoding(BBuf, 'ascii'), None) + # encoding is None: + self.assertEqual(io.check_encoding(mock_stdout, None), None) + # encoding is invalid + self.assertEqual(io.check_encoding(mock_stdout, 'UTF-9'), None) + + class InputTests(unittest.TestCase): - # python 2.3 - if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - def test_bom(self): input = io.StringInput(source=b('\xef\xbb\xbf foo \xef\xbb\xbf bar'), encoding='utf8') @@ -75,13 +108,13 @@ # if no encoding is given, try decoding with utf8: input = io.FileInput(source_path='functional/input/cyrillic.txt') data = input.read() - if sys.version_info < (3,0): + if sys.version_info < (3,0): # in Py3k, the locale encoding is used without --input-encoding # skipping the heuristic self.assertEqual(input.successful_encoding, 'utf-8') def test_heuristics_no_utf8(self): - # if no encoding is given and decoding with utf8 fails, + # if no encoding is given and decoding with utf8 fails, # use either the locale encoding (if specified) or latin1: input = io.FileInput(source_path='data/latin1.txt') data = input.read() @@ -91,5 +124,66 @@ self.assertEqual(data, u'Gr\xfc\xdfe\n') +class OutputTests(unittest.TestCase): + + bdata = b('\xfc') + udata = u'\xfc' + + def setUp(self): + self.bdrain = BBuf() + """Buffer accepting binary strings (bytes)""" + self.udrain = UBuf() + """Buffer accepting unicode strings""" + self.mock_stdout = mock_stdout() + """Stub of sys.stdout under Python 3""" + + def test_write_unicode(self): + fo = io.FileOutput(destination=self.udrain, encoding='unicode', + autoclose=False) + fo.write(self.udata) + self.assertEqual(self.udrain.getvalue(), self.udata) + + def test_write_utf8(self): + if sys.version_info >= (3,0): + fo = io.FileOutput(destination=self.udrain, encoding='utf8', + autoclose=False) + fo.write(self.udata) + self.assertEqual(self.udrain.getvalue(), self.udata) + else: + fo = io.FileOutput(destination=self.bdrain, encoding='utf8', + autoclose=False) + fo.write(self.udata) + self.assertEqual(self.bdrain.getvalue(), self.udata.encode('utf8')) + + # With destination in binary mode, data must be binary string + # and is written as-is: + def test_write_bytes(self): + fo = io.FileOutput(destination=self.bdrain, encoding='utf8', + mode='wb', autoclose=False) + fo.write(self.bdata) + self.assertEqual(self.bdrain.getvalue(), self.bdata) + + # Test for Python 3 features: + if sys.version_info >= (3,0): + def test_write_bytes_to_stdout(self): + # binary data is written to destination.buffer, if the + # destination is sys.stdout or sys.stdin + backup = sys.stdout + sys.stdout = self.mock_stdout + fo = io.FileOutput(destination=sys.stdout, mode='wb', + autoclose=False) + fo.write(self.bdata) + self.assertEqual(self.mock_stdout.buffer.getvalue(), + self.bdata) + sys.stdout = backup + + def test_encoding_clash(self): + # Raise error, if given and destination encodings differ + # TODO: try the `write to .buffer` scheme instead? + self.assertRaises(ValueError, + io.FileOutput, destination=self.mock_stdout, + encoding='latin1') + + if __name__ == '__main__': unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-13 23:27:10
|
Revision: 7442 http://docutils.svn.sourceforge.net/docutils/?rev=7442&view=rev Author: milde Date: 2012-06-13 23:27:03 +0000 (Wed, 13 Jun 2012) Log Message: ----------- Make tools/ compatible with both, Python 2 and 3 without 2to3-conversion. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/README.txt trunk/docutils/setup.cfg trunk/docutils/setup.py trunk/docutils/tools/buildhtml.py trunk/docutils/tools/dev/create_unimap.py trunk/docutils/tools/dev/profile_docutils.py trunk/docutils/tools/dev/unicode2rstsubs.py trunk/docutils/tools/quicktest.py trunk/docutils/tools/test/test_buildhtml.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/HISTORY.txt 2012-06-13 23:27:03 UTC (rev 7442) @@ -25,9 +25,13 @@ * docutils/test/ - Make tests independent from the location of the ``test/`` directory. - - Use converted sources from the ``build/`` directory for tests under + - Use converted sources (from the ``build/`` directory) for tests under Python 3. +* docutils/tools/ + + - Make tools compatible with both, Python 2 and 3 without 2to3-conversion. + * docutils/io.py - Fix writing binary data to sys.stdout under Python 3 (allows Modified: trunk/docutils/README.txt =================================================================== --- trunk/docutils/README.txt 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/README.txt 2012-06-13 23:27:03 UTC (rev 7442) @@ -14,45 +14,33 @@ Quick-Start =========== -This is for those who want to get up & running quickly. Read on for -complete details. +This is for those who want to get up & running quickly. -1. Get and install the latest release of Python, available from +1. Docutils requires Python (version 2.3 or later), available from - http://www.python.org/ + http://www.python.org/ - Docutils is compatible with Python versions from 2.3 up to 2.7 and - versions 3.1 and 3.2. (Support for Python 3 is new and might still - have some issues.) + See Requirements_ below for details. -2. Use the latest Docutils code. Get the code from Subversion or from - the snapshot: +2. Use the latest Docutils code. Get the code from the `Subversion + repository`_ or from the snapshot: - http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/docutils/?view=tar + http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/docutils/?view=tar See `Releases & Snapshots`_ below for details. 3. Unpack the tarball in a temporary directory (**not** directly in - Python's ``site-packages``) and run ``setup.py install`` or - ``install.py`` with admin rights. On Windows systems it may be - sufficient to double-click ``install.py``. On Unix or Mac OS X, - type:: + Python's ``site-packages``), go to the directory created by expanding + the archive, and run ``setup.py install`` with admin rights. On + Windows systems it may be sufficient to double-click ``install.py``. - su - (enter admin password) - ./setup.py install - - Docutils will only work with Python 3, if installed with a Python - version >= 3. If your default Python version is 2.x, also call - ``python3 setup.py install`` from the temporary directory. See Installation_ below for details. -4. Use a front-end tool from the "tools" subdirectory of the same - directory as in step 3. For example:: +4. Use the front-end scripts to convert reStructuredText documents. + Try for example:: - cd tools - ./rst2html.py ../FAQ.txt ../FAQ.html (Unix) - python rst2html.py ..\FAQ.txt ..\FAQ.html (Windows) + rst2html.py FAQ.txt FAQ.html (Unix) + python tools/rst2html.py FAQ.txt FAQ.html (Windows) See Usage_ below for details. @@ -103,8 +91,9 @@ * Snapshot of the Sandbox (experimental, contributed code): http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/sandbox/?view=tar -To keep up to date on the latest developments, download fresh copies -of the snapshots regularly. (There's also the `Subversion repository`_.) +To keep up to date on the latest developments, download fresh copies of +the snapshots regularly or use a working copy of the +`Subversion repository`_. .. _Subversion repository: docs/dev/repository.html @@ -112,22 +101,49 @@ Requirements ============ -To run the code, Python 2.3 or later must already be installed. -Python is available from -http://www.python.org/. +To run the code, Python_ must be installed. +Docutils is compatible with Python versions from 2.3 up to 2.7 and +versions 3.1 and 3.2 (cf. `Python 3 compatibility`_). Docutils uses the following packages for enhanced functionality, if they are installed: -* The `Python Imaging Library`, or PIL, is used for some image +* The `Python Imaging Library`_, or PIL, is used for some image manipulation operations. * The `Pygments`_ syntax highlighter is used for content of `code` directives and roles. +.. _Python: http://www.python.org/. .. _Python Imaging Library: http://www.pythonware.com/products/pil/ -.. _pygments: http://pygments.org/ +.. _Pygments: http://pygments.org/ + +Python 3 compatibility +---------------------- + +The Docutils codebase is written for Python 2 and uses "on-demand" +translation for `porting to Python 3`_. + +* The `setup.py` script generates Python 3 compatible sources in + ``build/`` and tests in ``tests3/`` sub-directories during + installation_ with Python 3. + +* The scripts in the ``tools/`` sub-directory work with all supported + Python versions without conversion. + +* To convert the sources without installing (e.g. for testing), run + ``python3 setup.py build``. + +* When editing the source, do changes on the Python 2 versions of the + files and re-run the build command. + +Using Docutils with Python 3.x is less tested and might still have some +issues. + +.. _porting to Python 3: http://docs.python.org/py3k/howto/pyporting.html + + Project Files & Directories =========================== @@ -180,7 +196,13 @@ if you're planning to modify it. See `Running the Test Suite`_ below. +Generated directories when installing under Python 3: +* build: Converted sources. + +* test3: Converted tests. + + Installation ============ @@ -199,20 +221,27 @@ cd <archive_directory_path> -3. Install the package:: +3. Install the package (you may need root permissions to complete this + step):: + su + (enter admin password) python setup.py install If the python executable isn't on your path, you'll have to specify - the complete path, such as /usr/local/bin/python. You may need - root permissions to complete this step. + the complete path, such as ``/usr/local/bin/python``. - To install for a specific python version, use this version in the + To install for a specific Python version, use this version in the setup call, e.g. :: python3.1 setup.py install + To install for different Python versions, repeat step 3 for every + required version. The last installed version will be used in the + `shebang line`_ of the ``rst2*.py`` wrapper scripts. + .. _shebang line: http://en.wikipedia.org/wiki/Shebang_%28Unix%29 + Windows ------- @@ -233,23 +262,37 @@ To install for a specific python version, specify the Python executable for this version. -Developing under Python 3 -------------------------- + To install for different Python versions, repeat step 3 for every + required version. -Under Python 3, installing with ``setup.py`` converts the source to Python 3 -compatible code before installing. If you want to test or develop Docutils, -also run ``python3 setup.py build``. This will generate Python 3 compatible -sources, in the ``build/`` sub-directory, tests in ``tests3/``, and -developer tools in ``tools3``. +Optional steps: -Do changes on the Python 2 versions of the sources and re-run the build -command. This works incrementally, so if you change one file it will only -reconvert that file the next time you run setup.py build. +* `running the test suite`_ +* `converting the documentation`_ + Usage ===== +There are many front-end tools in the unpacked "tools" subdirectory. +Installation under Unix places copies in the PATH. +You may want to begin with the "rst2html.py" front-end tool. Most +tools take up to two arguments, the source path and destination path, +with STDIN and STDOUT being the defaults. Use the "--help" option to +the front-end tools for details on options and arguments. See +Docutils Front-End Tools (``docs/user/tools.txt``) for full documentation. + +The package modules are continually growing and evolving. The +``docutils.statemachine`` module is usable independently. It contains +extensive inline documentation (in reStructuredText format of course). + +Contributions are welcome! + + +Converting the documentation +============================ + After unpacking and installing the Docutils package, the following shell commands will generate HTML for all included documentation:: @@ -270,34 +313,19 @@ tools/buildhtml.py --config=tools/docutils.conf (Unix) python tools\buildhtml.py --config=tools\docutils.conf (Windows) -With Python 3, call:: - - build/<Python-3-subdir>/tools/buildhtml.py --config=tools/docutils.conf - Some files may generate system messages (warnings and errors). The ``docs/user/rst/demo.txt`` file (under the archive directory) contains five intentional errors. (They test the error reporting mechanism!) -There are many front-end tools in the unpacked "tools" subdirectory. -You may want to begin with the "rst2html.py" front-end tool. Most -tools take up to two arguments, the source path and destination path, -with STDIN and STDOUT being the defaults. Use the "--help" option to -the front-end tools for details on options and arguments. See -Docutils Front-End Tools (``docs/user/tools.txt``) for full documentation. -The package modules are continually growing and evolving. The -``docutils.statemachine`` module is usable independently. It contains -extensive inline documentation (in reStructuredText format of course). - -Contributions are welcome! - - Running the Test Suite ====================== -To run the entire test suite, after installation_ open a shell and use -the following commands:: +The test suite is documented in `Docutils Testing`_ (docs/dev/testing.txt). +To run the entire test suite, open a shell and use the following +commands:: + cd <archive_directory_path>/test ./alltests.py @@ -340,9 +368,8 @@ cd ..\tools python quicktest.py --version -For Python 3, the path is ``tools3/quicktest.py``. - +.. _Docutils Testing: http://docutils.sourceforge.net/docs/dev/testing.html .. _open a bug report: http://sourceforge.net/tracker/?group_id=38414&atid=422030 .. _send email: mailto:doc...@li... Modified: trunk/docutils/setup.cfg =================================================================== --- trunk/docutils/setup.cfg 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/setup.cfg 2012-06-13 23:27:03 UTC (rev 7442) @@ -8,3 +8,7 @@ THANKS.txt docs/ licenses/ + +# [build] +# executable = /usr/bin/env python +# Uncomment to keep unchanged in the "shebang line" of front-end scripts Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/setup.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -28,11 +28,11 @@ class copy_build_py_2to3(build_py_2to3): """Copy/convert Python source files in given directories recursively. - Build py3k versions of the modules and packages. Also copy - 'tools/' and 'test/' dirs and run 2to3 on *.py files. + Build py3k versions of the modules and packages. + Also copy 'test/' suite and run 2to3 on *.py files. """ manifest_in = """\ - exclude *.pyc *~ .DS_Store rst2*.py rstpep2html.py + exclude *.pyc *~ .DS_Store recursive-exclude * *.pyc *~ .DS_Store recursive-exclude functional/output * include functional/output/README.txt @@ -45,11 +45,9 @@ """ def run(self): build_py_2to3.run(self) - print("copying aux dirs") + print("copy/convert test suite") loglevel = log.set_threshold(log.ERROR) - for source in ['tools', 'test']: - dest = source + '3' - copydir_run_2to3(source, dest, template=self.manifest_in) + copydir_run_2to3('test', 'test3', template=self.manifest_in) log.set_threshold(loglevel) Modified: trunk/docutils/tools/buildhtml.py =================================================================== --- trunk/docutils/tools/buildhtml.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/buildhtml.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -200,13 +200,13 @@ settings = self.get_settings('', directory) errout = ErrorOutput(encoding=settings.error_encoding) if settings.prune and (os.path.abspath(directory) in settings.prune): - print >>errout, ('/// ...Skipping directory (pruned): %s' % - directory) + errout.write('/// ...Skipping directory (pruned): %s\n' % + directory) sys.stderr.flush() del subdirectories[:] return if not self.initial_settings.silent: - print >>errout, '/// Processing directory: %s' % directory + errout.write('/// Processing directory: %s' % directory) sys.stderr.flush() # settings.ignore grows many duplicate entries as we recurse # if we add patterns in config files or on the command line. @@ -230,7 +230,7 @@ settings._source = os.path.normpath(os.path.join(directory, name)) settings._destination = settings._source[:-4]+'.html' if not self.initial_settings.silent: - print >>errout, ' ::: Processing: %s' % name + errout.write(' ::: Processing: %s\n' % name) sys.stderr.flush() try: if not settings.dry_run: @@ -240,8 +240,9 @@ parser_name='restructuredtext', writer_name=pub_struct.writer_name, settings=settings) - except ApplicationError, error: - print >>errout, ' %s' % ErrorString(error) + except ApplicationError: + error = sys.exc_info()[1] # get exception in Python <2.6 and 3.x + errout.write(' %s\n' % ErrorString(error)) if __name__ == "__main__": Modified: trunk/docutils/tools/dev/create_unimap.py =================================================================== --- trunk/docutils/tools/dev/create_unimap.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/dev/create_unimap.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -13,8 +13,15 @@ import sys import pprint +if sys.version_info >= (3,0): + unicode = str +else: + bytes = str + chr = unichr + + def w(s): - if isinstance(s, unicode): + if sys.version_info >= (3,0) and isinstance(s, unicode): s = s.encode('utf8') sys.stdout.write(s) @@ -39,9 +46,9 @@ continue latex_code = n.childNodes[0].nodeValue.encode('ascii').strip() if node.attributes['mode'].value == 'math': - math_map[unichr(int(code))] = '$%s$' % latex_code + math_map[chr(int(code))] = '$%s$' % latex_code else: - text_map[unichr(int(code))] = '{%s}' % latex_code + text_map[chr(int(code))] = '{%s}' % latex_code def call_visitor(node, visitor=Visitor()): if isinstance(node, minidom.Text): @@ -63,16 +70,16 @@ # Now unicode_map contains the text entries plus dollar-enclosed math # entries for those chars for which no text entry exists. -print '# $%s$' % 'Id' -print '# Author: Lea Wiemann <LeW...@gm...>' -print '# Copyright: This file has been placed in the public domain.' -print -print '# This is a mapping of Unicode characters to LaTeX equivalents.' -print '# The information has been extracted from' -print '# <http://www.w3.org/2003/entities/xml/unicode.xml>, written by' -print '# David Carlisle and Sebastian Rahtz.' -print '#' -print '# The extraction has been done by the "create_unimap.py" script' -print '# located at <http://docutils.sf.net/tools/dev/create_unimap.py>.' -print -print 'unicode_map = %s' % pprint.pformat(unicode_map, indent=0) +print('# $%s$' % 'Id') +print('# Author: Lea Wiemann <LeW...@gm...>') +print('# Copyright: This file has been placed in the public domain.') +print('') +print('# This is a mapping of Unicode characters to LaTeX equivalents.') +print('# The information has been extracted from') +print('# <http://www.w3.org/2003/entities/xml/unicode.xml>, written by') +print('# David Carlisle and Sebastian Rahtz.') +print('#') +print('# The extraction has been done by the "create_unimap.py" script') +print('# located at <http://docutils.sf.net/tools/dev/create_unimap.py>.') +print('') +print('unicode_map = %s' % pprint.pformat(unicode_map, indent=0)) Modified: trunk/docutils/tools/dev/profile_docutils.py =================================================================== --- trunk/docutils/tools/dev/profile_docutils.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/dev/profile_docutils.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -8,25 +8,25 @@ import docutils.core import hotshot.stats -print 'Profiler started.' +print('Profiler started.') os.chdir(os.path.join(os.path.dirname(docutils.__file__), '..')) -print 'Profiling...' +print('Profiling...') prof = hotshot.Profile('docutils.prof') prof.runcall(docutils.core.publish_file, source_path='HISTORY.txt', destination_path='prof.HISTORY.html', writer_name='html') prof.close() -print 'Loading statistics...' +print('Loading statistics...') -print """ +print(""" stats = hotshot.stats.load('docutils.prof') stats.strip_dirs() stats.sort_stats('time') # 'cumulative'; 'calls' stats.print_stats(40) -""" +""") stats = hotshot.stats.load('docutils.prof') stats.strip_dirs() Modified: trunk/docutils/tools/dev/unicode2rstsubs.py =================================================================== --- trunk/docutils/tools/dev/unicode2rstsubs.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/dev/unicode2rstsubs.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -27,12 +27,12 @@ from xml.parsers.expat import ParserCreate -usage_msg = """Usage: %s [unicode.xml]""" +usage_msg = """Usage: %s [unicode.xml]\n""" def usage(prog, status=0, msg=None): - print >>sys.stderr, usage_msg % prog + sys.stderr.write(usage_msg % prog) if msg: - print >>sys.stderr, msg + sys.stderr.write(msg + '\n') sys.exit(status) def main(argv=None): @@ -47,7 +47,10 @@ inpath = 'unicode.xml' if not os.path.isfile(inpath): usage(argv[0], 1, 'No such file: "%s".' % inpath) - infile = open(inpath) + if sys.version_info >= (3,0): + infile = open(inpath, mode='rb') + else: + infile = open(inpath) process(infile) def process(infile): @@ -130,7 +133,7 @@ if not set: return if set not in self.sets: - print 'bad set: %r' % set + print('bad set: %r' % set) return entity = attributes['id'] assert (entity not in self.sets[set] @@ -159,7 +162,7 @@ return name def write_sets(self): - sets = self.sets.keys() + sets = list(self.sets.keys()) sets.sort() for set_name in sets: self.write_set(set_name) @@ -170,8 +173,8 @@ else: outname = set_name + '.txt' outfile = open(outname, 'w') - print 'writing file "%s"' % outname - print >>outfile, self.header + print('writing file "%s"' % outname) + outfile.write(self.header + '\n') set = self.sets[set_name] entities = [(e.lower(), e) for e in set.keys()] entities.sort() @@ -193,9 +196,9 @@ if int(code, 16) > 0xFFFF: return 1 # wide-Unicode character codes = ' '.join(['U+%s' % code for code in charid[1:].split('-')]) - print >>outfile, ('.. %-*s unicode:: %s .. %s' - % (longest + 2, '|' + entity_name + '|', - codes, self.descriptions[charid])) + outfile.write('.. %-*s unicode:: %s .. %s\n' + % (longest + 2, '|' + entity_name + '|', + codes, self.descriptions[charid])) if __name__ == '__main__': Modified: trunk/docutils/tools/quicktest.py =================================================================== --- trunk/docutils/tools/quicktest.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/quicktest.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -52,21 +52,21 @@ the data structure: (long option, short option, description).""" def usage(): - print usage_header + print(usage_header) for longopt, shortopt, description in options: if longopt[-1:] == '=': opts = '-%s arg, --%sarg' % (shortopt, longopt) else: opts = '-%s, --%s' % (shortopt, longopt) - print '%-15s' % opts, + sys.stdout.write('%-15s' % opts) if len(opts) > 14: - print '%-16s' % '\n', + sys.stdout.write('%-16s' % '\n') while len(description) > 60: limit = description.rindex(' ', 0, 60) - print description[:limit].strip() + print(description[:limit].strip()) description = description[limit + 1:] - print '%-15s' % ' ', - print description + sys.stdout.write('%-15s' % ' ') + print(description) def _pretty(input, document, optargs): return document.pformat() @@ -142,9 +142,9 @@ usage() sys.exit() elif o in ['-V', '--version']: - print >>sys.stderr, ('quicktest.py (Docutils %s [%s])' - % (docutils.__version__, - docutils.__version_details__)) + sys.stderr.write('quicktest.py (Docutils %s [%s])\n' % + (docutils.__version__, + docutils.__version_details__)) sys.exit() elif o in ['-r', '--rawxml']: outputFormat = 'rawxml' @@ -162,9 +162,9 @@ elif o in ['-d', '--debug']: optargs['debug'] = 1 else: - raise getopt.GetoptError, "getopt should have saved us!" + raise getopt.GetoptError("getopt should have saved us!") if len(args) > 2: - print 'Maximum 2 arguments allowed.' + print('Maximum 2 arguments allowed.') usage() sys.exit(1) inputFile = sys.stdin Modified: trunk/docutils/tools/test/test_buildhtml.py =================================================================== --- trunk/docutils/tools/test/test_buildhtml.py 2012-06-13 15:05:46 UTC (rev 7441) +++ trunk/docutils/tools/test/test_buildhtml.py 2012-06-13 23:27:03 UTC (rev 7442) @@ -25,18 +25,31 @@ import unittest import os import re +try: + import tempfile +except ImportError: + pass +try: + from subprocess import Popen, PIPE, STDOUT +except ImportError: + pass def process_and_return_filelist(options): dirs = [] files = [] - cin, cout = os.popen4("../buildhtml.py "+options) + try: + p = Popen("../buildhtml.py "+options, shell=True, + stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) + (cin, cout) = (p.stdin, p.stdout) + except NameError: + cin, cout = os.popen4("../buildhtml.py "+options) while 1: - ln = cout.readline() - if not ln: + line = cout.readline() + if not line: break # BUG no colon in filename/path allowed - item = ln.split(":")[-1].strip() - if ln.startswith(" "): + item = line.split(":")[-1].strip() + if line.startswith(" "): files.append(item) else: dirs.append(item) @@ -58,8 +71,12 @@ ) def setUp(self): - self.root = os.tempnam() - os.mkdir(self.root) + try: + self.root = tempfile.mkdtemp() + except NameError: + self.root = os.tempnam() + os.mkdir(self.root) + for s in self.tree: s = os.path.join(self.root, s) if not "." in s: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gr...@us...> - 2012-06-17 20:47:18
|
Revision: 7446 http://docutils.svn.sourceforge.net/docutils/?rev=7446&view=rev Author: grubert Date: 2012-06-17 20:47:10 +0000 (Sun, 17 Jun 2012) Log Message: ----------- Release 0.9.1: set version number to 0.9.1 Modified Paths: -------------- trunk/docutils/docutils/__init__.py trunk/docutils/setup.py trunk/docutils/test/functional/expected/compact_lists.html trunk/docutils/test/functional/expected/dangerous.html trunk/docutils/test/functional/expected/field_name_limit.html trunk/docutils/test/functional/expected/math_output_html.html trunk/docutils/test/functional/expected/math_output_latex.html trunk/docutils/test/functional/expected/math_output_mathjax.html trunk/docutils/test/functional/expected/math_output_mathml.xhtml trunk/docutils/test/functional/expected/misc_rst_html4css1.html trunk/docutils/test/functional/expected/pep_html.html trunk/docutils/test/functional/expected/standalone_rst_html4css1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html Modified: trunk/docutils/docutils/__init__.py =================================================================== --- trunk/docutils/docutils/__init__.py 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/docutils/__init__.py 2012-06-17 20:47:10 UTC (rev 7446) @@ -49,14 +49,14 @@ __docformat__ = 'reStructuredText' -__version__ = '0.10' +__version__ = '0.9.1' """``major.minor.micro`` version number. The micro number is bumped for API changes, for new functionality, and for interim project releases. The minor number is bumped whenever there is a significant project release. The major number will be bumped when the project is feature-complete, and perhaps if there is a major change in the design.""" -__version_details__ = 'repository' +__version_details__ = 'release' """Extra version details (e.g. 'snapshot 2005-05-29, r3410', 'repository', 'release'), modified automatically & manually.""" Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/setup.py 2012-06-17 20:47:10 UTC (rev 7446) @@ -113,7 +113,7 @@ 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.10', + 'version': '0.9.1', 'author': 'David Goodger', 'author_email': 'go...@py...', 'license': 'public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)', Modified: trunk/docutils/test/functional/expected/compact_lists.html =================================================================== --- trunk/docutils/test/functional/expected/compact_lists.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/compact_lists.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/dangerous.html =================================================================== --- trunk/docutils/test/functional/expected/dangerous.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/dangerous.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/field_name_limit.html =================================================================== --- trunk/docutils/test/functional/expected/field_name_limit.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/field_name_limit.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/math_output_html.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_html.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/math_output_html.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> <link rel="stylesheet" href="../input/data/math.css" type="text/css" /> Modified: trunk/docutils/test/functional/expected/math_output_latex.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_latex.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/math_output_latex.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/math_output_mathjax.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> Modified: trunk/docutils/test/functional/expected/math_output_mathml.xhtml =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/misc_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/misc_rst_html4css1.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/misc_rst_html4css1.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="foo&bar.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/pep_html.html =================================================================== --- trunk/docutils/test/functional/expected/pep_html.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/pep_html.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -8,7 +8,7 @@ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> + <meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>PEP 100 -- Test PEP</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/standalone_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <title>reStructuredText Test Document</title> <meta name="author" content="David Goodger" /> <meta name="authors" content="Me Myself I" /> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Slide Shows</title> <meta name="author" content="David Goodger" /> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-06-17 20:44:28 UTC (rev 7445) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-06-17 20:47:10 UTC (rev 7446) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Slide Shows</title> <meta name="author" content="David Goodger" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gr...@us...> - 2012-06-17 20:47:51
|
Revision: 7447 http://docutils.svn.sourceforge.net/docutils/?rev=7447&view=rev Author: grubert Date: 2012-06-17 20:47:44 +0000 (Sun, 17 Jun 2012) Log Message: ----------- Release 0.9.1: closed "Changes Since ..." section Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-17 20:47:10 UTC (rev 7446) +++ trunk/docutils/HISTORY.txt 2012-06-17 20:47:44 UTC (rev 7447) @@ -13,8 +13,8 @@ .. contents:: -Changes Since 0.9 -================= +Release 0.9.1 (2012-06-17) +========================== * docutils/setup.py Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-17 20:47:10 UTC (rev 7446) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-17 20:47:44 UTC (rev 7447) @@ -45,8 +45,8 @@ :0.10 + n+1: remove the `handle_io_errors` option. -Changes Since 0.9 -================= +Release 0.9.1 (2012-06-17) +========================== * General: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gr...@us...> - 2012-06-17 22:39:53
|
Revision: 7455 http://docutils.svn.sourceforge.net/docutils/?rev=7455&view=rev Author: grubert Date: 2012-06-17 22:39:47 +0000 (Sun, 17 Jun 2012) Log Message: ----------- Release 0.9.1: added empty "Changes Since 0.9.1" section Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-17 22:39:21 UTC (rev 7454) +++ trunk/docutils/HISTORY.txt 2012-06-17 22:39:47 UTC (rev 7455) @@ -13,6 +13,10 @@ .. contents:: +Changes Since 0.9.1 +=================== + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-17 22:39:21 UTC (rev 7454) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-17 22:39:47 UTC (rev 7455) @@ -45,6 +45,10 @@ :0.10 + n+1: remove the `handle_io_errors` option. +Changes Since 0.9.1 +=================== + + Release 0.9.1 (2012-06-17) ========================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gr...@us...> - 2012-06-17 22:41:38
|
Revision: 7456 http://docutils.svn.sourceforge.net/docutils/?rev=7456&view=rev Author: grubert Date: 2012-06-17 22:41:31 +0000 (Sun, 17 Jun 2012) Log Message: ----------- Release 0.9.1: set version number to 0.10 Modified Paths: -------------- trunk/docutils/docutils/__init__.py trunk/docutils/setup.py trunk/docutils/test/functional/expected/compact_lists.html trunk/docutils/test/functional/expected/dangerous.html trunk/docutils/test/functional/expected/field_name_limit.html trunk/docutils/test/functional/expected/math_output_html.html trunk/docutils/test/functional/expected/math_output_latex.html trunk/docutils/test/functional/expected/math_output_mathjax.html trunk/docutils/test/functional/expected/math_output_mathml.xhtml trunk/docutils/test/functional/expected/misc_rst_html4css1.html trunk/docutils/test/functional/expected/pep_html.html trunk/docutils/test/functional/expected/standalone_rst_html4css1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html Modified: trunk/docutils/docutils/__init__.py =================================================================== --- trunk/docutils/docutils/__init__.py 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/docutils/__init__.py 2012-06-17 22:41:31 UTC (rev 7456) @@ -49,7 +49,7 @@ __docformat__ = 'reStructuredText' -__version__ = '0.9.1' +__version__ = '0.10' """``major.minor.micro`` version number. The micro number is bumped for API changes, for new functionality, and for interim project releases. The minor number is bumped whenever there is a significant project release. The major Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/setup.py 2012-06-17 22:41:31 UTC (rev 7456) @@ -113,7 +113,7 @@ 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.9.1', + 'version': '0.10', 'author': 'David Goodger', 'author_email': 'go...@py...', 'license': 'public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)', Modified: trunk/docutils/test/functional/expected/compact_lists.html =================================================================== --- trunk/docutils/test/functional/expected/compact_lists.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/compact_lists.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/dangerous.html =================================================================== --- trunk/docutils/test/functional/expected/dangerous.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/dangerous.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/field_name_limit.html =================================================================== --- trunk/docutils/test/functional/expected/field_name_limit.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/field_name_limit.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/math_output_html.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_html.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/math_output_html.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> <link rel="stylesheet" href="../input/data/math.css" type="text/css" /> Modified: trunk/docutils/test/functional/expected/math_output_latex.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_latex.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/math_output_latex.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/math_output_mathjax.html =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/math_output_mathjax.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> Modified: trunk/docutils/test/functional/expected/math_output_mathml.xhtml =================================================================== --- trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/math_output_mathml.xhtml 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>Mathematics</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/misc_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/misc_rst_html4css1.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/misc_rst_html4css1.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title></title> <link rel="stylesheet" href="foo&bar.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/pep_html.html =================================================================== --- trunk/docutils/test/functional/expected/pep_html.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/pep_html.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -8,7 +8,7 @@ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> + <meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>PEP 100 -- Test PEP</title> <link rel="stylesheet" href="../input/data/html4css1.css" type="text/css" /> </head> Modified: trunk/docutils/test/functional/expected/standalone_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <title>reStructuredText Test Document</title> <meta name="author" content="David Goodger" /> <meta name="authors" content="Me Myself I" /> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_1.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Slide Shows</title> <meta name="author" content="David Goodger" /> Modified: trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-06-17 22:39:47 UTC (rev 7455) +++ trunk/docutils/test/functional/expected/standalone_rst_s5_html_2.html 2012-06-17 22:41:31 UTC (rev 7456) @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.9.1: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" /> <meta name="version" content="S5 1.1" /> <title>Slide Shows</title> <meta name="author" content="David Goodger" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-22 19:50:00
|
Revision: 7463 http://docutils.svn.sourceforge.net/docutils/?rev=7463&view=rev Author: milde Date: 2012-06-22 19:49:51 +0000 (Fri, 22 Jun 2012) Log Message: ----------- Drop support for Python 2.3. Modified Paths: -------------- trunk/docutils/FAQ.txt trunk/docutils/HISTORY.txt trunk/docutils/README.txt trunk/docutils/RELEASE-NOTES.txt trunk/docutils/docs/dev/distributing.txt trunk/docutils/docs/dev/policies.txt trunk/docutils/docs/dev/testing.txt trunk/docutils/docs/user/config.txt trunk/docutils/docs/user/rst/cheatsheet.txt trunk/docutils/docutils/utils/punctuation_chars.py trunk/docutils/docutils/writers/latex2e/__init__.py trunk/docutils/setup.py trunk/docutils/test/DocutilsTestSupport.py trunk/docutils/test/test_dependencies.py trunk/docutils/test/test_io.py trunk/docutils/test/test_nodes.py trunk/docutils/test/test_parsers/test_parser.py trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py trunk/docutils/test/test_settings.py trunk/docutils/test/test_statemachine.py trunk/docutils/test/test_traversals.py trunk/docutils/test/test_viewlist.py trunk/docutils/test/test_writers/test_latex2e.py Removed Paths: ------------- trunk/docutils/docutils/_string_template_compat.py Modified: trunk/docutils/FAQ.txt =================================================================== --- trunk/docutils/FAQ.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/FAQ.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -527,79 +527,12 @@ How can I include mathematical equations in documents? ------------------------------------------------------ -There is no elegant built-in way, yet. There are several ideas, but -no obvious winner. This issue requires a champion to solve the -technical and aesthetic issues and implement a generic solution. -Here's the `to-do list entry`__. +Use the `math directive`_ and `math role`_, available since Docutils 0.8. -__ docs/dev/todo.html#math-markup +.. _math directive: docs/ref/rst/directives.html#math +.. _math role: docs/ref/rst/roles.html#math -There are several quick & dirty ways to include equations in documents. -They all presently use LaTeX syntax or dialects of it. -* For LaTeX output, nothing beats raw LaTeX math. A simple way is to - use the `raw directive`_:: - - .. raw:: latex - - \[ x^3 + 3x^2a + 3xa^2 + a^3, \] - - For inline math you could use substitutions of the raw directive but - the recently added `raw role`_ is more convenient. You must define a - custom role based on it once in your document:: - - .. role:: raw-latex(raw) - :format: latex - - and then you can just use the new role in your text:: - - the binomial expansion of :raw-latex:`$(x+a)^3$` is - - .. _raw directive: docs/ref/rst/directives.html#raw-data-pass-through - .. _raw role: docs/ref/rst/roles.html#raw - -* Jens Jørgen Mortensen has implemented a "latex-math" role and - directive, available from `his sandbox`__. - - __ http://docutils.sourceforge.net/sandbox/jensj/latex_math/ - -* For HTML the "Right" w3c-standard way to include math is MathML_. - Unfortunately its rendering is still quite broken (or absent) on many - browsers but it's getting better. Another bad problem is that typing - or reading raw MathML by humans is *really* painful, so embedding it - in a reST document with the raw directive would defy the goals of - readability and editability of reST (see an `example of raw MathML - <http://sf.net/mailarchive/message.php?msg_id=2177102>`__). - - A much less painful way to generate HTML+MathML is to use itex2mml_ to - convert a dialect of LaTeX syntax to presentation MathML. Here is an - example of potential `itex math markup - <http://article.gmane.org/gmane.text.docutils.user/118>`__. The - simplest way to use it is to add ``html`` to the format lists for the - raw directive/role and postprocess the resulting document with - itex2mml. This way you can *generate LaTeX and HTML+MathML from the - same source*, but you must limit yourself to the intersection of LaTeX - and itex markups for this to work. Alan G. Isaac wrote a detailed - HOWTO_ for this approach. - - .. _MathML: http://www.w3.org/Math/ - .. _itex2mml: http://pear.math.pitt.edu/mathzilla/itex2mml.html - .. _HOWTO: http://www.american.edu/econ/itex2mml/mathhack.rst - -* The other way to add math to HTML is to use images of the equations, - typically generated by TeX. This is inferior to MathML in the long - term but is perhaps more accessible nowdays. - - Of course, doing it by hand is too much work. Beni Cherniavsky has - written some `preprocessing scripts`__ for converting the - ``texmath`` role/directive into images for HTML output and raw - directives/subsitution for LaTeX output. This way you can *generate - LaTeX and HTML+images from the same source*. `Instructions here`__. - - __ http://docutils.sourceforge.net/sandbox/cben/rolehack/ - __ http://docutils.sourceforge.net/sandbox/cben/rolehack/README.html - - Is nested inline markup possible? --------------------------------- @@ -938,9 +871,9 @@ The HTML Writer module, ``docutils/writers/html4css1.py``, is a proof-of-concept reference implementation. While it is a complete -implementation, some aspects of the HTML it produces may be -incompatible with older browsers or specialized applications (such as -web templating). Alternate implementations are welcome. +implementation, some aspects of the HTML it produces may be incompatible +with older browsers or specialized applications (such as web templating). +The sandbox has some alternative HTML writers, contributions are welcome. What kind of HTML does it produce? @@ -964,7 +897,7 @@ No specific browser is targeted; all modern graphical browsers should work. Some older browsers, text-only browsers, and browsers without full CSS support are known to produce inferior results. Firefox, -Safari, Mozilla (version 1.0 and up), and MS Internet Explorer +Safari, Mozilla (version 1.0 and up), Opera, and MS Internet Explorer (version 5.0 and up) are known to give good results. Reports of experiences with other browsers are welcome. @@ -1243,14 +1176,10 @@ Yes, in conjunction with other projects. -Docstring extraction functionality from within Docutils is still under -development. There is most of a source code parsing module in -docutils/readers/python/moduleparser.py. We do plan to finish it -eventually. Ian Bicking wrote an initial front end for the -moduleparser.py module, in sandbox/ianb/extractor/extractor.py. Ian -also did some work on the Python Source Reader -(docutils.readers.python) component at PyCon DC 2004. +The Sphinx_ documentation generator includes an autodoc module. +.. _Sphinx: http://sphinx.pocoo.org/index.html + Version 2.0 of Ed Loper's `Epydoc <http://epydoc.sourceforge.net/>`_ supports reStructuredText-format docstrings for HTML output. Docutils 0.3 or newer is required. Development of a Docutils-specific Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/HISTORY.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -16,7 +16,11 @@ Changes Since 0.9.1 =================== +* General + + - Dropped support for Python 2.3. + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/README.txt =================================================================== --- trunk/docutils/README.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/README.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -16,7 +16,7 @@ This is for those who want to get up & running quickly. -1. Docutils requires Python (version 2.3 or later), available from +1. Docutils requires Python (version 2.4 or later), available from http://www.python.org/ @@ -102,7 +102,7 @@ ============ To run the code, Python_ must be installed. -Docutils is compatible with Python versions from 2.3 up to 2.7 and +Docutils is compatible with Python versions from 2.4 up to 2.7 and versions 3.1 and 3.2 (cf. `Python 3 compatibility`_). Docutils uses the following packages for enhanced functionality, if they are Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -19,8 +19,6 @@ Future changes ============== -* Support for Python 2.3 will be dropped in version 0.10. - * docutils/math, docutils/error_reporting.py, and docutils/urischemes.py will move to the utils package Code importing these modules needs to adapt, e.g.:: @@ -48,7 +46,16 @@ Changes Since 0.9.1 =================== +.. Note:: + Docutils 0.9.x is the last version supporting Python 2.3. + + Docutils 0.10 is compatible with Python versions from 2.4 to 2.7, + as well as 3.1 and 3.2 (cf. `Python 3 compatibility`_). + +.. _Python 3 compatibility: README.html#python-3-compatibility + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/docs/dev/distributing.txt =================================================================== --- trunk/docutils/docs/dev/distributing.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docs/dev/distributing.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -28,7 +28,7 @@ Docutils has the following dependencies: -* Python 2.3 or later is required. Use ">= Python 2.3" in the +* Python 2.4 or later is required. Use ">= Python 2.4" in the dependencies. * Docutils may optionally make use of the PIL (`Python Imaging Modified: trunk/docutils/docs/dev/policies.txt =================================================================== --- trunk/docutils/docs/dev/policies.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docs/dev/policies.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -88,7 +88,7 @@ Testing`_ for a description of the test suite in ``docutils/test/``. Ensure the addition works with all supported Python versions - (2.3 ... 3.2). + (2.4 ... 3.2). * Look at the Docutils sources to see how similar features are implemented, learn to do it "the Docutils way". Modified: trunk/docutils/docs/dev/testing.txt =================================================================== --- trunk/docutils/docs/dev/testing.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docs/dev/testing.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -33,23 +33,21 @@ Python Versions =============== -The Docutils 0.6 release supports Python 2.3 or later. Therefore, you should -actually have Pythons 2.3, as well as the latest Python (2.6 at the time +The Docutils 0.10 release supports Python 2.4 or later. Therefore, you should +actually have Pythons 2.4, as well as the latest Python (3.2 at the time of this writing) installed and always run the tests on all of them. (A good way to do that is to always run the test suite through a short script that runs ``alltests.py`` under each version of Python.) If you can't afford -installing 3 or more Python versions, the edge cases (2.3, and 2.6) should +installing 3 or more Python versions, the edge cases (2.4, and 3.2) should cover most of it. Good resources covering the differences between Python versions: -* `What's New in Python 2.3`__ * `What's New in Python 2.4`__ * `What's New in Python 2.5`__ * `What's New in Python 2.6`__ * `PEP 290 - Code Migration and Modernization`__ -__ http://www.python.org/doc/2.3.5/whatsnew/whatsnew23.html __ http://www.python.org/doc/2.4.4/whatsnew/whatsnew24.html __ http://www.python.org/doc/2.5.2/whatsnew/whatsnew25.html __ http://docs.python.org/whatsnew/2.6.html Modified: trunk/docutils/docs/user/config.txt =================================================================== --- trunk/docutils/docs/user/config.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docs/user/config.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -260,8 +260,8 @@ The error handler for unencodable characters in error output. See output_encoding_error_handler_ for acceptable values. - Default: "backslashreplace" for Python 2.3 and later; "replace" - otherwise. Options: ``--error-encoding-error-handler, + Default: "backslashreplace" + Options: ``--error-encoding-error-handler, --error-encoding, -e``. _`exit_status_level` @@ -376,8 +376,7 @@ Replace with the appropriate XML character reference, such as "``†``". backslashreplace - (Python 2.3+) Replace with backslashed escape sequences, such - as "``\u2020``". + Replace with backslashed escape sequences, such as "``\u2020``". Acceptable values are the same as for the "error" parameter of Python's ``encode`` string method; other values may be defined in @@ -659,9 +658,9 @@ .. Caution:: - * In versions older than 2.7.3 and 3.2.3, the newlines_ and indents_ - options may adversely affect whitespace; use them only for reading - convenience (see http://bugs.python.org/issue4147). + * In Python versions older than 2.7.3 and 3.2.3, the newlines_ and + indents_ options may adversely affect whitespace; use them only for + reading convenience (see http://bugs.python.org/issue4147). * The XML declaration carries text encoding information, without which standard tools may be unable to read the generated XML. Modified: trunk/docutils/docs/user/rst/cheatsheet.txt =================================================================== --- trunk/docutils/docs/user/rst/cheatsheet.txt 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docs/user/rst/cheatsheet.txt 2012-06-22 19:49:51 UTC (rev 7463) @@ -91,7 +91,7 @@ container Generic block-level container element [0.3.10] table Create a titled table [0.3.1] list-table Create a table from a uniform two-level bullet list [0.3.8] -csv-table Create a table from CSV data (requires Python 2.3+) [0.3.4] +csv-table Create a table from CSV data [0.3.4] contents Generate a table of contents sectnum Automatically number sections, subsections, etc. header, footer Create document decorations [0.3.8] Deleted: trunk/docutils/docutils/_string_template_compat.py =================================================================== --- trunk/docutils/docutils/_string_template_compat.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docutils/_string_template_compat.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -1,133 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf8 -*- - -# string_template_compat.py: string.Template for Python <= 2.4 -# ===================================================== - -# This is just an excerpt of the standard string module to provide backwards -# compatibility. - -import re as _re - -class _multimap: - """Helper class for combining multiple mappings. - - Used by .{safe_,}substitute() to combine the mapping and keyword - arguments. - """ - def __init__(self, primary, secondary): - self._primary = primary - self._secondary = secondary - - def __getitem__(self, key): - try: - return self._primary[key] - except KeyError: - return self._secondary[key] - - -class _TemplateMetaclass(type): - pattern = r""" - %(delim)s(?: - (?P<escaped>%(delim)s) | # Escape sequence of two delimiters - (?P<named>%(id)s) | # delimiter and a Python identifier - {(?P<braced>%(id)s)} | # delimiter and a braced identifier - (?P<invalid>) # Other ill-formed delimiter exprs - ) - """ - - def __init__(cls, name, bases, dct): - super(_TemplateMetaclass, cls).__init__(name, bases, dct) - if 'pattern' in dct: - pattern = cls.pattern - else: - pattern = _TemplateMetaclass.pattern % { - 'delim' : _re.escape(cls.delimiter), - 'id' : cls.idpattern, - } - cls.pattern = _re.compile(pattern, _re.IGNORECASE | _re.VERBOSE) - - -class Template: - """A string class for supporting $-substitutions.""" - __metaclass__ = _TemplateMetaclass - - delimiter = '$' - idpattern = r'[_a-z][_a-z0-9]*' - - def __init__(self, template): - self.template = template - - # Search for $$, $identifier, ${identifier}, and any bare $'s - - def _invalid(self, mo): - i = mo.start('invalid') - lines = self.template[:i].splitlines(True) - if not lines: - colno = 1 - lineno = 1 - else: - colno = i - len(''.join(lines[:-1])) - lineno = len(lines) - raise ValueError('Invalid placeholder in string: line %d, col %d' % - (lineno, colno)) - - def substitute(self, *args, **kws): - if len(args) > 1: - raise TypeError('Too many positional arguments') - if not args: - mapping = kws - elif kws: - mapping = _multimap(kws, args[0]) - else: - mapping = args[0] - # Helper function for .sub() - def convert(mo): - # Check the most common path first. - named = mo.group('named') or mo.group('braced') - if named is not None: - val = mapping[named] - # We use this idiom instead of str() because the latter will - # fail if val is a Unicode containing non-ASCII characters. - return '%s' % (val,) - if mo.group('escaped') is not None: - return self.delimiter - if mo.group('invalid') is not None: - self._invalid(mo) - raise ValueError('Unrecognized named group in pattern', - self.pattern) - return self.pattern.sub(convert, self.template) - - def safe_substitute(self, *args, **kws): - if len(args) > 1: - raise TypeError('Too many positional arguments') - if not args: - mapping = kws - elif kws: - mapping = _multimap(kws, args[0]) - else: - mapping = args[0] - # Helper function for .sub() - def convert(mo): - named = mo.group('named') - if named is not None: - try: - # We use this idiom instead of str() because the latter - # will fail if val is a Unicode containing non-ASCII - return '%s' % (mapping[named],) - except KeyError: - return self.delimiter + named - braced = mo.group('braced') - if braced is not None: - try: - return '%s' % (mapping[braced],) - except KeyError: - return self.delimiter + '{' + braced + '}' - if mo.group('escaped') is not None: - return self.delimiter - if mo.group('invalid') is not None: - return self.delimiter - raise ValueError('Unrecognized named group in pattern', - self.pattern) - return self.pattern.sub(convert, self.template) - Modified: trunk/docutils/docutils/utils/punctuation_chars.py =================================================================== --- trunk/docutils/docutils/utils/punctuation_chars.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docutils/utils/punctuation_chars.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -68,9 +68,8 @@ # (may shorten the search time considerably if there are many # categories with not too high characters): if cp_max is None: - # python 2.3: list comprehension instead of generator required - cp_max = max([x for x in xrange(sys.maxunicode + 1) - if unicodedata.category(unichr(x)) in categories]) + cp_max = max(x for x in xrange(sys.maxunicode + 1) + if unicodedata.category(unichr(x)) in categories) # print cp_max # => 74867 for unicode_punctuation_categories charlists = {} for cat in categories: Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -28,11 +28,6 @@ from docutils.transforms import writer_aux from docutils.math import pick_math_environment, unichar2tex -# compatibility module for Python 2.3 -if not hasattr(string, 'Template'): - import docutils._string_template_compat - string.Template = docutils._string_template_compat.Template - class Writer(writers.Writer): supported = ('latex','latex2e') Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/setup.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -214,8 +214,7 @@ ] # BUG pypi did not like fllowing languages # 'Natural Language :: Lithuanian', -"""Trove classifiers for the Distutils "register" command; -Python 2.3 and up.""" +"""Trove classifiers for the Distutils "register" command.""" if __name__ == '__main__' : do_setup() Modified: trunk/docutils/test/DocutilsTestSupport.py =================================================================== --- trunk/docutils/test/DocutilsTestSupport.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/DocutilsTestSupport.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -129,10 +129,6 @@ raise self.failureException, \ (msg or '%s == %s' % _format_str(first, second)) - # python 2.3 - if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - # aliases for assertion methods, deprecated since Python 2.7 failUnlessEqual = assertEquals = assertEqual Modified: trunk/docutils/test/test_dependencies.py =================================================================== --- trunk/docutils/test/test_dependencies.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_dependencies.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -29,10 +29,6 @@ class RecordDependenciesTests(unittest.TestCase): - # python 2.3 - if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - def get_record(self, **settings): recordfile = 'record.txt' recorder = docutils.utils.DependencyList(recordfile) @@ -40,12 +36,7 @@ settings.setdefault('source_path', os.path.join('data', 'dependencies.txt')) settings.setdefault('settings_overrides', {}) - if sys.version_info < (2, 4): - # python 2.3 update() takes no keyword arguments - settings['settings_overrides'].update({"_disable_config":True, - "record_dependencies":recorder}) - else: - settings['settings_overrides'].update(_disable_config=True, + settings['settings_overrides'].update(_disable_config=True, record_dependencies=recorder) docutils.core.publish_file(destination=DocutilsTestSupport.DevNull(), **settings) Modified: trunk/docutils/test/test_io.py =================================================================== --- trunk/docutils/test/test_io.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_io.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -15,10 +15,6 @@ from docutils.error_reporting import locale_encoding from test_error_reporting import BBuf, UBuf -# python 2.3 -if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - class mock_stdout(UBuf): encoding = 'utf8' Modified: trunk/docutils/test/test_nodes.py =================================================================== --- trunk/docutils/test/test_nodes.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_nodes.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -18,11 +18,6 @@ debug = False -# python 2.3 -if not hasattr(unittest.TestCase, "assertTrue"): - # HACK? this changes TestCase, fixes the problem for tests executing afterwards. - # this tests break if run alone - unittest.TestCase.assertTrue = unittest.TestCase.failUnless class TextTests(unittest.TestCase): @@ -250,8 +245,6 @@ (u'\u024b q with hook tail', 'q-q-with-hook-tail'), (u'\u024d r with stroke', 'r-r-with-stroke'), (u'\u024f y with stroke', 'y-y-with-stroke'), - ] - ids_unicode_not_2_2 = [ # From Latin-1 Supplements (u'\u00e0: a with grave', 'a-a-with-grave'), (u'\u00e1 a with acute', 'a-a-with-acute'), @@ -384,9 +377,6 @@ def test_make_id(self): failures = [] tests = self.ids + self.ids_unicode_all - import sys - if sys.version_info[:2] != (2, 2): - tests += self.ids_unicode_not_2_2 for input, expect in tests: output = nodes.make_id(input) if expect != output: Modified: trunk/docutils/test/test_parsers/test_parser.py =================================================================== --- trunk/docutils/test/test_parsers/test_parser.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_parsers/test_parser.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -26,7 +26,7 @@ if sys.version_info < (3,): # supplying string input is supported, but only if ascii-decodable - self.assertRaises(UnicodeError, # UnicodeDecodeError since py2.3 + self.assertRaises(UnicodeDecodeError, parser.parse, b('hol%s' % chr(224)), document) else: # input must be unicode at all times Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -1070,18 +1070,6 @@ ] -if csv: - # Rewrite csv tests that depend on the output of IOError as it is - # platform-dependent before python 2.4 for a unicode path. - # Here only needed for python 2.3 on non-windows - import sys - if sys.version_info < (2, 4) and not sys.platform.startswith('win'): - for i in range(len(totest['csv-table'])): - if totest['csv-table'][i][1].find("u'bogus.csv'") != -1: - totest['csv-table'][i][1] = totest['csv-table'][i][1].replace( - "u'bogus.csv'", "'bogus.csv'") - - if __name__ == '__main__': import unittest unittest.main(defaultTest='suite') Modified: trunk/docutils/test/test_settings.py =================================================================== --- trunk/docutils/test/test_settings.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_settings.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -23,11 +23,6 @@ warnings.filterwarnings(action='ignore', category=frontend.ConfigDeprecationWarning) -# python 2.3 -if not hasattr(unittest.TestCase, "assertTrue"): - # HACK? this changes TestCase, fixes the problem for tests executing afterwards. - # this tests break if run alone - unittest.TestCase.assertTrue = unittest.TestCase.failUnless def fixpath(path): return os.path.abspath(os.path.join(*(path.split('/')))) Modified: trunk/docutils/test/test_statemachine.py =================================================================== --- trunk/docutils/test/test_statemachine.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_statemachine.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -13,11 +13,6 @@ import re from DocutilsTestSupport import statemachine -# python 2.3 -if not hasattr(unittest.TestCase, "assertTrue"): - # HACK? this changes TestCase, fixes the problem for tests executing afterwards. - # this tests break if run alone - unittest.TestCase.assertTrue = unittest.TestCase.failUnless debug = False testtext = statemachine.string2lines("""\ Modified: trunk/docutils/test/test_traversals.py =================================================================== --- trunk/docutils/test/test_traversals.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_traversals.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -52,10 +52,6 @@ class StopTraversalTests(unittest.TestCase, docutils.SettingsSpec): - # python 2.3 - if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - """ Test interrupting the visitor during traversal. In this test we stop it when we reach an attention node. Modified: trunk/docutils/test/test_viewlist.py =================================================================== --- trunk/docutils/test/test_viewlist.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_viewlist.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -16,10 +16,6 @@ class ViewListTests(unittest.TestCase): - # python 2.3 - if not hasattr(unittest.TestCase, "assertTrue"): - assertTrue = unittest.TestCase.failUnless - a_list = list('abcdefg') b_list = list('AEIOU') c_list = list('XYZ') Modified: trunk/docutils/test/test_writers/test_latex2e.py =================================================================== --- trunk/docutils/test/test_writers/test_latex2e.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/test/test_writers/test_latex2e.py 2012-06-22 19:49:51 UTC (rev 7463) @@ -10,11 +10,6 @@ """ import string -# compatibility module for Python 2.3 -if not hasattr(string, 'Template'): - import docutils._string_template_compat - string.Template = docutils._string_template_compat.Template - from __init__ import DocutilsTestSupport def suite(): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-25 13:16:15
|
Revision: 7464 http://docutils.svn.sourceforge.net/docutils/?rev=7464&view=rev Author: milde Date: 2012-06-25 13:16:03 +0000 (Mon, 25 Jun 2012) Log Message: ----------- math, error_reporting, and urischemes moved to the utils package. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt trunk/docutils/docutils/__init__.py trunk/docutils/docutils/core.py trunk/docutils/docutils/frontend.py trunk/docutils/docutils/io.py trunk/docutils/docutils/parsers/rst/directives/misc.py trunk/docutils/docutils/parsers/rst/directives/tables.py trunk/docutils/docutils/parsers/rst/states.py trunk/docutils/docutils/statemachine.py trunk/docutils/docutils/utils/__init__.py trunk/docutils/docutils/utils/math/latex2mathml.py trunk/docutils/docutils/writers/html4css1/__init__.py trunk/docutils/docutils/writers/latex2e/__init__.py trunk/docutils/setup.py trunk/docutils/test/DocutilsTestSupport.py trunk/docutils/test/test_error_reporting.py trunk/docutils/test/test_io.py trunk/docutils/tools/buildhtml.py Added Paths: ----------- trunk/docutils/docutils/utils/error_reporting.py trunk/docutils/docutils/utils/math/ trunk/docutils/docutils/utils/urischemes.py Removed Paths: ------------- trunk/docutils/docutils/error_reporting.py trunk/docutils/docutils/math/ trunk/docutils/docutils/urischemes.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/HISTORY.txt 2012-06-25 13:16:03 UTC (rev 7464) @@ -19,6 +19,8 @@ * General - Dropped support for Python 2.3. + - ``docutils/math``, ``docutils/error_reporting.py``, and + ``docutils/urischemes.py`` moved to the utils package. Release 0.9.1 (2012-06-17) Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-25 13:16:03 UTC (rev 7464) @@ -19,15 +19,6 @@ Future changes ============== -* docutils/math, docutils/error_reporting.py, and - docutils/urischemes.py will move to the utils package - Code importing these modules needs to adapt, e.g.:: - - try: - import docutils.math as math - except ImportError: - import docutils.utils.math as math - * docutils.io.FileInput/FileOutput will no longer do a system-exit on IOError by default. @@ -50,9 +41,20 @@ Docutils 0.9.x is the last version supporting Python 2.3. - Docutils 0.10 is compatible with Python versions from 2.4 to 2.7, - as well as 3.1 and 3.2 (cf. `Python 3 compatibility`_). + Docutils 0.10 is compatible with Python versions from 2.4 to 3.2 + (cf. `Python 3 compatibility`_). +* General: + + - ``docutils/math``, ``docutils/error_reporting.py``, and + ``docutils/urischemes.py`` moved to the utils package. + Code importing these modules needs to adapt, e.g.:: + + try: + import docutils.math as math + except ImportError: + import docutils.utils.math as math + .. _Python 3 compatibility: README.html#python-3-compatibility Modified: trunk/docutils/docutils/__init__.py =================================================================== --- trunk/docutils/docutils/__init__.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/__init__.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -26,9 +26,6 @@ - statemachine.py: A finite state machine specialized for regular-expression-based text filters. -- urischemes.py: Contains a complete mapping of known URI addressing - scheme names to descriptions. - Subpackages: - languages: Language-specific mappings of terms. @@ -44,6 +41,12 @@ - utils: Contains the ``Reporter`` system warning class and miscellaneous utilities used by readers, writers, and transforms. + utils/urischemes.py: Contains a complete mapping of known URI addressing + scheme names to descriptions. + +- utils/math: Contains functions for conversion of mathematical notation + between different formats (LaTeX, MathML, text, ...). + - writers: Format-specific output translators. """ Modified: trunk/docutils/docutils/core.py =================================================================== --- trunk/docutils/docutils/core.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/core.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -20,7 +20,7 @@ from docutils import frontend, io, utils, readers, writers from docutils.frontend import OptionParser from docutils.transforms import Transformer -from docutils.error_reporting import ErrorOutput, ErrorString +from docutils.utils.error_reporting import ErrorOutput, ErrorString import docutils.readers.doctree class Publisher: Deleted: trunk/docutils/docutils/error_reporting.py =================================================================== --- trunk/docutils/docutils/error_reporting.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/error_reporting.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -1,207 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf8 -*- - -# :Id: $Id$ -# :Copyright: © 2011 Günter Milde. -# :License: Released under the terms of the `2-Clause BSD license`_, in short: -# -# Copying and distribution of this file, with or without modification, -# are permitted in any medium without royalty provided the copyright -# notice and this notice are preserved. -# This file is offered as-is, without any warranty. -# -# .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause - -""" -Error reporting should be safe from encoding/decoding errors. -However, implicit conversions of strings and exceptions like - ->>> u'%s world: %s' % ('H\xe4llo', Exception(u'H\xe4llo') - -fail in some Python versions: - -* In Python <= 2.6, ``unicode(<exception instance>)`` uses - `__str__` and fails with non-ASCII chars in`unicode` arguments. - (work around http://bugs.python.org/issue2517): - -* In Python 2, unicode(<exception instance>) fails, with non-ASCII - chars in arguments. (Use case: in some locales, the errstr - argument of IOError contains non-ASCII chars.) - -* In Python 2, str(<exception instance>) fails, with non-ASCII chars - in `unicode` arguments. - -The `SafeString`, `ErrorString` and `ErrorOutput` classes handle -common exceptions. -""" - -import sys, codecs - -# Guess the locale's encoding. -# If no valid guess can be made, locale_encoding is set to `None`: -try: - import locale # module missing in Jython -except ImportError: - locale_encoding = None -else: - locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1] - # locale.getpreferredencoding([do_setlocale=True|False]) - # has side-effects | might return a wrong guess. - # (cf. Update 1 in http://stackoverflow.com/questions/4082645/using-python-2-xs-locale-module-to-format-numbers-and-currency) - try: - codecs.lookup(locale_encoding or '') # None -> '' - except LookupError: - locale_encoding = None - - - -class SafeString(object): - """ - A wrapper providing robust conversion to `str` and `unicode`. - """ - - def __init__(self, data, encoding=None, encoding_errors='backslashreplace', - decoding_errors='replace'): - self.data = data - self.encoding = (encoding or getattr(data, 'encoding', None) or - locale_encoding or 'ascii') - self.encoding_errors = encoding_errors - self.decoding_errors = decoding_errors - - - def __str__(self): - try: - return str(self.data) - except UnicodeEncodeError, err: - if isinstance(self.data, Exception): - args = [str(SafeString(arg, self.encoding, - self.encoding_errors)) - for arg in self.data.args] - return ', '.join(args) - if isinstance(self.data, unicode): - return self.data.encode(self.encoding, self.encoding_errors) - raise - - def __unicode__(self): - """ - Return unicode representation of `self.data`. - - Try ``unicode(self.data)``, catch `UnicodeError` and - - * if `self.data` is an Exception instance, work around - http://bugs.python.org/issue2517 with an emulation of - Exception.__unicode__, - - * else decode with `self.encoding` and `self.decoding_errors`. - """ - try: - u = unicode(self.data) - if isinstance(self.data, EnvironmentError): - u = u.replace(": u'", ": '") # normalize filename quoting - return u - except UnicodeError, error: # catch ..Encode.. and ..Decode.. errors - if isinstance(self.data, EnvironmentError): - return u"[Errno %s] %s: '%s'" % (self.data.errno, - SafeString(self.data.strerror, self.encoding, - self.decoding_errors), - SafeString(self.data.filename, self.encoding, - self.decoding_errors)) - if isinstance(self.data, Exception): - args = [unicode(SafeString(arg, self.encoding, - decoding_errors=self.decoding_errors)) - for arg in self.data.args] - return u', '.join(args) - if isinstance(error, UnicodeDecodeError): - return unicode(self.data, self.encoding, self.decoding_errors) - raise - -class ErrorString(SafeString): - """ - Safely report exception type and message. - """ - def __str__(self): - return '%s: %s' % (self.data.__class__.__name__, - super(ErrorString, self).__str__()) - - def __unicode__(self): - return u'%s: %s' % (self.data.__class__.__name__, - super(ErrorString, self).__unicode__()) - - -class ErrorOutput(object): - """ - Wrapper class for file-like error streams with - failsave de- and encoding of `str`, `bytes`, `unicode` and - `Exception` instances. - """ - - def __init__(self, stream=None, encoding=None, - encoding_errors='backslashreplace', - decoding_errors='replace'): - """ - :Parameters: - - `stream`: a file-like object, - a string (path to a file), - `None` (write to `sys.stderr`, default), or - evaluating to `False` (write() requests are ignored). - - `encoding`: `stream` text encoding. Guessed if None. - - `encoding_errors`: how to treat encoding errors. - """ - if stream is None: - stream = sys.stderr - elif not(stream): - stream = False - # if `stream` is a file name, open it - elif isinstance(stream, str): - stream = open(stream, 'w') - elif isinstance(stream, unicode): - stream = open(stream.encode(sys.getfilesystemencoding()), 'w') - - self.stream = stream - """Where warning output is sent.""" - - self.encoding = (encoding or getattr(stream, 'encoding', None) or - locale_encoding or 'ascii') - """The output character encoding.""" - - self.encoding_errors = encoding_errors - """Encoding error handler.""" - - self.decoding_errors = decoding_errors - """Decoding error handler.""" - - def write(self, data): - """ - Write `data` to self.stream. Ignore, if self.stream is False. - - `data` can be a `string`, `unicode`, or `Exception` instance. - """ - if self.stream is False: - return - if isinstance(data, Exception): - data = unicode(SafeString(data, self.encoding, - self.encoding_errors, self.decoding_errors)) - try: - self.stream.write(data) - except UnicodeEncodeError: - self.stream.write(data.encode(self.encoding, self.encoding_errors)) - except TypeError: # in Python 3, stderr expects unicode - if self.stream in (sys.stderr, sys.stdout): - self.stream.buffer.write(data) # write bytes to raw stream - else: - self.stream.write(unicode(data, self.encoding, - self.decoding_errors)) - - def close(self): - """ - Close the error-output stream. - - Ignored if the stream is` sys.stderr` or `sys.stdout` or has no - close() method. - """ - if self.stream in (sys.stdout, sys.stderr): - return - try: - self.stream.close() - except AttributeError: - pass Modified: trunk/docutils/docutils/frontend.py =================================================================== --- trunk/docutils/docutils/frontend.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/frontend.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -38,7 +38,7 @@ import docutils import docutils.utils import docutils.nodes -from docutils.error_reporting import locale_encoding, ErrorOutput, ErrorString +from docutils.utils.error_reporting import locale_encoding, ErrorOutput, ErrorString def store_multiple(option, opt, value, parser, *args, **kwargs): Modified: trunk/docutils/docutils/io.py =================================================================== --- trunk/docutils/docutils/io.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/io.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -15,7 +15,7 @@ import codecs from docutils import TransformSpec from docutils._compat import b -from docutils.error_reporting import locale_encoding, ErrorString, ErrorOutput +from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput class InputError(IOError): pass Modified: trunk/docutils/docutils/parsers/rst/directives/misc.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -11,7 +11,7 @@ import re import time from docutils import io, nodes, statemachine, utils -from docutils.error_reporting import SafeString, ErrorString +from docutils.utils.error_reporting import SafeString, ErrorString from docutils.parsers.rst import Directive, convert_directive_function from docutils.parsers.rst import directives, roles, states from docutils.parsers.rst.directives.body import CodeBlock, NumberLines Modified: trunk/docutils/docutils/parsers/rst/directives/tables.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/tables.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/parsers/rst/directives/tables.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -14,7 +14,7 @@ import csv from docutils import io, nodes, statemachine, utils -from docutils.error_reporting import SafeString +from docutils.utils.error_reporting import SafeString from docutils.utils import SystemMessagePropagation from docutils.parsers.rst import Directive from docutils.parsers.rst import directives Modified: trunk/docutils/docutils/parsers/rst/states.py =================================================================== --- trunk/docutils/docutils/parsers/rst/states.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/parsers/rst/states.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -111,7 +111,7 @@ import docutils.utils.roman as roman from types import FunctionType, MethodType -from docutils import nodes, statemachine, utils, urischemes +from docutils import nodes, statemachine, utils from docutils import ApplicationError, DataError from docutils.statemachine import StateMachineWS, StateWS from docutils.nodes import fully_normalize_name as normalize_name @@ -120,7 +120,7 @@ from docutils.parsers.rst import directives, languages, tableparser, roles from docutils.parsers.rst.languages import en as _fallback_language_module from docutils.utils import escape2null, unescape, column_width -from docutils.utils import punctuation_chars +from docutils.utils import punctuation_chars, urischemes class MarkupError(DataError): pass class UnknownInterpretedRoleError(DataError): pass Modified: trunk/docutils/docutils/statemachine.py =================================================================== --- trunk/docutils/docutils/statemachine.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/statemachine.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -111,7 +111,7 @@ import types import unicodedata from docutils import utils -from docutils.error_reporting import ErrorOutput +from docutils.utils.error_reporting import ErrorOutput class StateMachine: Deleted: trunk/docutils/docutils/urischemes.py =================================================================== --- trunk/docutils/docutils/urischemes.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/urischemes.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -1,136 +0,0 @@ -# $Id$ -# Author: David Goodger <go...@py...> -# Copyright: This module has been placed in the public domain. - -""" -`schemes` is a dictionary with lowercase URI addressing schemes as -keys and descriptions as values. It was compiled from the index at -http://www.iana.org/assignments/uri-schemes (revised 2005-11-28) -and an older list at http://www.w3.org/Addressing/schemes.html. -""" - -# Many values are blank and should be filled in with useful descriptions. - -schemes = { - 'about': 'provides information on Navigator', - 'acap': 'Application Configuration Access Protocol; RFC 2244', - 'addbook': "To add vCard entries to Communicator's Address Book", - 'afp': 'Apple Filing Protocol', - 'afs': 'Andrew File System global file names', - 'aim': 'AOL Instant Messenger', - 'callto': 'for NetMeeting links', - 'castanet': 'Castanet Tuner URLs for Netcaster', - 'chttp': 'cached HTTP supported by RealPlayer', - 'cid': 'content identifier; RFC 2392', - 'crid': 'TV-Anytime Content Reference Identifier; RFC 4078', - 'data': ('allows inclusion of small data items as "immediate" data; ' - 'RFC 2397'), - 'dav': 'Distributed Authoring and Versioning Protocol; RFC 2518', - 'dict': 'dictionary service protocol; RFC 2229', - 'dns': 'Domain Name System resources', - 'eid': ('External ID; non-URL data; general escape mechanism to allow ' - 'access to information for applications that are too ' - 'specialized to justify their own schemes'), - 'fax': ('a connection to a terminal that can handle telefaxes ' - '(facsimiles); RFC 2806'), - 'feed' : 'NetNewsWire feed', - 'file': 'Host-specific file names; RFC 1738', - 'finger': '', - 'freenet': '', - 'ftp': 'File Transfer Protocol; RFC 1738', - 'go': 'go; RFC 3368', - 'gopher': 'The Gopher Protocol', - 'gsm-sms': ('Global System for Mobile Communications Short Message ' - 'Service'), - 'h323': ('video (audiovisual) communication on local area networks; ' - 'RFC 3508'), - 'h324': ('video and audio communications over low bitrate connections ' - 'such as POTS modem connections'), - 'hdl': 'CNRI handle system', - 'hnews': 'an HTTP-tunneling variant of the NNTP news protocol', - 'http': 'Hypertext Transfer Protocol; RFC 2616', - 'https': 'HTTP over SSL; RFC 2818', - 'hydra': 'SubEthaEdit URI. See http://www.codingmonkeys.de/subethaedit.', - 'iioploc': 'Internet Inter-ORB Protocol Location?', - 'ilu': 'Inter-Language Unification', - 'im': 'Instant Messaging; RFC 3860', - 'imap': 'Internet Message Access Protocol; RFC 2192', - 'info': 'Information Assets with Identifiers in Public Namespaces', - 'ior': 'CORBA interoperable object reference', - 'ipp': 'Internet Printing Protocol; RFC 3510', - 'irc': 'Internet Relay Chat', - 'iris.beep': 'iris.beep; RFC 3983', - 'iseek' : 'See www.ambrosiasw.com; a little util for OS X.', - 'jar': 'Java archive', - 'javascript': ('JavaScript code; evaluates the expression after the ' - 'colon'), - 'jdbc': 'JDBC connection URI.', - 'ldap': 'Lightweight Directory Access Protocol', - 'lifn': '', - 'livescript': '', - 'lrq': '', - 'mailbox': 'Mail folder access', - 'mailserver': 'Access to data available from mail servers', - 'mailto': 'Electronic mail address; RFC 2368', - 'md5': '', - 'mid': 'message identifier; RFC 2392', - 'mocha': '', - 'modem': ('a connection to a terminal that can handle incoming data ' - 'calls; RFC 2806'), - 'mtqp': 'Message Tracking Query Protocol; RFC 3887', - 'mupdate': 'Mailbox Update (MUPDATE) Protocol; RFC 3656', - 'news': 'USENET news; RFC 1738', - 'nfs': 'Network File System protocol; RFC 2224', - 'nntp': 'USENET news using NNTP access; RFC 1738', - 'opaquelocktoken': 'RFC 2518', - 'phone': '', - 'pop': 'Post Office Protocol; RFC 2384', - 'pop3': 'Post Office Protocol v3', - 'pres': 'Presence; RFC 3859', - 'printer': '', - 'prospero': 'Prospero Directory Service; RFC 4157', - 'rdar' : ('URLs found in Darwin source ' - '(http://www.opensource.apple.com/darwinsource/).'), - 'res': '', - 'rtsp': 'real time streaming protocol; RFC 2326', - 'rvp': '', - 'rwhois': '', - 'rx': 'Remote Execution', - 'sdp': '', - 'service': 'service location; RFC 2609', - 'shttp': 'secure hypertext transfer protocol', - 'sip': 'Session Initiation Protocol; RFC 3261', - 'sips': 'secure session intitiaion protocol; RFC 3261', - 'smb': 'SAMBA filesystems.', - 'snews': 'For NNTP postings via SSL', - 'snmp': 'Simple Network Management Protocol; RFC 4088', - 'soap.beep': 'RFC 3288', - 'soap.beeps': 'RFC 3288', - 'ssh': 'Reference to interactive sessions via ssh.', - 't120': 'real time data conferencing (audiographics)', - 'tag': 'RFC 4151', - 'tcp': '', - 'tel': ('a connection to a terminal that handles normal voice ' - 'telephone calls, a voice mailbox or another voice messaging ' - 'system or a service that can be operated using DTMF tones; ' - 'RFC 2806.'), - 'telephone': 'telephone', - 'telnet': 'Reference to interactive sessions; RFC 4248', - 'tftp': 'Trivial File Transfer Protocol; RFC 3617', - 'tip': 'Transaction Internet Protocol; RFC 2371', - 'tn3270': 'Interactive 3270 emulation sessions', - 'tv': '', - 'urn': 'Uniform Resource Name; RFC 2141', - 'uuid': '', - 'vemmi': 'versatile multimedia interface; RFC 2122', - 'videotex': '', - 'view-source': 'displays HTML code that was generated with JavaScript', - 'wais': 'Wide Area Information Servers; RFC 4156', - 'whodp': '', - 'whois++': 'Distributed directory service.', - 'x-man-page': ('Opens man page in Terminal.app on OS X ' - '(see macosxhints.com)'), - 'xmlrpc.beep': 'RFC 3529', - 'xmlrpc.beeps': 'RFC 3529', - 'z39.50r': 'Z39.50 Retrieval; RFC 2056', - 'z39.50s': 'Z39.50 Session; RFC 2056',} Modified: trunk/docutils/docutils/utils/__init__.py =================================================================== --- trunk/docutils/docutils/utils/__init__.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/utils/__init__.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -17,7 +17,7 @@ from docutils import ApplicationError, DataError from docutils import nodes from docutils.io import FileOutput -from docutils.error_reporting import ErrorOutput, SafeString +from docutils.utils.error_reporting import ErrorOutput, SafeString class SystemMessage(ApplicationError): Copied: trunk/docutils/docutils/utils/error_reporting.py (from rev 7462, trunk/docutils/docutils/error_reporting.py) =================================================================== --- trunk/docutils/docutils/utils/error_reporting.py (rev 0) +++ trunk/docutils/docutils/utils/error_reporting.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -0,0 +1,207 @@ +#!/usr/bin/env python +# -*- coding: utf8 -*- + +# :Id: $Id$ +# :Copyright: © 2011 Günter Milde. +# :License: Released under the terms of the `2-Clause BSD license`_, in short: +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. +# This file is offered as-is, without any warranty. +# +# .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause + +""" +Error reporting should be safe from encoding/decoding errors. +However, implicit conversions of strings and exceptions like + +>>> u'%s world: %s' % ('H\xe4llo', Exception(u'H\xe4llo') + +fail in some Python versions: + +* In Python <= 2.6, ``unicode(<exception instance>)`` uses + `__str__` and fails with non-ASCII chars in`unicode` arguments. + (work around http://bugs.python.org/issue2517): + +* In Python 2, unicode(<exception instance>) fails, with non-ASCII + chars in arguments. (Use case: in some locales, the errstr + argument of IOError contains non-ASCII chars.) + +* In Python 2, str(<exception instance>) fails, with non-ASCII chars + in `unicode` arguments. + +The `SafeString`, `ErrorString` and `ErrorOutput` classes handle +common exceptions. +""" + +import sys, codecs + +# Guess the locale's encoding. +# If no valid guess can be made, locale_encoding is set to `None`: +try: + import locale # module missing in Jython +except ImportError: + locale_encoding = None +else: + locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1] + # locale.getpreferredencoding([do_setlocale=True|False]) + # has side-effects | might return a wrong guess. + # (cf. Update 1 in http://stackoverflow.com/questions/4082645/using-python-2-xs-locale-module-to-format-numbers-and-currency) + try: + codecs.lookup(locale_encoding or '') # None -> '' + except LookupError: + locale_encoding = None + + + +class SafeString(object): + """ + A wrapper providing robust conversion to `str` and `unicode`. + """ + + def __init__(self, data, encoding=None, encoding_errors='backslashreplace', + decoding_errors='replace'): + self.data = data + self.encoding = (encoding or getattr(data, 'encoding', None) or + locale_encoding or 'ascii') + self.encoding_errors = encoding_errors + self.decoding_errors = decoding_errors + + + def __str__(self): + try: + return str(self.data) + except UnicodeEncodeError, err: + if isinstance(self.data, Exception): + args = [str(SafeString(arg, self.encoding, + self.encoding_errors)) + for arg in self.data.args] + return ', '.join(args) + if isinstance(self.data, unicode): + return self.data.encode(self.encoding, self.encoding_errors) + raise + + def __unicode__(self): + """ + Return unicode representation of `self.data`. + + Try ``unicode(self.data)``, catch `UnicodeError` and + + * if `self.data` is an Exception instance, work around + http://bugs.python.org/issue2517 with an emulation of + Exception.__unicode__, + + * else decode with `self.encoding` and `self.decoding_errors`. + """ + try: + u = unicode(self.data) + if isinstance(self.data, EnvironmentError): + u = u.replace(": u'", ": '") # normalize filename quoting + return u + except UnicodeError, error: # catch ..Encode.. and ..Decode.. errors + if isinstance(self.data, EnvironmentError): + return u"[Errno %s] %s: '%s'" % (self.data.errno, + SafeString(self.data.strerror, self.encoding, + self.decoding_errors), + SafeString(self.data.filename, self.encoding, + self.decoding_errors)) + if isinstance(self.data, Exception): + args = [unicode(SafeString(arg, self.encoding, + decoding_errors=self.decoding_errors)) + for arg in self.data.args] + return u', '.join(args) + if isinstance(error, UnicodeDecodeError): + return unicode(self.data, self.encoding, self.decoding_errors) + raise + +class ErrorString(SafeString): + """ + Safely report exception type and message. + """ + def __str__(self): + return '%s: %s' % (self.data.__class__.__name__, + super(ErrorString, self).__str__()) + + def __unicode__(self): + return u'%s: %s' % (self.data.__class__.__name__, + super(ErrorString, self).__unicode__()) + + +class ErrorOutput(object): + """ + Wrapper class for file-like error streams with + failsave de- and encoding of `str`, `bytes`, `unicode` and + `Exception` instances. + """ + + def __init__(self, stream=None, encoding=None, + encoding_errors='backslashreplace', + decoding_errors='replace'): + """ + :Parameters: + - `stream`: a file-like object, + a string (path to a file), + `None` (write to `sys.stderr`, default), or + evaluating to `False` (write() requests are ignored). + - `encoding`: `stream` text encoding. Guessed if None. + - `encoding_errors`: how to treat encoding errors. + """ + if stream is None: + stream = sys.stderr + elif not(stream): + stream = False + # if `stream` is a file name, open it + elif isinstance(stream, str): + stream = open(stream, 'w') + elif isinstance(stream, unicode): + stream = open(stream.encode(sys.getfilesystemencoding()), 'w') + + self.stream = stream + """Where warning output is sent.""" + + self.encoding = (encoding or getattr(stream, 'encoding', None) or + locale_encoding or 'ascii') + """The output character encoding.""" + + self.encoding_errors = encoding_errors + """Encoding error handler.""" + + self.decoding_errors = decoding_errors + """Decoding error handler.""" + + def write(self, data): + """ + Write `data` to self.stream. Ignore, if self.stream is False. + + `data` can be a `string`, `unicode`, or `Exception` instance. + """ + if self.stream is False: + return + if isinstance(data, Exception): + data = unicode(SafeString(data, self.encoding, + self.encoding_errors, self.decoding_errors)) + try: + self.stream.write(data) + except UnicodeEncodeError: + self.stream.write(data.encode(self.encoding, self.encoding_errors)) + except TypeError: # in Python 3, stderr expects unicode + if self.stream in (sys.stderr, sys.stdout): + self.stream.buffer.write(data) # write bytes to raw stream + else: + self.stream.write(unicode(data, self.encoding, + self.decoding_errors)) + + def close(self): + """ + Close the error-output stream. + + Ignored if the stream is` sys.stderr` or `sys.stdout` or has no + close() method. + """ + if self.stream in (sys.stdout, sys.stderr): + return + try: + self.stream.close() + except AttributeError: + pass Modified: trunk/docutils/docutils/utils/math/latex2mathml.py =================================================================== --- trunk/docutils/docutils/math/latex2mathml.py 2012-06-19 14:35:37 UTC (rev 7462) +++ trunk/docutils/docutils/utils/math/latex2mathml.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -19,7 +19,7 @@ # Based on the `latex_math` sandbox project by Jens Jørgen Mortensen -import docutils.math.tex2unichar as tex2unichar +import docutils.utils.math.tex2unichar as tex2unichar # TeX spacing combining over = {'acute': u'\u00B4', # u'\u0301', Copied: trunk/docutils/docutils/utils/urischemes.py (from rev 7462, trunk/docutils/docutils/urischemes.py) =================================================================== --- trunk/docutils/docutils/utils/urischemes.py (rev 0) +++ trunk/docutils/docutils/utils/urischemes.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -0,0 +1,136 @@ +# $Id$ +# Author: David Goodger <go...@py...> +# Copyright: This module has been placed in the public domain. + +""" +`schemes` is a dictionary with lowercase URI addressing schemes as +keys and descriptions as values. It was compiled from the index at +http://www.iana.org/assignments/uri-schemes (revised 2005-11-28) +and an older list at http://www.w3.org/Addressing/schemes.html. +""" + +# Many values are blank and should be filled in with useful descriptions. + +schemes = { + 'about': 'provides information on Navigator', + 'acap': 'Application Configuration Access Protocol; RFC 2244', + 'addbook': "To add vCard entries to Communicator's Address Book", + 'afp': 'Apple Filing Protocol', + 'afs': 'Andrew File System global file names', + 'aim': 'AOL Instant Messenger', + 'callto': 'for NetMeeting links', + 'castanet': 'Castanet Tuner URLs for Netcaster', + 'chttp': 'cached HTTP supported by RealPlayer', + 'cid': 'content identifier; RFC 2392', + 'crid': 'TV-Anytime Content Reference Identifier; RFC 4078', + 'data': ('allows inclusion of small data items as "immediate" data; ' + 'RFC 2397'), + 'dav': 'Distributed Authoring and Versioning Protocol; RFC 2518', + 'dict': 'dictionary service protocol; RFC 2229', + 'dns': 'Domain Name System resources', + 'eid': ('External ID; non-URL data; general escape mechanism to allow ' + 'access to information for applications that are too ' + 'specialized to justify their own schemes'), + 'fax': ('a connection to a terminal that can handle telefaxes ' + '(facsimiles); RFC 2806'), + 'feed' : 'NetNewsWire feed', + 'file': 'Host-specific file names; RFC 1738', + 'finger': '', + 'freenet': '', + 'ftp': 'File Transfer Protocol; RFC 1738', + 'go': 'go; RFC 3368', + 'gopher': 'The Gopher Protocol', + 'gsm-sms': ('Global System for Mobile Communications Short Message ' + 'Service'), + 'h323': ('video (audiovisual) communication on local area networks; ' + 'RFC 3508'), + 'h324': ('video and audio communications over low bitrate connections ' + 'such as POTS modem connections'), + 'hdl': 'CNRI handle system', + 'hnews': 'an HTTP-tunneling variant of the NNTP news protocol', + 'http': 'Hypertext Transfer Protocol; RFC 2616', + 'https': 'HTTP over SSL; RFC 2818', + 'hydra': 'SubEthaEdit URI. See http://www.codingmonkeys.de/subethaedit.', + 'iioploc': 'Internet Inter-ORB Protocol Location?', + 'ilu': 'Inter-Language Unification', + 'im': 'Instant Messaging; RFC 3860', + 'imap': 'Internet Message Access Protocol; RFC 2192', + 'info': 'Information Assets with Identifiers in Public Namespaces', + 'ior': 'CORBA interoperable object reference', + 'ipp': 'Internet Printing Protocol; RFC 3510', + 'irc': 'Internet Relay Chat', + 'iris.beep': 'iris.beep; RFC 3983', + 'iseek' : 'See www.ambrosiasw.com; a little util for OS X.', + 'jar': 'Java archive', + 'javascript': ('JavaScript code; evaluates the expression after the ' + 'colon'), + 'jdbc': 'JDBC connection URI.', + 'ldap': 'Lightweight Directory Access Protocol', + 'lifn': '', + 'livescript': '', + 'lrq': '', + 'mailbox': 'Mail folder access', + 'mailserver': 'Access to data available from mail servers', + 'mailto': 'Electronic mail address; RFC 2368', + 'md5': '', + 'mid': 'message identifier; RFC 2392', + 'mocha': '', + 'modem': ('a connection to a terminal that can handle incoming data ' + 'calls; RFC 2806'), + 'mtqp': 'Message Tracking Query Protocol; RFC 3887', + 'mupdate': 'Mailbox Update (MUPDATE) Protocol; RFC 3656', + 'news': 'USENET news; RFC 1738', + 'nfs': 'Network File System protocol; RFC 2224', + 'nntp': 'USENET news using NNTP access; RFC 1738', + 'opaquelocktoken': 'RFC 2518', + 'phone': '', + 'pop': 'Post Office Protocol; RFC 2384', + 'pop3': 'Post Office Protocol v3', + 'pres': 'Presence; RFC 3859', + 'printer': '', + 'prospero': 'Prospero Directory Service; RFC 4157', + 'rdar' : ('URLs found in Darwin source ' + '(http://www.opensource.apple.com/darwinsource/).'), + 'res': '', + 'rtsp': 'real time streaming protocol; RFC 2326', + 'rvp': '', + 'rwhois': '', + 'rx': 'Remote Execution', + 'sdp': '', + 'service': 'service location; RFC 2609', + 'shttp': 'secure hypertext transfer protocol', + 'sip': 'Session Initiation Protocol; RFC 3261', + 'sips': 'secure session intitiaion protocol; RFC 3261', + 'smb': 'SAMBA filesystems.', + 'snews': 'For NNTP postings via SSL', + 'snmp': 'Simple Network Management Protocol; RFC 4088', + 'soap.beep': 'RFC 3288', + 'soap.beeps': 'RFC 3288', + 'ssh': 'Reference to interactive sessions via ssh.', + 't120': 'real time data conferencing (audiographics)', + 'tag': 'RFC 4151', + 'tcp': '', + 'tel': ('a connection to a terminal that handles normal voice ' + 'telephone calls, a voice mailbox or another voice messaging ' + 'system or a service that can be operated using DTMF tones; ' + 'RFC 2806.'), + 'telephone': 'telephone', + 'telnet': 'Reference to interactive sessions; RFC 4248', + 'tftp': 'Trivial File Transfer Protocol; RFC 3617', + 'tip': 'Transaction Internet Protocol; RFC 2371', + 'tn3270': 'Interactive 3270 emulation sessions', + 'tv': '', + 'urn': 'Uniform Resource Name; RFC 2141', + 'uuid': '', + 'vemmi': 'versatile multimedia interface; RFC 2122', + 'videotex': '', + 'view-source': 'displays HTML code that was generated with JavaScript', + 'wais': 'Wide Area Information Servers; RFC 4156', + 'whodp': '', + 'whois++': 'Distributed directory service.', + 'x-man-page': ('Opens man page in Terminal.app on OS X ' + '(see macosxhints.com)'), + 'xmlrpc.beep': 'RFC 3529', + 'xmlrpc.beeps': 'RFC 3529', + 'z39.50r': 'Z39.50 Retrieval; RFC 2056', + 'z39.50s': 'Z39.50 Session; RFC 2056',} Modified: trunk/docutils/docutils/writers/html4css1/__init__.py =================================================================== --- trunk/docutils/docutils/writers/html4css1/__init__.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/writers/html4css1/__init__.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -32,11 +32,11 @@ PIL = None import docutils from docutils import frontend, nodes, utils, writers, languages, io -from docutils.error_reporting import SafeString +from docutils.utils.error_reporting import SafeString from docutils.transforms import writer_aux -from docutils.math import unichar2tex, pick_math_environment -from docutils.math.latex2mathml import parse_latex_math -from docutils.math.math2html import math2html +from docutils.utils.math import unichar2tex, pick_math_environment +from docutils.utils.math.latex2mathml import parse_latex_math +from docutils.utils.math.math2html import math2html class Writer(writers.Writer): Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -24,9 +24,9 @@ except ImportError: import docutils.utils.roman as roman from docutils import frontend, nodes, languages, writers, utils, io -from docutils.error_reporting import SafeString +from docutils.utils.error_reporting import SafeString from docutils.transforms import writer_aux -from docutils.math import pick_math_environment, unichar2tex +from docutils.utils.math import pick_math_environment, unichar2tex class Writer(writers.Writer): Modified: trunk/docutils/setup.py =================================================================== --- trunk/docutils/setup.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/setup.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -132,7 +132,7 @@ # 'docutils.readers.python', # in the sandbox since 0.8 'docutils.transforms', 'docutils.utils', - 'docutils.math', + 'docutils.utils.math', 'docutils.writers', 'docutils.writers.html4css1', # 'docutils.writers.html4strict', # in the sandbox! Modified: trunk/docutils/test/DocutilsTestSupport.py =================================================================== --- trunk/docutils/test/DocutilsTestSupport.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/test/DocutilsTestSupport.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -9,7 +9,7 @@ :Modules: - `statemachine` is 'docutils.statemachine' - `nodes` is 'docutils.nodes' - - `urischemes` is 'docutils.urischemes' + - `urischemes` is 'docutils.utils.urischemes' - `utils` is 'docutils.utils' - `transforms` is 'docutils.transforms' - `states` is 'docutils.parsers.rst.states' @@ -65,7 +65,8 @@ import package_unittest import docutils import docutils.core - from docutils import frontend, nodes, statemachine, urischemes, utils + from docutils import frontend, nodes, statemachine, utils + from docutils.utils import urischemes from docutils.transforms import universal from docutils.parsers import rst from docutils.parsers.rst import states, tableparser, roles, languages Modified: trunk/docutils/test/test_error_reporting.py =================================================================== --- trunk/docutils/test/test_error_reporting.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/test/test_error_reporting.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -36,7 +36,7 @@ import DocutilsTestSupport # must be imported before docutils from docutils import core, parsers, frontend, utils -from docutils.error_reporting import SafeString, ErrorString, ErrorOutput +from docutils.utils.error_reporting import SafeString, ErrorString, ErrorOutput from docutils._compat import b, bytes oldlocale = None Modified: trunk/docutils/test/test_io.py =================================================================== --- trunk/docutils/test/test_io.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/test/test_io.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -12,7 +12,7 @@ import DocutilsTestSupport # must be imported before docutils from docutils import io from docutils._compat import b, bytes -from docutils.error_reporting import locale_encoding +from docutils.utils.error_reporting import locale_encoding from test_error_reporting import BBuf, UBuf class mock_stdout(UBuf): Modified: trunk/docutils/tools/buildhtml.py =================================================================== --- trunk/docutils/tools/buildhtml.py 2012-06-22 19:49:51 UTC (rev 7463) +++ trunk/docutils/tools/buildhtml.py 2012-06-25 13:16:03 UTC (rev 7464) @@ -29,7 +29,7 @@ import docutils from docutils import ApplicationError from docutils import core, frontend, utils -from docutils.error_reporting import ErrorOutput, ErrorString +from docutils.utils.error_reporting import ErrorOutput, ErrorString from docutils.parsers import rst from docutils.readers import standalone, pep from docutils.writers import html4css1, pep_html This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-25 14:32:21
|
Revision: 7465 http://docutils.svn.sourceforge.net/docutils/?rev=7465&view=rev Author: milde Date: 2012-06-25 14:32:15 +0000 (Mon, 25 Jun 2012) Log Message: ----------- Deaktivate defaultfontfeatures command to prevent error in new TeXLive. The command leads to an error due to a bug in either fontspec or polyglossia in TeXLive 2012 when the document language is Russian (or some other language with non-Latin script). Modified Paths: -------------- trunk/docutils/docutils/writers/latex2e/xelatex.tex trunk/docutils/test/functional/expected/standalone_rst_xetex.tex trunk/docutils/test/functional/expected/xetex-cyrillic.tex Modified: trunk/docutils/docutils/writers/latex2e/xelatex.tex =================================================================== --- trunk/docutils/docutils/writers/latex2e/xelatex.tex 2012-06-25 13:16:03 UTC (rev 7464) +++ trunk/docutils/docutils/writers/latex2e/xelatex.tex 2012-06-25 14:32:15 UTC (rev 7465) @@ -1,7 +1,7 @@ $head_prefix% generated by Docutils <http://docutils.sourceforge.net/> % rubber: set program xelatex \usepackage[no-sscript]{xltxtra} % loads fixltx2e, metalogo, xunicode, fontspec -\defaultfontfeatures{Scale=MatchLowercase} +% \defaultfontfeatures{Scale=MatchLowercase} $requirements %%% Custom LaTeX preamble $latex_preamble Modified: trunk/docutils/test/functional/expected/standalone_rst_xetex.tex =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-06-25 13:16:03 UTC (rev 7464) +++ trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-06-25 14:32:15 UTC (rev 7465) @@ -2,7 +2,7 @@ % generated by Docutils <http://docutils.sourceforge.net/> % rubber: set program xelatex \usepackage[no-sscript]{xltxtra} % loads fixltx2e, metalogo, xunicode, fontspec -\defaultfontfeatures{Scale=MatchLowercase} +% \defaultfontfeatures{Scale=MatchLowercase} \usepackage{ifthen} \usepackage{amsmath} \usepackage{polyglossia} Modified: trunk/docutils/test/functional/expected/xetex-cyrillic.tex =================================================================== --- trunk/docutils/test/functional/expected/xetex-cyrillic.tex 2012-06-25 13:16:03 UTC (rev 7464) +++ trunk/docutils/test/functional/expected/xetex-cyrillic.tex 2012-06-25 14:32:15 UTC (rev 7465) @@ -2,7 +2,7 @@ % generated by Docutils <http://docutils.sourceforge.net/> % rubber: set program xelatex \usepackage[no-sscript]{xltxtra} % loads fixltx2e, metalogo, xunicode, fontspec -\defaultfontfeatures{Scale=MatchLowercase} +% \defaultfontfeatures{Scale=MatchLowercase} \usepackage{ifthen} \usepackage{polyglossia} \setdefaultlanguage{russian} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-06-25 14:56:58
|
Revision: 7466 http://docutils.svn.sourceforge.net/docutils/?rev=7466&view=rev Author: milde Date: 2012-06-25 14:56:51 +0000 (Mon, 25 Jun 2012) Log Message: ----------- io.FileInput/io.FileOutput: no system-exit on IOError. The `handle_io_errors` option is ignored and will be removed in a future release. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt trunk/docutils/docutils/core.py trunk/docutils/docutils/io.py trunk/docutils/docutils/parsers/rst/directives/misc.py trunk/docutils/docutils/parsers/rst/directives/tables.py trunk/docutils/docutils/writers/html4css1/__init__.py trunk/docutils/docutils/writers/latex2e/__init__.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/HISTORY.txt 2012-06-25 14:56:51 UTC (rev 7466) @@ -22,7 +22,12 @@ - ``docutils/math``, ``docutils/error_reporting.py``, and ``docutils/urischemes.py`` moved to the utils package. +* docutils/io.py + - FileInput/FileOutput: no system-exit on IOError. The `handle_io_errors` + option is ignored and will be removed in a future release. + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/RELEASE-NOTES.txt 2012-06-25 14:56:51 UTC (rev 7466) @@ -19,21 +19,9 @@ Future changes ============== -* docutils.io.FileInput/FileOutput will no longer do a - system-exit on IOError by default. + :0.10 + n: remove the `handle_io_errors` option from io.FileInput/Output. - Roadmap: - :0.10: change of default behaviour to the equivalent of - ``handle_io_errors=False``, - ignore and deprecate the `handle_io_errors` option. - (allows us to clean up Docutils code and remove the error handling - code from the FileInput/FileOutput classes) - :0.10 + n: deprecation warning to stderr if FileInput/FileOutput - is called with `handle_io_errors`, - :0.10 + n+1: remove the `handle_io_errors` option. - - Changes Since 0.9.1 =================== @@ -55,6 +43,11 @@ except ImportError: import docutils.utils.math as math +* docutils/io.py + + - FileInput/FileOutput: no system-exit on IOError. + The `handle_io_errors` option is ignored. + .. _Python 3 compatibility: README.html#python-3-compatibility Modified: trunk/docutils/docutils/core.py =================================================================== --- trunk/docutils/docutils/core.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/core.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -176,8 +176,7 @@ try: self.source = self.source_class( source=source, source_path=source_path, - encoding=self.settings.input_encoding, - handle_io_errors=False) + encoding=self.settings.input_encoding) except TypeError: self.source = self.source_class( source=source, source_path=source_path, @@ -192,9 +191,6 @@ destination=destination, destination_path=destination_path, encoding=self.settings.output_encoding, error_handler=self.settings.output_encoding_error_handler) - # Raise IOError instead of system exit with `tracback == True` - # TODO: change io.FileInput's default behaviour and remove this hack - self.destination.handle_io_errors=False def apply_transforms(self): self.document.transformer.populate_from_components( Modified: trunk/docutils/docutils/io.py =================================================================== --- trunk/docutils/docutils/io.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/io.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -4,7 +4,7 @@ """ I/O classes provide a uniform API for low-level input and output. Subclasses -will exist for a variety of input/output mechanisms. +exist for a variety of input/output mechanisms. """ __docformat__ = 'reStructuredText' @@ -204,7 +204,7 @@ """ def __init__(self, source=None, source_path=None, encoding=None, error_handler='strict', - autoclose=True, handle_io_errors=True, mode='rU'): + autoclose=True, handle_io_errors=None, mode='rU'): """ :Parameters: - `source`: either a file-like object (which is read directly), or @@ -214,14 +214,13 @@ - `error_handler`: the encoding error handler to use. - `autoclose`: close automatically after read (except when `sys.stdin` is the source). - - `handle_io_errors`: summarize I/O errors here, and exit? + - `handle_io_errors`: ignored, deprecated, will be removed. - `mode`: how the file is to be opened (see standard function `open`). The default 'rU' provides universal newline support for text files. """ Input.__init__(self, source, source_path, encoding, error_handler) self.autoclose = autoclose - self.handle_io_errors = handle_io_errors self._stderr = ErrorOutput() if source is None: @@ -236,12 +235,6 @@ try: self.source = open(source_path, mode, **kwargs) except IOError, error: - if handle_io_errors: - print >>self._stderr, ErrorString(error) - print >>self._stderr, ( - u'Unable to open source file for reading ("%s").' - u'Exiting.' % source_path) - sys.exit(1) raise InputError(error.errno, error.strerror, source_path) else: self.source = sys.stdin @@ -310,7 +303,7 @@ def __init__(self, destination=None, destination_path=None, encoding=None, error_handler='strict', autoclose=True, - handle_io_errors=True, mode=None): + handle_io_errors=None, mode=None): """ :Parameters: - `destination`: either a file-like object (which is written @@ -322,7 +315,7 @@ - `error_handler`: the encoding error handler to use. - `autoclose`: close automatically after write (except when `sys.stdout` or `sys.stderr` is the destination). - - `handle_io_errors`: summarize I/O errors here, and exit? + - `handle_io_errors`: ignored, deprecated, will be removed. - `mode`: how the file is to be opened (see standard function `open`). The default is 'w', providing universal newline support for text files. @@ -331,7 +324,6 @@ encoding, error_handler) self.opened = True self.autoclose = autoclose - self.handle_io_errors = handle_io_errors if mode is not None: self.mode = mode self._stderr = ErrorOutput() @@ -377,11 +369,6 @@ try: self.destination = open(self.destination_path, self.mode, **kwargs) except IOError, error: - if self.handle_io_errors: - print >>self._stderr, ErrorString(error) - print >>self._stderr, (u'Unable to open destination file' - u" for writing ('%s'). Exiting." % self.destination_path) - sys.exit(1) raise OutputError(error.errno, error.strerror, self.destination_path) self.opened = True Modified: trunk/docutils/docutils/parsers/rst/directives/misc.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -64,15 +64,14 @@ path = nodes.reprunicode(path) encoding = self.options.get( 'encoding', self.state.document.settings.input_encoding) + e_handler=self.state.document.settings.input_encoding_error_handler tab_width = self.options.get( 'tab-width', self.state.document.settings.tab_width) try: self.state.document.settings.record_dependencies.add(path) - include_file = io.FileInput( - source_path=path, encoding=encoding, - error_handler=(self.state.document.settings.\ - input_encoding_error_handler), - handle_io_errors=None) + include_file = io.FileInput(source_path=path, + encoding=encoding, + error_handler=e_handler) except UnicodeEncodeError, error: raise self.severe(u'Problems with "%s" directive path:\n' 'Cannot encode input file path "%s" ' @@ -186,6 +185,7 @@ attributes = {'format': ' '.join(self.arguments[0].lower().split())} encoding = self.options.get( 'encoding', self.state.document.settings.input_encoding) + e_handler=self.state.document.settings.input_encoding_error_handler if self.content: if 'file' in self.options or 'url' in self.options: raise self.error( @@ -203,11 +203,9 @@ self.options['file'])) path = utils.relative_path(None, path) try: - raw_file = io.FileInput( - source_path=path, encoding=encoding, - error_handler=(self.state.document.settings.\ - input_encoding_error_handler), - handle_io_errors=None) + raw_file = io.FileInput(source_path=path, + encoding=encoding, + error_handler=e_handler) # TODO: currently, raw input files are recorded as # dependencies even if not used for the chosen output format. self.state.document.settings.record_dependencies.add(path) @@ -231,10 +229,9 @@ except (urllib2.URLError, IOError, OSError), error: raise self.severe(u'Problems with "%s" directive URL "%s":\n%s.' % (self.name, self.options['url'], ErrorString(error))) - raw_file = io.StringInput( - source=raw_text, source_path=source, encoding=encoding, - error_handler=(self.state.document.settings.\ - input_encoding_error_handler)) + raw_file = io.StringInput(source=raw_text, source_path=source, + encoding=encoding, + error_handler=e_handler) try: text = raw_file.read() except UnicodeError, error: Modified: trunk/docutils/docutils/parsers/rst/directives/tables.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/tables.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/parsers/rst/directives/tables.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -244,6 +244,7 @@ """ encoding = self.options.get( 'encoding', self.state.document.settings.input_encoding) + error_handler = self.state.document.settings.input_encoding_error_handler if self.content: # CSV data is from directive content. if 'file' in self.options or 'url' in self.options: @@ -270,11 +271,9 @@ source = utils.relative_path(None, source) try: self.state.document.settings.record_dependencies.add(source) - csv_file = io.FileInput( - source_path=source, encoding=encoding, - error_handler=(self.state.document.settings.\ - input_encoding_error_handler), - handle_io_errors=None) + csv_file = io.FileInput(source_path=source, + encoding=encoding, + error_handler=error_handler) csv_data = csv_file.read().splitlines() except IOError, error: severe = self.state_machine.reporter.severe( Modified: trunk/docutils/docutils/writers/html4css1/__init__.py =================================================================== --- trunk/docutils/docutils/writers/html4css1/__init__.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/writers/html4css1/__init__.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -373,8 +373,7 @@ if self.settings.embed_stylesheet: try: content = io.FileInput(source_path=path, - encoding='utf-8', - handle_io_errors=False).read() + encoding='utf-8').read() self.settings.record_dependencies.add(path) except IOError, err: msg = u"Cannot embed stylesheet '%s': %s." % ( Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-25 14:32:15 UTC (rev 7465) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-06-25 14:56:51 UTC (rev 7466) @@ -1333,8 +1333,7 @@ path = base + '.sty' # ensure extension try: content = io.FileInput(source_path=path, - encoding='utf-8', - handle_io_errors=False).read() + encoding='utf-8').read() self.settings.record_dependencies.add(path) except IOError, err: msg = u"Cannot embed stylesheet '%s':\n %s." % ( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-07-11 12:25:25
|
Revision: 7486 http://docutils.svn.sourceforge.net/docutils/?rev=7486&view=rev Author: milde Date: 2012-07-11 12:25:14 +0000 (Wed, 11 Jul 2012) Log Message: ----------- Fix [3541369] Relative __import__ also with Python 3.3. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/_compat.py trunk/docutils/docutils/languages/__init__.py trunk/docutils/docutils/parsers/__init__.py trunk/docutils/docutils/parsers/rst/directives/__init__.py trunk/docutils/docutils/parsers/rst/languages/__init__.py trunk/docutils/docutils/readers/__init__.py trunk/docutils/docutils/writers/__init__.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/HISTORY.txt 2012-07-11 12:25:14 UTC (rev 7486) @@ -21,6 +21,7 @@ - Dropped support for Python 2.3. - ``docutils/math``, ``docutils/error_reporting.py``, and ``docutils/urischemes.py`` moved to the utils package. + - Fix [3541369] Relative __import__ also with Python 3.3. * docutils/io.py Modified: trunk/docutils/docutils/_compat.py =================================================================== --- trunk/docutils/docutils/_compat.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/_compat.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -35,3 +35,14 @@ # using this hack since 2to3 "fixes" the relative import # when using ``from io import BytesIO`` BytesIO = __import__('io').BytesIO + +if sys.version_info < (2,5): + import __builtin__ + + def __import__(name, globals={}, locals={}, fromlist=[], level=-1): + """Compatibility definition for Python 2.4. + + Silently ignore the `level` argument missing in Python < 2.5. + """ + # we need the level arg because the default changed in Python 3.3 + return __builtin__.__import__(name, globals, locals, fromlist) Modified: trunk/docutils/docutils/languages/__init__.py =================================================================== --- trunk/docutils/docutils/languages/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/languages/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -11,7 +11,11 @@ __docformat__ = 'reStructuredText' +import sys + from docutils.utils import normalize_language_tag +if sys.version_info < (2,5): + from docutils._compat import __import__ _languages = {} @@ -26,7 +30,7 @@ if tag in _languages: return _languages[tag] try: - module = __import__(tag, globals(), locals()) + module = __import__(tag, globals(), locals(), level=1) except ImportError: continue _languages[tag] = module @@ -35,6 +39,6 @@ reporter.warning( 'language "%s" not supported: ' % language_code + 'Docutils-generated text will be in English.') - module = __import__('en', globals(), locals()) + module = __import__('en', globals(), locals(), level=1) _languages[tag] = module # warn only one time! return module Modified: trunk/docutils/docutils/parsers/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/parsers/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -8,7 +8,10 @@ __docformat__ = 'reStructuredText' +import sys from docutils import Component +if sys.version_info < (2,5): + from docutils._compat import __import__ class Parser(Component): @@ -43,5 +46,5 @@ parser_name = parser_name.lower() if parser_name in _parser_aliases: parser_name = _parser_aliases[parser_name] - module = __import__(parser_name, globals(), locals()) + module = __import__(parser_name, globals(), locals(), level=1) return module.Parser Modified: trunk/docutils/docutils/parsers/rst/directives/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/parsers/rst/directives/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -10,8 +10,12 @@ import re import codecs +import sys + from docutils import nodes from docutils.parsers.rst.languages import en as _fallback_language_module +if sys.version_info < (2,5): + from docutils._compat import __import__ _directive_registry = { @@ -109,7 +113,7 @@ # Error handling done by caller. return None, messages try: - module = __import__(modulename, globals(), locals()) + module = __import__(modulename, globals(), locals(), level=1) except ImportError, detail: messages.append(document.reporter.error( 'Error importing directive module "%s" (directive "%s"):\n%s' Modified: trunk/docutils/docutils/parsers/rst/languages/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/rst/languages/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/parsers/rst/languages/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -12,7 +12,11 @@ __docformat__ = 'reStructuredText' +import sys + from docutils.utils import normalize_language_tag +if sys.version_info < (2,5): + from docutils._compat import __import__ _languages = {} @@ -21,7 +25,7 @@ if tag in _languages: return _languages[tag] try: - module = __import__(tag, globals(), locals()) + module = __import__(tag, globals(), locals(), level=1) except ImportError: continue _languages[tag] = module Modified: trunk/docutils/docutils/readers/__init__.py =================================================================== --- trunk/docutils/docutils/readers/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/readers/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -8,9 +8,12 @@ __docformat__ = 'reStructuredText' +import sys from docutils import utils, parsers, Component from docutils.transforms import universal +if sys.version_info < (2,5): + from docutils._compat import __import__ class Reader(Component): @@ -103,5 +106,5 @@ reader_name = reader_name.lower() if reader_name in _reader_aliases: reader_name = _reader_aliases[reader_name] - module = __import__(reader_name, globals(), locals()) + module = __import__(reader_name, globals(), locals(), level=1) return module.Reader Modified: trunk/docutils/docutils/writers/__init__.py =================================================================== --- trunk/docutils/docutils/writers/__init__.py 2012-07-06 08:17:28 UTC (rev 7485) +++ trunk/docutils/docutils/writers/__init__.py 2012-07-11 12:25:14 UTC (rev 7486) @@ -8,11 +8,14 @@ __docformat__ = 'reStructuredText' +import os.path +import sys -import os.path import docutils from docutils import languages, Component from docutils.transforms import universal +if sys.version_info < (2,5): + from docutils._compat import __import__ class Writer(Component): @@ -130,5 +133,5 @@ writer_name = writer_name.lower() if writer_name in _writer_aliases: writer_name = _writer_aliases[writer_name] - module = __import__(writer_name, globals(), locals()) + module = __import__(writer_name, globals(), locals(), level=1) return module.Writer This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-07-22 21:20:34
|
Revision: 7487 http://docutils.svn.sourceforge.net/docutils/?rev=7487&view=rev Author: milde Date: 2012-07-22 21:20:28 +0000 (Sun, 22 Jul 2012) Log Message: ----------- Fix [ 3546533 ] unicode error with date directive. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/parsers/rst/directives/misc.py trunk/docutils/test/test_parsers/test_rst/test_directives/test_date.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-07-11 12:25:14 UTC (rev 7486) +++ trunk/docutils/HISTORY.txt 2012-07-22 21:20:28 UTC (rev 7487) @@ -28,6 +28,10 @@ - FileInput/FileOutput: no system-exit on IOError. The `handle_io_errors` option is ignored and will be removed in a future release. +* docutils/parsers/rst/directives/misc.py + + - Fix [ 3546533 ] unicode error with date directive. + * docutils/writers/manpage.py - Apply [3527401] addmonition's don't preserve indentation Modified: trunk/docutils/docutils/parsers/rst/directives/misc.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-07-11 12:25:14 UTC (rev 7486) +++ trunk/docutils/docutils/parsers/rst/directives/misc.py 2012-07-22 21:20:28 UTC (rev 7487) @@ -12,6 +12,7 @@ import time from docutils import io, nodes, statemachine, utils from docutils.utils.error_reporting import SafeString, ErrorString +from docutils.utils.error_reporting import locale_encoding from docutils.parsers.rst import Directive, convert_directive_function from docutils.parsers.rst import directives, roles, states from docutils.parsers.rst.directives.body import CodeBlock, NumberLines @@ -469,8 +470,22 @@ raise self.error( 'Invalid context: the "%s" directive can only be used within ' 'a substitution definition.' % self.name) - format = '\n'.join(self.content) or '%Y-%m-%d' - text = time.strftime(format) + format_str = '\n'.join(self.content) or '%Y-%m-%d' + if sys.version_info< (3, 0): + try: + format_str = format_str.encode(locale_encoding or 'utf-8') + except UnicodeEncodeError: + raise self.warning(u'Cannot encode date format string ' + u'with locale encoding "%s".' % locale_encoding) + text = time.strftime(format_str) + if sys.version_info< (3, 0): + # `text` is a byte string that may contain non-ASCII characters: + try: + text = text.decode(locale_encoding or 'utf-8') + except UnicodeDecodeError: + text = text.decode(locale_encoding or 'utf-8', 'replace') + raise self.warning(u'Error decoding "%s"' + u'with locale encoding "%s".' % (text, locale_encoding)) return [nodes.Text(text)] Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_date.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_date.py 2012-07-11 12:25:14 UTC (rev 7486) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_date.py 2012-07-22 21:20:28 UTC (rev 7487) @@ -11,6 +11,7 @@ from __init__ import DocutilsTestSupport import time +from docutils.utils.error_reporting import locale_encoding def suite(): s = DocutilsTestSupport.ParserTestSuite() @@ -56,7 +57,19 @@ """], ] - +# some locales return non-ASCII characters for names of days or months +if locale_encoding in ['utf8', 'utf-8', 'latin-1']: + totest['decode date'] = [ + [u"""\ + .. |date| date:: t\xc3glich + """, + u"""\ + <document source="test data"> + <substitution_definition names="date"> + t\xc3glich + """], + ] + if __name__ == '__main__': import unittest unittest.main(defaultTest='suite') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-08-14 08:47:31
|
Revision: 7492 http://docutils.svn.sourceforge.net/docutils/?rev=7492&view=rev Author: milde Date: 2012-08-14 08:47:23 +0000 (Tue, 14 Aug 2012) Log Message: ----------- Apply [ 3555160 ] ensure order of "otherlanguages". Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/writers/latex2e/__init__.py trunk/docutils/docutils/writers/xetex/__init__.py trunk/docutils/test/functional/expected/standalone_rst_xetex.tex Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-08-13 23:30:52 UTC (rev 7491) +++ trunk/docutils/HISTORY.txt 2012-08-14 08:47:23 UTC (rev 7492) @@ -30,14 +30,18 @@ * docutils/parsers/rst/directives/misc.py - - Fix [ 3546533 ] unicode error with date directive. + - Fix [ 3546533 ] Unicode error with `date` directive. * docutils/writers/manpage.py - - Apply [3527401] addmonition's don't preserve indentation - - Apply [3527397] Add indentation to literal blocks in manpage writer. + - Apply [ 3527401 ] addmonition's don't preserve indentation + - Apply [ 3527397 ] Add indentation to literal blocks in manpage writer. +* docutils/writers/latex2e/__init__.py, docutils/writers/xetex/__init__.py + - Apply [ 3555160 ] ensure order of "otherlanguages". + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-08-13 23:30:52 UTC (rev 7491) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-08-14 08:47:23 UTC (rev 7492) @@ -379,7 +379,7 @@ def __call__(self): """Return the babel call with correct options and settings""" - languages = self.otherlanguages.keys() + languages = sorted(self.otherlanguages.keys()) languages.append(self.language or 'english') self.setup = [r'\usepackage[%s]{babel}' % ','.join(languages)] if 'spanish' in languages: Modified: trunk/docutils/docutils/writers/xetex/__init__.py =================================================================== --- trunk/docutils/docutils/writers/xetex/__init__.py 2012-08-13 23:30:52 UTC (rev 7491) +++ trunk/docutils/docutils/writers/xetex/__init__.py 2012-08-14 08:47:23 UTC (rev 7492) @@ -118,7 +118,7 @@ r'\setdefaultlanguage{%s}' % self.language] if self.otherlanguages: setup.append(r'\setotherlanguages{%s}' % - ','.join(self.otherlanguages.keys())) + ','.join(sorted(self.otherlanguages.keys()))) return '\n'.join(setup) Modified: trunk/docutils/test/functional/expected/standalone_rst_xetex.tex =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-08-13 23:30:52 UTC (rev 7491) +++ trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-08-14 08:47:23 UTC (rev 7492) @@ -7,7 +7,7 @@ \usepackage{amsmath} \usepackage{polyglossia} \setdefaultlanguage{english} -\setotherlanguages{german,british,french} +\setotherlanguages{british,french,german} \usepackage{color} \usepackage{float} % float configuration \floatplacement{figure}{H} % place figures here definitely This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-08-14 10:55:01
|
Revision: 7494 http://docutils.svn.sourceforge.net/docutils/?rev=7494&view=rev Author: milde Date: 2012-08-14 10:54:53 +0000 (Tue, 14 Aug 2012) Log Message: ----------- Fix [ 3556388 ] Mathjax does not work with rst2s5. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/writers/s5_html/__init__.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-08-14 09:01:31 UTC (rev 7493) +++ trunk/docutils/HISTORY.txt 2012-08-14 10:54:53 UTC (rev 7494) @@ -41,7 +41,11 @@ - Apply [ 3555160 ] ensure order of "otherlanguages". +* docutils/writers/s5_html/__init__.py + - Fix [ 3556388 ] Mathjax does not work with rst2s5. + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/docutils/writers/s5_html/__init__.py =================================================================== --- trunk/docutils/docutils/writers/s5_html/__init__.py 2012-08-14 09:01:31 UTC (rev 7493) +++ trunk/docutils/docutils/writers/s5_html/__init__.py 2012-08-14 10:54:53 UTC (rev 7494) @@ -285,6 +285,8 @@ self.html_prolog.append(self.doctype) self.meta.insert(0, self.content_type % self.settings.output_encoding) self.head.insert(0, self.content_type % self.settings.output_encoding) + if self.math_header: + self.head.append(self.math_header) header = ''.join(self.s5_header) footer = ''.join(self.s5_footer) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-08-16 15:17:35
|
Revision: 7497 http://docutils.svn.sourceforge.net/docutils/?rev=7497&view=rev Author: milde Date: 2012-08-16 15:17:29 +0000 (Thu, 16 Aug 2012) Log Message: ----------- Fix [ 3552403 ] Prevent broken PyXML replacing stdlibs xml module. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/writers/docutils_xml.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-08-16 15:11:18 UTC (rev 7496) +++ trunk/docutils/HISTORY.txt 2012-08-16 15:17:29 UTC (rev 7497) @@ -45,7 +45,11 @@ - Fix [ 3556388 ] Mathjax does not work with rst2s5. +* docutils/writers/s5_html/docutils_xml.py + - Fix [ 3552403 ] Prevent broken PyXML replacing stdlibs xml module. + + Release 0.9.1 (2012-06-17) ========================== Modified: trunk/docutils/docutils/writers/docutils_xml.py =================================================================== --- trunk/docutils/docutils/writers/docutils_xml.py 2012-08-16 15:11:18 UTC (rev 7496) +++ trunk/docutils/docutils/writers/docutils_xml.py 2012-08-16 15:17:29 UTC (rev 7497) @@ -11,6 +11,19 @@ __docformat__ = 'reStructuredText' import sys + +# Work around broken PyXML and obsolete python stdlib behaviour. (The stdlib +# replaces its own xml module with PyXML if the latter is installed. However, +# PyXML is no longer maintained and partially incompatible/buggy.) Reverse +# the order in which xml module and submodules are searched to import stdlib +# modules if they exist and PyXML modules if they do not exist in the stdlib. +# +# See http://sourceforge.net/tracker/index.php?func=detail&aid=3552403&group_id=38414&atid=422030 +# and http://lists.fedoraproject.org/pipermail/python-devel/2012-July/000406.html +import xml +if "_xmlplus" in xml.__path__[0]: # PyXML sub-module + xml.__path__.reverse() # If both are available, prefer stdlib over PyXML + import xml.sax.saxutils from StringIO import StringIO This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dku...@us...> - 2012-08-19 21:46:17
|
Revision: 7499 http://docutils.svn.sourceforge.net/docutils/?rev=7499&view=rev Author: dkuhlman Date: 2012-08-19 21:46:11 +0000 (Sun, 19 Aug 2012) Log Message: ----------- Fix to attach the default page style in the body of the document Modified Paths: -------------- trunk/docutils/docutils/writers/odf_odt/__init__.py trunk/docutils/test/functional/expected/odt_basic.odt trunk/docutils/test/functional/expected/odt_custom_headfoot.odt trunk/docutils/test/functional/expected/odt_tables1.odt Modified: trunk/docutils/docutils/writers/odf_odt/__init__.py =================================================================== --- trunk/docutils/docutils/writers/odf_odt/__init__.py 2012-08-19 04:56:42 UTC (rev 7498) +++ trunk/docutils/docutils/writers/odf_odt/__init__.py 2012-08-19 21:46:11 UTC (rev 7499) @@ -73,6 +73,8 @@ PIL.Image = Image except ImportError: PIL = None +if PIL is not None: + import PIL.Image ## import warnings ## warnings.warn('importing IPShellEmbed', UserWarning) @@ -946,7 +948,46 @@ }) el.text = text self.body_text_element.insert(0, el) + el = self.find_first_text_p(self.body_text_element) + if el is not None: + self.attach_page_style(el) + def find_first_text_p(self, el): + """Search the generated doc and return the first <text:p> element. + """ + if ( + el.tag == 'text:p' or + el.tag == 'text:h' + ): + return el + elif el.getchildren(): + for child in el.getchildren(): + el1 = self.find_first_text_p(child) + if el1 is not None: + return el1 + return None + else: + return None + + def attach_page_style(self, el): + """Attach the default page style. + + Create an automatic-style that refers to the current style + of this element and that refers to the default page style. + """ + current_style = el.get('text:style-name') + style_name = 'P1003' + el1 = SubElement( + self.automatic_styles, 'style:style', attrib={ + 'style:name': style_name, + 'style:master-page-name': "rststyle-pagedefault", + 'style:family': "paragraph", + }, nsdict=SNSD) + if current_style: + el1.set('style:parent-style-name', current_style) + el.set('text:style-name', style_name) + + def rststyle(self, name, parameters=( )): """ Returns the style name to use for the given style. Modified: trunk/docutils/test/functional/expected/odt_basic.odt =================================================================== (Binary files differ) Modified: trunk/docutils/test/functional/expected/odt_custom_headfoot.odt =================================================================== (Binary files differ) Modified: trunk/docutils/test/functional/expected/odt_tables1.odt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gr...@us...> - 2012-08-26 15:42:43
|
Revision: 7503 http://docutils.svn.sourceforge.net/docutils/?rev=7503&view=rev Author: grubert Date: 2012-08-26 15:42:37 +0000 (Sun, 26 Aug 2012) Log Message: ----------- Fix [3559988] and [3560841] __import__ local writer, reader, languages and parsers for Python 2.7 up. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/THANKS.txt trunk/docutils/docutils/languages/__init__.py trunk/docutils/docutils/parsers/__init__.py trunk/docutils/docutils/parsers/rst/languages/__init__.py trunk/docutils/docutils/readers/__init__.py trunk/docutils/test/test_language.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/HISTORY.txt 2012-08-26 15:42:37 UTC (rev 7503) @@ -22,6 +22,8 @@ - ``docutils/math``, ``docutils/error_reporting.py``, and ``docutils/urischemes.py`` moved to the utils package. - Fix [3541369] Relative __import__ also with Python 3.3. + - Fix [3559988] and [3560841] __import__ local writer, reader, languages + and parsers for Python 2.7 up. * docutils/io.py Modified: trunk/docutils/THANKS.txt =================================================================== --- trunk/docutils/THANKS.txt 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/THANKS.txt 2012-08-26 15:42:37 UTC (rev 7503) @@ -110,6 +110,7 @@ * Panjunyong * Patrick K. O'Brien * Michel Pelletier +* Toshio Kuratomi * Sam Penrose * Tim Peters * Pearu Peterson Modified: trunk/docutils/docutils/languages/__init__.py =================================================================== --- trunk/docutils/docutils/languages/__init__.py 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/docutils/languages/__init__.py 2012-08-26 15:42:37 UTC (rev 7503) @@ -30,9 +30,12 @@ if tag in _languages: return _languages[tag] try: - module = __import__(tag, globals(), locals(), level=1) + module = __import__(tag, globals(), locals(), level=0) except ImportError: - continue + try: + module = __import__(tag, globals(), locals(), level=1) + except ImportError: + continue _languages[tag] = module return module if reporter is not None: Modified: trunk/docutils/docutils/parsers/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/__init__.py 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/docutils/parsers/__init__.py 2012-08-26 15:42:37 UTC (rev 7503) @@ -46,5 +46,8 @@ parser_name = parser_name.lower() if parser_name in _parser_aliases: parser_name = _parser_aliases[parser_name] - module = __import__(parser_name, globals(), locals(), level=1) + try: + module = __import__(parser_name, globals(), locals(), level=0) + except ImportError: + module = __import__(parser_name, globals(), locals(), level=1) return module.Parser Modified: trunk/docutils/docutils/parsers/rst/languages/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/rst/languages/__init__.py 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/docutils/parsers/rst/languages/__init__.py 2012-08-26 15:42:37 UTC (rev 7503) @@ -25,9 +25,12 @@ if tag in _languages: return _languages[tag] try: - module = __import__(tag, globals(), locals(), level=1) + module = __import__(tag, globals(), locals(), level=0) except ImportError: - continue + try: + module = __import__(tag, globals(), locals(), level=1) + except ImportError: + continue _languages[tag] = module return module return None Modified: trunk/docutils/docutils/readers/__init__.py =================================================================== --- trunk/docutils/docutils/readers/__init__.py 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/docutils/readers/__init__.py 2012-08-26 15:42:37 UTC (rev 7503) @@ -106,5 +106,8 @@ reader_name = reader_name.lower() if reader_name in _reader_aliases: reader_name = _reader_aliases[reader_name] - module = __import__(reader_name, globals(), locals(), level=1) + try: + module = __import__(reader_name, globals(), locals(), level=0) + except ImportError: + module = __import__(reader_name, globals(), locals(), level=1) return module.Reader Modified: trunk/docutils/test/test_language.py =================================================================== --- trunk/docutils/test/test_language.py 2012-08-24 09:50:46 UTC (rev 7502) +++ trunk/docutils/test/test_language.py 2012-08-26 15:42:37 UTC (rev 7503) @@ -53,6 +53,11 @@ # test language tag normalization: self.languages += ['en_gb', 'en_US', 'en-CA', 'de-DE', 'de-AT-1901', 'pt-BR', 'pt-foo-BR'] + # test that locally created language files are also loaded. + # requires local_dummy_lang.py in test directory (testroot) + # The local_dummy_lang.py contains all the fields from both + # the docutils language tags and the parser.rst language tags + self.languages += ['local_dummy_lang'] def generateTests(self): for language in self.languages: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-09-03 09:17:26
|
Revision: 7505 http://docutils.svn.sourceforge.net/docutils/?rev=7505&view=rev Author: milde Date: 2012-09-03 09:17:15 +0000 (Mon, 03 Sep 2012) Log Message: ----------- Allow running test_buildhtml.py from anywhere, also with Python 3. Fixes [ 3521167 ] and [ 3521168 ]. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/tools/test/test_buildhtml.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-08-27 07:55:20 UTC (rev 7504) +++ trunk/docutils/HISTORY.txt 2012-09-03 09:17:15 UTC (rev 7505) @@ -34,6 +34,11 @@ - Fix [ 3546533 ] Unicode error with `date` directive. +* docutils/tools/test/test_buildhtml.py + + - Fix [ 3521167 ] allow running in any directory. + - Fix [ 3521168 ] allow running with Python 3. + * docutils/writers/manpage.py - Apply [ 3527401 ] addmonition's don't preserve indentation Modified: trunk/docutils/tools/test/test_buildhtml.py =================================================================== --- trunk/docutils/tools/test/test_buildhtml.py 2012-08-27 07:55:20 UTC (rev 7504) +++ trunk/docutils/tools/test/test_buildhtml.py 2012-09-03 09:17:15 UTC (rev 7505) @@ -34,40 +34,49 @@ except ImportError: pass + +buildhtml_path = os.path.abspath(os.path.join( + os.path.dirname(__file__) or os.curdir, + '..', 'buildhtml.py')) + def process_and_return_filelist(options): dirs = [] files = [] try: - p = Popen("../buildhtml.py "+options, shell=True, + p = Popen(buildhtml_path+" "+options, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) (cin, cout) = (p.stdin, p.stdout) except NameError: - cin, cout = os.popen4("../buildhtml.py "+options) + cin, cout = os.popen4(buildhtml_path+" "+options) while 1: line = cout.readline() if not line: break + # in Py 3x, cout.readline() returns `bytes` and the processing fails + line = line.decode('ascii', 'replace') # BUG no colon in filename/path allowed - item = line.split(":")[-1].strip() + item = line.split(": ")[-1].strip() if line.startswith(" "): files.append(item) else: dirs.append(item) + cin.close() + cout.close() return (dirs, files) class BuildHtmlTests(unittest.TestCase): tree = ( "_tmp_test_tree", - "_tmp_test_tree/one.txt", - "_tmp_test_tree/two.txt", - "_tmp_test_tree/dir1", - "_tmp_test_tree/dir1/one.txt", - "_tmp_test_tree/dir1/two.txt", - "_tmp_test_tree/dir2", - "_tmp_test_tree/dir2/one.txt", - "_tmp_test_tree/dir2/two.txt", - "_tmp_test_tree/dir2/sub", - "_tmp_test_tree/dir2/sub/one.txt", - "_tmp_test_tree/dir2/sub/two.txt", + "_tmp_test_tree/one.txt", + "_tmp_test_tree/two.txt", + "_tmp_test_tree/dir1", + "_tmp_test_tree/dir1/one.txt", + "_tmp_test_tree/dir1/two.txt", + "_tmp_test_tree/dir2", + "_tmp_test_tree/dir2/one.txt", + "_tmp_test_tree/dir2/two.txt", + "_tmp_test_tree/dir2/sub", + "_tmp_test_tree/dir2/sub/one.txt", + "_tmp_test_tree/dir2/sub/two.txt", ) def setUp(self): @@ -76,13 +85,15 @@ except NameError: self.root = os.tempnam() os.mkdir(self.root) - + for s in self.tree: s = os.path.join(self.root, s) if not "." in s: os.mkdir(s) else: - open(s, "w").write("dummy") + fd_s = open(s, "w") + fd_s.write("dummy") + fd_s.close() def tearDown(self): for i in range(len(self.tree) - 1, -1, -1): @@ -96,13 +107,13 @@ def test_1(self): opts = "--dry-run "+ self.root dirs, files = process_and_return_filelist( opts ) - self.assertEquals(files.count("one.txt"), 4) + self.assertEqual(files.count("one.txt"), 4) def test_local(self): opts = "--dry-run --local "+ self.root dirs, files = process_and_return_filelist( opts ) - self.assertEquals( len(dirs), 1) - self.assertEquals( files, []) + self.assertEqual( len(dirs), 1) + self.assertEqual( files, []) if __name__ == '__main__': unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-09-06 12:29:44
|
Revision: 7506 http://docutils.svn.sourceforge.net/docutils/?rev=7506&view=rev Author: milde Date: 2012-09-06 12:29:33 +0000 (Thu, 06 Sep 2012) Log Message: ----------- Fix section numbering by LaTeX. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/writers/latex2e/__init__.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-09-03 09:17:15 UTC (rev 7505) +++ trunk/docutils/HISTORY.txt 2012-09-06 12:29:33 UTC (rev 7506) @@ -47,6 +47,7 @@ * docutils/writers/latex2e/__init__.py, docutils/writers/xetex/__init__.py - Apply [ 3555160 ] ensure order of "otherlanguages". + - Fix section numbering by LaTeX. * docutils/writers/s5_html/__init__.py Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-09-03 09:17:15 UTC (rev 7505) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-09-06 12:29:33 UTC (rev 7506) @@ -1283,7 +1283,7 @@ ## len(self.d_class.sections)) # Section numbering - if not self.settings.sectnum_xform: # section numbering by Docutils + if settings.sectnum_xform: # section numbering by Docutils PreambleCmds.secnumdepth = r'\setcounter{secnumdepth}{0}' else: # section numbering by LaTeX: secnumdepth = settings.sectnum_depth @@ -2873,7 +2873,8 @@ self.context.append('') # Section title else: - self.requirements['secnumdepth'] = PreambleCmds.secnumdepth + if hasattr(PreambleCmds, 'secnumdepth'): + self.requirements['secnumdepth'] = PreambleCmds.secnumdepth section_name = self.d_class.section(self.section_level) self.out.append('\n\n') # System messages heading in red: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-09-12 07:22:31
|
Revision: 7510 http://docutils.svn.sourceforge.net/docutils/?rev=7510&view=rev Author: milde Date: 2012-09-12 07:22:25 +0000 (Wed, 12 Sep 2012) Log Message: ----------- Fix import of PIL.Image. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/parsers/rst/directives/images.py trunk/docutils/docutils/writers/html4css1/__init__.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-09-10 21:58:58 UTC (rev 7509) +++ trunk/docutils/HISTORY.txt 2012-09-12 07:22:25 UTC (rev 7510) @@ -24,6 +24,7 @@ - Fix [3541369] Relative __import__ also with Python 3.3. - Fix [3559988] and [3560841] __import__ local writer, reader, languages and parsers for Python 2.7 up. + - Fix import of PIL.Image. * docutils/io.py Modified: trunk/docutils/docutils/parsers/rst/directives/images.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/images.py 2012-09-10 21:58:58 UTC (rev 7509) +++ trunk/docutils/docutils/parsers/rst/directives/images.py 2012-09-12 07:22:25 UTC (rev 7510) @@ -17,7 +17,7 @@ from docutils.nodes import fully_normalize_name, whitespace_normalize_name from docutils.parsers.rst.roles import set_classes try: # check for the Python Imaging Library - import PIL + import PIL.Image except ImportError: try: # sometimes PIL modules are put in PYTHONPATH's root import Image Modified: trunk/docutils/docutils/writers/html4css1/__init__.py =================================================================== --- trunk/docutils/docutils/writers/html4css1/__init__.py 2012-09-10 21:58:58 UTC (rev 7509) +++ trunk/docutils/docutils/writers/html4css1/__init__.py 2012-09-12 07:22:25 UTC (rev 7510) @@ -22,7 +22,7 @@ import re import urllib try: # check for the Python Imaging Library - import PIL + import PIL.Image except ImportError: try: # sometimes PIL modules are put in PYTHONPATH's root import Image @@ -602,7 +602,13 @@ '</tbody>\n</table>\n') def visit_citation_reference(self, node): - href = '#' + node['refid'] + href = '#' + if 'refid' in node: + href += node['refid'] + elif 'refname' in node: + href += self.document.nameids[node['refname']] + # else: # TODO system message (or already in the transform)? + # 'Citation reference missing.' self.body.append(self.starttag( node, 'a', '[', CLASS='citation-reference', href=href)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-09-12 13:11:08
|
Revision: 7511 http://docutils.svn.sourceforge.net/docutils/?rev=7511&view=rev Author: milde Date: 2012-09-12 13:11:02 +0000 (Wed, 12 Sep 2012) Log Message: ----------- Use ``<code>`` tag for inline "code", do not drop nested inline nodes (syntax highlight tokens). Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docutils/writers/html4css1/__init__.py trunk/docutils/test/functional/expected/standalone_rst_html4css1.html Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-09-12 07:22:25 UTC (rev 7510) +++ trunk/docutils/HISTORY.txt 2012-09-12 13:11:02 UTC (rev 7511) @@ -35,6 +35,11 @@ - Fix [ 3546533 ] Unicode error with `date` directive. +* docutils/writers/html4css1/__init__.py + + - Use ``<code>`` tag for inline "code", + do not drop nested inline nodes (syntax highlight tokens). + * docutils/tools/test/test_buildhtml.py - Fix [ 3521167 ] allow running in any directory. Modified: trunk/docutils/docutils/writers/html4css1/__init__.py =================================================================== --- trunk/docutils/docutils/writers/html4css1/__init__.py 2012-09-12 07:22:25 UTC (rev 7510) +++ trunk/docutils/docutils/writers/html4css1/__init__.py 2012-09-12 13:11:02 UTC (rev 7511) @@ -253,7 +253,7 @@ generator = ('<meta name="generator" content="Docutils %s: ' 'http://docutils.sourceforge.net/" />\n') - + # Template for the MathJax script in the header: mathjax_script = '<script type="text/javascript" src="%s"></script>\n' # The latest version of MathJax from the distributed server: @@ -266,7 +266,7 @@ # a) as extra option or # b) appended to math-output="MathJax"? # - # If b), which delimiter/delimter-set (':', ',', ' ')? + # If b), which delimiter/delimter-set (':', ',', ' ')? stylesheet_link = '<link rel="stylesheet" href="%s" type="text/css" />\n' embedded_stylesheet = '<style type="text/css">\n\n%s\n</style>\n' @@ -288,7 +288,7 @@ # encoding not interpolated: self.html_prolog.append(self.xml_declaration) self.head = self.meta[:] - self.stylesheet = [self.stylesheet_call(path) + self.stylesheet = [self.stylesheet_call(path) for path in utils.get_stylesheet_list(settings)] self.body_prefix = ['</head>\n<body>\n'] # document title, subtitle display @@ -1124,7 +1124,15 @@ self.body.append('</li>\n') def visit_literal(self, node): - """Process text to prevent tokens from wrapping.""" + # special case: inline code: + classes = node.get('classes', []) + if 'code' in classes: + # filter 'code' from class arguments + node['classes'] = [cls for cls in classes if cls != 'code'] + self.body.append(self.starttag(node, 'code', '')) + node['classes'] = classes # restore for test in depart_literal() + return + # Process text to prevent tokens from wrapping. self.body.append( self.starttag(node, 'tt', '', CLASS='docutils literal')) text = node.astext() @@ -1147,6 +1155,10 @@ # Content already processed: raise nodes.SkipNode + def depart_literal(self, node): + if 'code' in node.get('classes', []): + self.body.append('</code>') + def visit_literal_block(self, node): self.body.append(self.starttag(node, 'pre', CLASS='literal-block')) @@ -1201,7 +1213,7 @@ self.body.append(self.starttag(node, 'p')) self.body.append(u','.join(err.args)) self.body.append('</p>\n') - self.body.append(self.starttag(node, 'pre', + self.body.append(self.starttag(node, 'pre', CLASS='literal-block')) self.body.append(self.encode(math_code)) self.body.append('\n</pre>\n') Modified: trunk/docutils/test/functional/expected/standalone_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-09-12 07:22:25 UTC (rev 7510) +++ trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-09-12 13:11:02 UTC (rev 7511) @@ -184,7 +184,7 @@ <p>The default role for interpreted text is <cite>Title Reference</cite>. Here are some explicit interpreted text roles: a PEP reference (<a class="reference external" href="http://www.python.org/dev/peps/pep-0287">PEP 287</a>); an RFC reference (<a class="reference external" href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a>); an abbreviation (<abbr>abb.</abbr>), an acronym -(<acronym>reST</acronym>), code (<tt class="code docutils literal">print "hello world"</tt>); a <sub>subscript</sub>; +(<acronym>reST</acronym>), code (<code>print "hello world"</code>); a <sub>subscript</sub>; a <sup>superscript</sup> and explicit roles for <cite>Docutils</cite>' <em>standard</em> <strong>inline</strong> <tt class="docutils literal">markup</tt>.</p> <!-- DO NOT RE-WRAP THE FOLLOWING PARAGRAPH! --> @@ -863,7 +863,7 @@ <!-- --> <blockquote> Docutils uses LaTeX syntax for math directives and roles: -<tt class="code latex tex docutils literal">\alpha = f(x)</tt> prints <span class="math"> +<code class="latex tex">\alpha = f(x)</code> prints <span class="math"> \(\alpha = f(x)\)</span> .</blockquote> <p>The <tt class="docutils literal">:code:</tt> option of the <cite>include</cite> directive sets the included content This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2012-09-14 14:27:25
|
Revision: 7514 http://docutils.svn.sourceforge.net/docutils/?rev=7514&view=rev Author: milde Date: 2012-09-14 14:27:12 +0000 (Fri, 14 Sep 2012) Log Message: ----------- Change default of "syntax highlight" option to "long", Add basic syntax highlight styles for LaTeX and HTML. Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/docs/ref/rst/directives.txt trunk/docutils/docs/user/config.txt trunk/docutils/docutils/parsers/rst/__init__.py trunk/docutils/docutils/parsers/rst/roles.py trunk/docutils/docutils/writers/html4css1/html4css1.css trunk/docutils/docutils/writers/latex2e/__init__.py trunk/docutils/test/functional/expected/standalone_rst_html4css1.html trunk/docutils/test/functional/expected/standalone_rst_latex.tex trunk/docutils/test/functional/expected/standalone_rst_pseudoxml.txt trunk/docutils/test/functional/expected/standalone_rst_xetex.tex trunk/docutils/test/functional/input/data/standard.txt trunk/docutils/test/test_parsers/test_rst/test_directives/test_code.py trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py trunk/docutils/test/test_parsers/test_rst/test_interpreted.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/HISTORY.txt 2012-09-14 14:27:12 UTC (rev 7514) @@ -25,6 +25,8 @@ - Fix [3559988] and [3560841] __import__ local writer, reader, languages and parsers for Python 2.7 up. - Fix import of PIL.Image. + - Change default of "syntax highlight" option to "long", + basic syntax highlight styles for LaTeX and HTML. * docutils/io.py Modified: trunk/docutils/docs/ref/rst/directives.txt =================================================================== --- trunk/docutils/docs/ref/rst/directives.txt 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docs/ref/rst/directives.txt 2012-09-14 14:27:12 UTC (rev 7514) @@ -479,13 +479,13 @@ The "code" directive constructs a literal block. If the code language is specified, the content is parsed by the Pygments_ syntax highlighter and tokens are stored in nested `inline elements`_ with class arguments -according to their syntactic category. The actual highlighting depends on a -style-sheet (e.g. one `generated by Pygments`__). +according to their syntactic category. The actual highlighting can be +customized with a style-sheet (e.g. one `generated by Pygments`__). The parsing can be turned off with the syntax_highlight_ configuration setting and command line option or by specifying the language as `:class:`_ -option (leaveing the directive argument empty). This also avoids warnings -when Pygments_ is not installed or the language is not amongst the +option instead of directive argument. This also avoids warnings +when Pygments_ is not installed or the language is not in the `supported languages and markup formats`_. __ http://pygments.org/docs/cmdline/#generating-styles Modified: trunk/docutils/docs/user/config.txt =================================================================== --- trunk/docutils/docs/user/config.txt 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docs/user/config.txt 2012-09-14 14:27:12 UTC (rev 7514) @@ -600,7 +600,7 @@ No code parsing. Use this to avoid the "Pygments not found" warning when Pygments is not installed. - Default: "short". Option: ``--syntax-highlight``. + Default: "long". Option: ``--syntax-highlight``. .. _Pygments: http://pygments.org/ .. _code: ../ref/rst/directives.html#code Modified: trunk/docutils/docutils/parsers/rst/__init__.py =================================================================== --- trunk/docutils/docutils/parsers/rst/__init__.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docutils/parsers/rst/__init__.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -136,7 +136,7 @@ '"long", "short", or "none (no parsing)". Default is "short".', ['--syntax-highlight'], {'choices': ['long', 'short', 'none'], - 'default': 'short', 'metavar': '<format>'}),)) + 'default': 'long', 'metavar': '<format>'}),)) config_section = 'restructuredtext parser' config_section_dependencies = ('parsers',) Modified: trunk/docutils/docutils/parsers/rst/roles.py =================================================================== --- trunk/docutils/docutils/parsers/rst/roles.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docutils/parsers/rst/roles.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -320,11 +320,10 @@ set_classes(options) language = options.get('language', '') classes = ['code'] - if language: - classes.append(language) if 'classes' in options: classes.extend(options['classes']) - + if language and language not in classes: + classes.append(language) try: tokens = Lexer(utils.unescape(text, 1), language, inliner.document.settings.syntax_highlight) Modified: trunk/docutils/docutils/writers/html4css1/html4css1.css =================================================================== --- trunk/docutils/docutils/writers/html4css1/html4css1.css 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docutils/writers/html4css1/html4css1.css 2012-09-14 14:27:12 UTC (rev 7514) @@ -68,7 +68,7 @@ div.attention p.admonition-title, div.caution p.admonition-title, div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title { +div.warning p.admonition-title, .code .error { color: red ; font-weight: bold ; font-family: sans-serif } @@ -244,14 +244,15 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { /* line numbers */ - color: grey; -} +pre.code .ln { color: grey; } /* line numbers */ +pre.code, code { background-color: #eeeeee } +pre.code .comment, code .comment { color: #5C6576 } +pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } +pre.code .literal.string, code .literal.string { color: #0C5404 } +pre.code .name.builtin, code .name.builtin { color: #352B84 } +pre.code .deleted, code .deleted { background-color: #DEB0A1} +pre.code .inserted, code .inserted { background-color: #A3D289} -.code { - background-color: #eeeeee -} - span.classifier { font-family: sans-serif ; font-style: oblique } Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -545,6 +545,12 @@ \usepackage[pdftex]{graphicx} \fi'))""" +PreambleCmds.highlight_rules = r"""% basic code highlight: +\providecommand*\DUrolecomment[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUroledeleted[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUrolekeyword[1]{\textbf{#1}} +\providecommand*\DUrolestring[1]{\textit{#1}}""" + PreambleCmds.inline = r""" % inline markup (custom roles) % \DUrole{#1}{#2} tries \DUrole#1{#2} @@ -2370,6 +2376,9 @@ def visit_literal(self, node): self.literal = True + if 'code' in node.get('classes', []): + self.requirements['color'] = PreambleCmds.color + self.requirements['code'] = PreambleCmds.highlight_rules self.out.append('\\texttt{') if node['classes']: self.visit_inline(node) Modified: trunk/docutils/test/functional/expected/standalone_rst_html4css1.html =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/functional/expected/standalone_rst_html4css1.html 2012-09-14 14:27:12 UTC (rev 7514) @@ -858,14 +858,13 @@ <span class="ln">10 </span> print i </pre> <p>For inline code snippets, there is the <cite>code</cite> role, which can be used -directly (the code will not be parsed/tagged, as the language is not -known) or as base for special code roles, e.g.,</p> -<!-- --> -<blockquote> -Docutils uses LaTeX syntax for math directives and roles: -<code class="latex tex">\alpha = f(x)</code> prints <span class="math"> +directly (the code will not be parsed/tagged, as the language is not known) +or as base for special code roles, e.g. the LaTeX code in the next +paragraph.</p> +<p>Docutils uses LaTeX syntax for math directives and roles: +<code class="tex">\alpha = f(x)</code> prints <span class="math"> \(\alpha = f(x)\)</span> -.</blockquote> +.</p> <p>The <tt class="docutils literal">:code:</tt> option of the <cite>include</cite> directive sets the included content as a code block, here the rst file <tt class="docutils literal">header_footer.txt</tt> with line numbers:</p> <pre class="code rst literal-block"> Modified: trunk/docutils/test/functional/expected/standalone_rst_latex.tex =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_latex.tex 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/functional/expected/standalone_rst_latex.tex 2012-09-14 14:27:12 UTC (rev 7514) @@ -10,6 +10,11 @@ % Prevent side-effects if French hyphenation patterns are not loaded: \frenchbsetup{StandardLayout} \AtBeginDocument{\selectlanguage{english}\noextrasfrench} +% basic code highlight: +\providecommand*\DUrolecomment[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUroledeleted[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUrolekeyword[1]{\textbf{#1}} +\providecommand*\DUrolestring[1]{\textit{#1}} \usepackage{color} \usepackage{float} % float configuration \floatplacement{figure}{H} % place figures here definitely @@ -1276,18 +1281,13 @@ \end{quote} For inline code snippets, there is the \DUroletitlereference{code} role, which can be used -directly (the code will not be parsed/tagged, as the language is not -known) or as base for special code roles, e.g., +directly (the code will not be parsed/tagged, as the language is not known) +or as base for special code roles, e.g. the LaTeX code in the next +paragraph. -% -% -\begin{quote} - Docutils uses LaTeX syntax for math directives and roles: -\texttt{\DUrole{code}{\DUrole{latex}{\DUrole{tex}{\textbackslash{}alpha = f(x)}}}} prints $\alpha = f(x)$. +\texttt{\DUrole{code}{\DUrole{tex}{\textbackslash{}alpha = f(x)}}} prints $\alpha = f(x)$. -\end{quote} - The \texttt{:code:} option of the \DUroletitlereference{include} directive sets the included content as a code block, here the rst file \texttt{header\_footer.txt} with line numbers: % Modified: trunk/docutils/test/functional/expected/standalone_rst_pseudoxml.txt =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_pseudoxml.txt 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/functional/expected/standalone_rst_pseudoxml.txt 2012-09-14 14:27:12 UTC (rev 7514) @@ -1665,20 +1665,18 @@ <title_reference> code role, which can be used - directly (the code will not be parsed/tagged, as the language is not - known) or as base for special code roles, e.g., - <comment xml:space="preserve"> - <block_quote> - <paragraph> - Docutils uses LaTeX syntax for math directives and roles: - <literal classes="code latex tex"> - \alpha = f(x) - prints - <math> - \alpha = f(x) - . - <target ids="pygments" names="pygments" refuri="http://pygments.org/"> + directly (the code will not be parsed/tagged, as the language is not known) + or as base for special code roles, e.g. the LaTeX code in the next + paragraph. <paragraph> + Docutils uses LaTeX syntax for math directives and roles: + <literal classes="code tex"> + \alpha = f(x) + prints + <math> + \alpha = f(x) + . + <paragraph> The <literal> :code: @@ -1697,6 +1695,7 @@ <inline classes="ln"> 2 .. footer:: Document footer + <target ids="pygments" names="pygments" refuri="http://pygments.org/"> <section ids="substitution-definitions" names="substitution\ definitions"> <title auto="1" refid="id65"> <generated classes="sectnum"> Modified: trunk/docutils/test/functional/expected/standalone_rst_xetex.tex =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/functional/expected/standalone_rst_xetex.tex 2012-09-14 14:27:12 UTC (rev 7514) @@ -8,6 +8,11 @@ \usepackage{polyglossia} \setdefaultlanguage{english} \setotherlanguages{british,french,german} +% basic code highlight: +\providecommand*\DUrolecomment[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUroledeleted[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\providecommand*\DUrolekeyword[1]{\textbf{#1}} +\providecommand*\DUrolestring[1]{\textit{#1}} \usepackage{color} \usepackage{float} % float configuration \floatplacement{figure}{H} % place figures here definitely @@ -1275,18 +1280,13 @@ \end{quote} For inline code snippets, there is the \DUroletitlereference{code} role, which can be used -directly (the code will not be parsed/tagged, as the language is not -known) or as base for special code roles, e.g., +directly (the code will not be parsed/tagged, as the language is not known) +or as base for special code roles, e.g. the LaTeX code in the next +paragraph. -% -% -\begin{quote} - Docutils uses LaTeX syntax for math directives and roles: -\texttt{\DUrole{code}{\DUrole{latex}{\DUrole{tex}{\textbackslash{}alpha = f(x)}}}} prints $\alpha = f(x)$. +\texttt{\DUrole{code}{\DUrole{tex}{\textbackslash{}alpha = f(x)}}} prints $\alpha = f(x)$. -\end{quote} - The \texttt{:code:} option of the \DUroletitlereference{include} directive sets the included content as a code block, here the rst file \texttt{header\_footer.txt} with line numbers: % Modified: trunk/docutils/test/functional/input/data/standard.txt =================================================================== --- trunk/docutils/test/functional/input/data/standard.txt 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/functional/input/data/standard.txt 2012-09-14 14:27:12 UTC (rev 7514) @@ -780,19 +780,16 @@ print i For inline code snippets, there is the `code` role, which can be used -directly (the code will not be parsed/tagged, as the language is not -known) or as base for special code roles, e.g., +directly (the code will not be parsed/tagged, as the language is not known) +or as base for special code roles, e.g. the LaTeX code in the next +paragraph. .. role:: tex(code) - :language: latex + :language: tex -.. +Docutils uses LaTeX syntax for math directives and roles: +:tex:`\alpha = f(x)` prints :math:`\alpha = f(x)`. - Docutils uses LaTeX syntax for math directives and roles: - :tex:`\alpha = f(x)` prints :math:`\alpha = f(x)`. - -.. _Pygments: http://pygments.org/ - The ``:code:`` option of the `include` directive sets the included content as a code block, here the rst file ``header_footer.txt`` with line numbers: @@ -800,6 +797,7 @@ :code: rst :number-lines: +.. _Pygments: http://pygments.org/ Substitution Definitions ------------------------ Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_code.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_code.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_code.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -104,13 +104,13 @@ <document source="test data"> <literal_block classes="code python testclass" xml:space="preserve"> \n\ - <inline classes="k"> + <inline classes="keyword"> print \n\ - <inline classes="s"> + <inline classes="literal string"> 'hello world' \n\ - <inline classes="c"> + <inline classes="comment"> # to stdout """], ["""\ @@ -131,22 +131,22 @@ <literal_block classes="code python testclass" ids="my-function" names="my_function" xml:space="preserve"> <inline classes="ln"> 7 \n\ - <inline classes="k"> + <inline classes="keyword"> def \n\ - <inline classes="nf"> + <inline classes="name function"> my_function - <inline classes="p"> + <inline classes="punctuation"> (): \n\ <inline classes="ln"> 8 \n\ \n\ - <inline classes="sd"> + <inline classes="literal string doc"> \'\'\'Test the lexer. <inline classes="ln"> 9 \n\ - <inline classes="sd"> + <inline classes="literal string doc"> \'\'\' \n\ <inline classes="ln"> @@ -155,20 +155,20 @@ <inline classes="ln"> 11 \n\ \n\ - <inline classes="c"> + <inline classes="comment"> # and now for something completely different \n\ <inline classes="ln"> 12 \n\ \n\ - <inline classes="k"> + <inline classes="keyword"> print \n\ - <inline classes="mi"> + <inline classes="literal number integer"> 8 - <inline classes="o"> + <inline classes="operator"> / - <inline classes="mi"> + <inline classes="literal number integer"> 2 """], ["""\ @@ -181,15 +181,15 @@ <document source="test data"> <literal_block classes="code latex testclass" xml:space="preserve"> hello \n\ - <inline classes="k"> + <inline classes="keyword"> \\emph - <inline classes="nb"> + <inline classes="name builtin"> { world - <inline classes="nb"> + <inline classes="name builtin"> } \n\ - <inline classes="c"> + <inline classes="comment"> % emphasize"""], ["""\ .. code:: rst Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_include.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -913,15 +913,15 @@ <paragraph> Included code <literal_block classes="code rst" source="%s" xml:space="preserve"> - <inline classes="gh"> + <inline classes="generic heading"> Inclusion 1 \n\ - <inline classes="gh"> + <inline classes="generic heading"> ----------- \n\ \n\ This file is used by \n\ - <inline classes="s"> + <inline classes="literal string"> ``test_include.py`` . """ % reldir(include1)], @@ -939,12 +939,12 @@ <literal_block classes="code rst" source="%s" xml:space="preserve"> <inline classes="ln"> 1 \n\ - <inline classes="gh"> + <inline classes="generic heading"> Inclusion 1 \n\ <inline classes="ln"> 2 \n\ - <inline classes="gh"> + <inline classes="generic heading"> ----------- \n\ <inline classes="ln"> @@ -953,7 +953,7 @@ <inline classes="ln"> 4 \n\ This file is used by \n\ - <inline classes="s"> + <inline classes="literal string"> ``test_include.py`` . """ % reldir(include1)], Modified: trunk/docutils/test/test_parsers/test_rst/test_interpreted.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_interpreted.py 2012-09-12 21:17:04 UTC (rev 7513) +++ trunk/docutils/test/test_parsers/test_rst/test_interpreted.py 2012-09-14 14:27:12 UTC (rev 7514) @@ -244,22 +244,22 @@ <document source="test data"> <paragraph> Custom role based on code role: - <literal classes="code latex tex"> - <inline classes="s"> + <literal classes="code tex latex"> + <inline classes="literal string"> $ - <inline classes="nb"> + <inline classes="name builtin"> \x07lpha \n\ - <inline classes="o"> + <inline classes="operator"> = - <inline classes="nb"> + <inline classes="name builtin"> f - <inline classes="o"> + <inline classes="operator"> ( - <inline classes="nb"> + <inline classes="name builtin"> x - <inline classes="o"> + <inline classes="operator"> ) - <inline classes="s"> + <inline classes="literal string"> $ . """], @@ -278,14 +278,14 @@ Custom role based on code role: <paragraph> Python code \n\ - <literal classes="code python testclass"> - <inline classes="k"> + <literal classes="code testclass python"> + <inline classes="keyword"> print - <inline classes="p"> + <inline classes="punctuation"> ( - <inline classes="s"> + <inline classes="literal string"> "The end" - <inline classes="p"> + <inline classes="punctuation"> ) . """], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |