mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	merge with 3.4
This commit is contained in:
		
						commit
						e075f1617f
					
				
					 1 changed files with 33 additions and 28 deletions
				
			
		|  | @ -9,15 +9,32 @@ | ||||||
|     :license: Python license. |     :license: Python license. | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| ISSUE_URI = 'https://bugs.python.org/issue%s' | import re | ||||||
| SOURCE_URI = 'https://hg.python.org/cpython/file/default/%s' | import codecs | ||||||
|  | from os import path | ||||||
|  | from time import asctime | ||||||
|  | from pprint import pformat | ||||||
|  | from docutils.io import StringOutput | ||||||
|  | from docutils.utils import new_document | ||||||
| 
 | 
 | ||||||
| from docutils import nodes, utils | from docutils import nodes, utils | ||||||
| 
 | 
 | ||||||
|  | from sphinx import addnodes | ||||||
|  | from sphinx.builders import Builder | ||||||
| from sphinx.util.nodes import split_explicit_title | from sphinx.util.nodes import split_explicit_title | ||||||
| from sphinx.util.compat import Directive | from sphinx.util.compat import Directive | ||||||
| from sphinx.writers.html import HTMLTranslator | from sphinx.writers.html import HTMLTranslator | ||||||
|  | from sphinx.writers.text import TextWriter | ||||||
| from sphinx.writers.latex import LaTeXTranslator | from sphinx.writers.latex import LaTeXTranslator | ||||||
|  | from sphinx.domains.python import PyModulelevel, PyClassmember | ||||||
|  | 
 | ||||||
|  | # Support for checking for suspicious markup | ||||||
|  | 
 | ||||||
|  | import suspicious | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ISSUE_URI = 'https://bugs.python.org/issue%s' | ||||||
|  | SOURCE_URI = 'https://hg.python.org/cpython/file/default/%s' | ||||||
| 
 | 
 | ||||||
| # monkey-patch reST parser to disable alphabetic and roman enumerated lists | # monkey-patch reST parser to disable alphabetic and roman enumerated lists | ||||||
| from docutils.parsers.rst.states import Body | from docutils.parsers.rst.states import Body | ||||||
|  | @ -29,6 +46,9 @@ | ||||||
| # monkey-patch HTML and LaTeX translators to keep doctest blocks in the | # monkey-patch HTML and LaTeX translators to keep doctest blocks in the | ||||||
| # doctest docs themselves | # doctest docs themselves | ||||||
| orig_visit_literal_block = HTMLTranslator.visit_literal_block | orig_visit_literal_block = HTMLTranslator.visit_literal_block | ||||||
|  | orig_depart_literal_block = LaTeXTranslator.depart_literal_block | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def new_visit_literal_block(self, node): | def new_visit_literal_block(self, node): | ||||||
|     meta = self.builder.env.metadata[self.builder.current_docname] |     meta = self.builder.env.metadata[self.builder.current_docname] | ||||||
|     old_trim_doctest_flags = self.highlighter.trim_doctest_flags |     old_trim_doctest_flags = self.highlighter.trim_doctest_flags | ||||||
|  | @ -39,9 +59,7 @@ def new_visit_literal_block(self, node): | ||||||
|     finally: |     finally: | ||||||
|         self.highlighter.trim_doctest_flags = old_trim_doctest_flags |         self.highlighter.trim_doctest_flags = old_trim_doctest_flags | ||||||
| 
 | 
 | ||||||
| HTMLTranslator.visit_literal_block = new_visit_literal_block |  | ||||||
| 
 | 
 | ||||||
| orig_depart_literal_block = LaTeXTranslator.depart_literal_block |  | ||||||
| def new_depart_literal_block(self, node): | def new_depart_literal_block(self, node): | ||||||
|     meta = self.builder.env.metadata[self.curfilestack[-1]] |     meta = self.builder.env.metadata[self.curfilestack[-1]] | ||||||
|     old_trim_doctest_flags = self.highlighter.trim_doctest_flags |     old_trim_doctest_flags = self.highlighter.trim_doctest_flags | ||||||
|  | @ -52,8 +70,11 @@ def new_depart_literal_block(self, node): | ||||||
|     finally: |     finally: | ||||||
|         self.highlighter.trim_doctest_flags = old_trim_doctest_flags |         self.highlighter.trim_doctest_flags = old_trim_doctest_flags | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | HTMLTranslator.visit_literal_block = new_visit_literal_block | ||||||
| LaTeXTranslator.depart_literal_block = new_depart_literal_block | LaTeXTranslator.depart_literal_block = new_depart_literal_block | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| # Support for marking up and linking to bugs.python.org issues | # Support for marking up and linking to bugs.python.org issues | ||||||
| 
 | 
 | ||||||
| def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): | def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): | ||||||
|  | @ -101,9 +122,6 @@ def run(self): | ||||||
| 
 | 
 | ||||||
| # Support for documenting decorators | # Support for documenting decorators | ||||||
| 
 | 
 | ||||||
| from sphinx import addnodes |  | ||||||
| from sphinx.domains.python import PyModulelevel, PyClassmember |  | ||||||
| 
 |  | ||||||
| class PyDecoratorMixin(object): | class PyDecoratorMixin(object): | ||||||
|     def handle_signature(self, sig, signode): |     def handle_signature(self, sig, signode): | ||||||
|         ret = super(PyDecoratorMixin, self).handle_signature(sig, signode) |         ret = super(PyDecoratorMixin, self).handle_signature(sig, signode) | ||||||
|  | @ -113,12 +131,14 @@ def handle_signature(self, sig, signode): | ||||||
|     def needs_arglist(self): |     def needs_arglist(self): | ||||||
|         return False |         return False | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class PyDecoratorFunction(PyDecoratorMixin, PyModulelevel): | class PyDecoratorFunction(PyDecoratorMixin, PyModulelevel): | ||||||
|     def run(self): |     def run(self): | ||||||
|         # a decorator function is a function after all |         # a decorator function is a function after all | ||||||
|         self.name = 'py:function' |         self.name = 'py:function' | ||||||
|         return PyModulelevel.run(self) |         return PyModulelevel.run(self) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class PyDecoratorMethod(PyDecoratorMixin, PyClassmember): | class PyDecoratorMethod(PyDecoratorMixin, PyClassmember): | ||||||
|     def run(self): |     def run(self): | ||||||
|         self.name = 'py:method' |         self.name = 'py:method' | ||||||
|  | @ -162,7 +182,8 @@ def run(self): | ||||||
|                                                classes=['versionmodified'])) |                                                classes=['versionmodified'])) | ||||||
|         else: |         else: | ||||||
|             para = nodes.paragraph('', '', |             para = nodes.paragraph('', '', | ||||||
|                 nodes.inline('', '%s.' % text, classes=['versionmodified'])) |                                    nodes.inline('', '%s.' % text, | ||||||
|  |                                                 classes=['versionmodified'])) | ||||||
|             if len(node): |             if len(node): | ||||||
|                 node.insert(0, para) |                 node.insert(0, para) | ||||||
|             else: |             else: | ||||||
|  | @ -174,12 +195,10 @@ def run(self): | ||||||
| 
 | 
 | ||||||
| # Support for including Misc/NEWS | # Support for including Misc/NEWS | ||||||
| 
 | 
 | ||||||
| import re |  | ||||||
| import codecs |  | ||||||
| 
 |  | ||||||
| issue_re = re.compile('([Ii])ssue #([0-9]+)') | issue_re = re.compile('([Ii])ssue #([0-9]+)') | ||||||
| whatsnew_re = re.compile(r"(?im)^what's new in (.*?)\??$") | whatsnew_re = re.compile(r"(?im)^what's new in (.*?)\??$") | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class MiscNews(Directive): | class MiscNews(Directive): | ||||||
|     has_content = False |     has_content = False | ||||||
|     required_arguments = 1 |     required_arguments = 1 | ||||||
|  | @ -233,15 +252,6 @@ def run(self): | ||||||
|     'typesseq', 'typesseq-mutable', 'unary', 'while', 'with', 'yield' |     'typesseq', 'typesseq-mutable', 'unary', 'while', 'with', 'yield' | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| from os import path |  | ||||||
| from time import asctime |  | ||||||
| from pprint import pformat |  | ||||||
| from docutils.io import StringOutput |  | ||||||
| from docutils.utils import new_document |  | ||||||
| 
 |  | ||||||
| from sphinx.builders import Builder |  | ||||||
| from sphinx.writers.text import TextWriter |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| class PydocTopicsBuilder(Builder): | class PydocTopicsBuilder(Builder): | ||||||
|     name = 'pydoc-topics' |     name = 'pydoc-topics' | ||||||
|  | @ -281,17 +291,11 @@ def finish(self): | ||||||
|             f.close() |             f.close() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Support for checking for suspicious markup |  | ||||||
| 
 |  | ||||||
| import suspicious |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Support for documenting Opcodes | # Support for documenting Opcodes | ||||||
| 
 | 
 | ||||||
| import re |  | ||||||
| 
 |  | ||||||
| opcode_sig_re = re.compile(r'(\w+(?:\+\d)?)(?:\s*\((.*)\))?') | opcode_sig_re = re.compile(r'(\w+(?:\+\d)?)(?:\s*\((.*)\))?') | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| def parse_opcode_signature(env, sig, signode): | def parse_opcode_signature(env, sig, signode): | ||||||
|     """Transform an opcode signature into RST nodes.""" |     """Transform an opcode signature into RST nodes.""" | ||||||
|     m = opcode_sig_re.match(sig) |     m = opcode_sig_re.match(sig) | ||||||
|  | @ -311,12 +315,13 @@ def parse_opcode_signature(env, sig, signode): | ||||||
| pdbcmd_sig_re = re.compile(r'([a-z()!]+)\s*(.*)') | pdbcmd_sig_re = re.compile(r'([a-z()!]+)\s*(.*)') | ||||||
| 
 | 
 | ||||||
| # later... | # later... | ||||||
| #pdbargs_tokens_re = re.compile(r'''[a-zA-Z]+  |  # identifiers | # pdbargs_tokens_re = re.compile(r'''[a-zA-Z]+  |  # identifiers | ||||||
| #                                   [.,:]+     |  # punctuation | #                                   [.,:]+     |  # punctuation | ||||||
| #                                   [\[\]()]   |  # parens | #                                   [\[\]()]   |  # parens | ||||||
| #                                   \s+           # whitespace | #                                   \s+           # whitespace | ||||||
| #                                   ''', re.X) | #                                   ''', re.X) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| def parse_pdb_command(env, sig, signode): | def parse_pdb_command(env, sig, signode): | ||||||
|     """Transform a pdb command signature into RST nodes.""" |     """Transform a pdb command signature into RST nodes.""" | ||||||
|     m = pdbcmd_sig_re.match(sig) |     m = pdbcmd_sig_re.match(sig) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Georg Brandl
						Georg Brandl