Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-sphinxcontrib-httpdomain for openSUSE:Factory checked in at 2021-10-16 22:47:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-sphinxcontrib-httpdomain (Old) and /work/SRC/openSUSE:Factory/.python-sphinxcontrib-httpdomain.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sphinxcontrib-httpdomain" Sat Oct 16 22:47:38 2021 rev:24 rq:925737 version:1.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-sphinxcontrib-httpdomain/python-sphinxcontrib-httpdomain.changes 2021-07-20 15:40:07.977544157 +0200 +++ /work/SRC/openSUSE:Factory/.python-sphinxcontrib-httpdomain.new.1890/python-sphinxcontrib-httpdomain.changes 2021-10-16 22:48:23.460729878 +0200 @@ -1,0 +2,15 @@ +Sat Oct 16 19:25:22 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 1.8.0: + - Make the generated routing table referencable using the 'routingtable' + label. [:pull:`19` by David Douard] + - Add support for parallel sphinx builds. Increases sphinx version requirement to 1.6 + [:pull:`31` by Daniel Hofmann] + - Remove references to the generic ``:py:obj:`` role [:pull:`54` by Stephen Finucane] + - Remove imports and calls to depracated function force_decode who was removed + starting with sphinx 4.0 [:pull:`49` by Florian Masy] + - Be explicit about what versions of Python are supports (2.7, and 3.5+). This will + be the last version to support Python 2.7 and 3.5, version 2.0 will require 3.6+. +- remove 49-remove_force_decode.patch (upstream) + +------------------------------------------------------------------- Old: ---- 1.7.0.tar.gz 49-remove_force_decode.patch New: ---- 1.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-sphinxcontrib-httpdomain.spec ++++++ --- /var/tmp/diff_new_pack.REmBp4/_old 2021-10-16 22:48:23.792730158 +0200 +++ /var/tmp/diff_new_pack.REmBp4/_new 2021-10-16 22:48:23.792730158 +0200 @@ -19,15 +19,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %global skip_python2 1 Name: python-sphinxcontrib-httpdomain -Version: 1.7.0 +Version: 1.8.0 Release: 0 Summary: Sphinx domain for HTTP APIs License: BSD-2-Clause URL: https://github.com/sphinx-contrib/httpdomain Source: https://github.com/sphinx-contrib/httpdomain/archive/%{version}.tar.gz -# PATCH-FIX-UPSTREAM 49-remove_force_decode.patch gh#sphinx-contrib/httpdomain#49 mc...@suse.com -# Finally remove use of force_decode function (removed from Sphinx). -Patch0: 49-remove_force_decode.patch BuildRequires: %{python_module Flask >= 0.11} BuildRequires: %{python_module Sphinx >= 1.5} BuildRequires: %{python_module bottle >= 0.11.0} ++++++ 1.7.0.tar.gz -> 1.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/.travis.yml new/httpdomain-1.8.0/.travis.yml --- old/httpdomain-1.7.0/.travis.yml 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/.travis.yml 2021-09-23 15:14:40.000000000 +0200 @@ -1,11 +1,16 @@ language: python python: [3.6, 3.5, 2.7] +branches: + only: + - main install: - pip install tox-travis script: - tox - '[[ "$TRAVIS_TAG" = "" ]] || [[ "$TRAVIS_TAG" = "$(python setup.py --version)" ]]' - | + env | grep TRAVIS | sort + set -x if git show --format=%B --quiet "${TRAVIS_PULL_REQUEST_SHA:-${TRAVIS_TAG:-${TRAVIS_COMMIT}}}" \ | grep '\[changelog skip\]' > /dev/null; then echo "Skip changelog checker..." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/README.rst new/httpdomain-1.8.0/README.rst --- old/httpdomain-1.7.0/README.rst 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/README.rst 2021-09-23 15:14:40.000000000 +0200 @@ -9,7 +9,7 @@ :target: https://sphinxcontrib-httpdomain.readthedocs.io/ :alt: Documentation Status -.. image:: https://travis-ci.org/sphinx-contrib/httpdomain.svg?branch=master +.. image:: https://travis-ci.org/sphinx-contrib/httpdomain.svg?branch=main :alt: Build Status :target: https://travis-ci.org/sphinx-contrib/httpdomain diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/doc/changelog.rst new/httpdomain-1.8.0/doc/changelog.rst --- old/httpdomain-1.7.0/doc/changelog.rst 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/doc/changelog.rst 2021-09-23 15:14:40.000000000 +0200 @@ -3,6 +3,22 @@ Changelog --------- +Version 1.8.0 +````````````` + +Released on September 23, 2020 + +- Make the generated routing table referencable using the 'routingtable' + label. [:pull:`19` by David Douard] +- Add support for parallel sphinx builds. Increases sphinx version requirement to 1.6 + [:pull:`31` by Daniel Hofmann] +- Remove references to the generic ``:py:obj:`` role [:pull:`54` by Stephen Finucane] +- Remove imports and calls to depracated function force_decode who was removed + starting with sphinx 4.0 [:pull:`49` by Florian Masy] +- Be explicit about what versions of Python are supports (2.7, and 3.5+). This will + be the last version to support Python 2.7 and 3.5, version 2.0 will require 3.6+. + + Version 1.7.0 ````````````` @@ -11,7 +27,7 @@ - Implemented ``:autoquickref:`` option that use available informations to build a ``quickref``. [:pull:`9` by Alexandre Bonnetain] - Improved :mod:`sphinxcontrib.autohttp.tornado` compatibility with Tornado - 4.5 and newer. `Tornado 4.5 <http://www.tornadoweb.org/en/stable/releases/v4.5.0.html>` + 4.5 and newer. `Tornado 4.5 <http://www.tornadoweb.org/en/stable/releases/v4.5.0.html>`_ introduced the ``Rule`` class and made ``URLSpec`` a subclass of it, so certain rule attributes required updating. [:issue:`7`, :pull:`11` by Robert Zeigler] @@ -24,7 +40,7 @@ - Remove references to the ``sphinx.util.compat`` module which was deprecated in Sphinx 1.6 and removed in 1.7. [:issue:`5`, :pull:`4` by Jeremy Cline] - Made :mod:`sphinxcontrib.autohttp.tornado` compatible with Tornado 4.5 and - newer. `Tornado 4.5 <http://www.tornadoweb.org/en/stable/releases/v4.5.0.html>` + newer. `Tornado 4.5 <http://www.tornadoweb.org/en/stable/releases/v4.5.0.html>`_ removed the ``handlers`` attribute from ``tornado.web.Application``. [:pull:`3` by Dave Shawley] @@ -127,7 +143,7 @@ - Fixed broken Python 2.6 compatibility. [:oldpull:`41` by Kien Pham] - Added missing link to six_ dependency. -.. _six: http://pythonhosted.org/six/ +.. _six: https://six.readthedocs.io// Version 1.2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/doc/conf.py new/httpdomain-1.8.0/doc/conf.py --- old/httpdomain-1.7.0/doc/conf.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/doc/conf.py 2021-09-23 15:14:40.000000000 +0200 @@ -69,9 +69,9 @@ # built documents. # # The short X.Y version. -version = '1.7' +version = '1.8' # The full version, including alpha/beta/rc tags. -release = '1.7.0' +release = '1.8.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/doc/index.rst new/httpdomain-1.8.0/doc/index.rst --- old/httpdomain-1.7.0/doc/index.rst 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/doc/index.rst 2021-09-23 15:14:40.000000000 +0200 @@ -1,8 +1,3 @@ -.. sphinxcontrib-httpdomain documentation master file, created by - sphinx-quickstart on Thu Jun 2 13:27:52 2011. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - .. module:: sphinxcontrib.httpdomain :mod:`sphinxcontrib.httpdomain` --- Sphinx domain for documenting HTTP APIs @@ -16,7 +11,7 @@ :target: https://sphinxcontrib-httpdomain.readthedocs.io/ :alt: Documentation Status -.. image:: https://travis-ci.org/sphinx-contrib/httpdomain.svg?branch=master +.. image:: https://travis-ci.org/sphinx-contrib/httpdomain.svg?branch=main :alt: Build Status :target: https://travis-ci.org/sphinx-contrib/httpdomain @@ -31,7 +26,7 @@ Module :mod:`sphinxcontrib.autohttp.flask` Reflection for Flask_ webapps. - Module :mod:`sphinxcontrib.autohttp.flaskqref` + Module :mod:`sphinxcontrib.autohttp.flaskqref` Quick reference rendering with :mod:`sphinxcontrib.autohttp.flask` Module :mod:`sphinxcontrib.autohttp.bottle` @@ -205,6 +200,14 @@ :http:get:`/users/(int:user_id)/posts/(tag)` +If you want to reference the generated routing table, you can use: + +.. sourcecode:: rst + + :ref:`routingtable` + +.. versionadded:: 1.8.0 + .. _directives: @@ -797,7 +800,7 @@ This generates a quick API reference table for the route documentation produced by :mod:`sphinxcontrib.autohttp.flask` -To use it, both :mod:`sphinxcontrib.autohttp.flask` and :mod:`sphinxcontrib.autohttp.flaskqref` need to be added into the extensions +To use it, both :mod:`sphinxcontrib.autohttp.flask` and :mod:`sphinxcontrib.autohttp.flaskqref` need to be added into the extensions of your configuration (:file:`conf.py`) file:: extensions = ['sphinxcontrib.autohttp.flask', @@ -809,7 +812,8 @@ Generates HTTP API references from a Flask application and places these in a list-table with quick reference links. The usage and options are identical - to that of :mod:`sphinxcontrib.autohttp.flask` + to that of :mod:`sphinxcontrib.autohttp.flask` with the addition of the + ``autoquickref`` option. Basic usage @@ -818,8 +822,9 @@ You typically would place the quick reference table near the top of your docco and use *.. autoflask::* further down. -Routes that are to be included in the quick reference table require -the following rst comment to be added to their doc string: +Unless you use the ``autoquickref`` option, routes that are to be included in +the quick reference table require the following rst comment to be added to their +doc string: .. sourcecode:: rst @@ -830,11 +835,15 @@ ``<resource>`` This is the resource name of the operation. The name maybe the same for a number - of operations and enables grouping these together. + of operations and enables grouping these together. ``<short description>`` A brief description what the operation does. +If you use the ``autoquickref`` option, all routes must be inside blueprints. +The ``<resource>`` will be set to the blueprint's name, and the ``<short +description>`` will be set to the first line of the docstring. + For example: .. sourcecode:: python @@ -844,8 +853,8 @@ """User profile page. .. :quickref: User; Get Profile Page - - my docco here + + my docco here """ return 'hi, ' + user diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/setup.py new/httpdomain-1.8.0/setup.py --- old/httpdomain-1.7.0/setup.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/setup.py 2021-09-23 15:14:40.000000000 +0200 @@ -5,7 +5,7 @@ requires = [ - 'Sphinx >= 1.5', + 'Sphinx >= 1.6', 'six', ] @@ -20,15 +20,16 @@ setup( name='sphinxcontrib-httpdomain', - version='1.7.0', + version='1.8.0', url='https://github.com/sphinx-contrib/httpdomain', download_url='https://pypi.org/project/sphinxcontrib-httpdomain/', license='BSD', - author='Hong Minhee', - author_email='\x68\x6f\x6e\x67.minhee' '@' '\x67\x6d\x61\x69\x6c.com', + author='Hong Minhee, Ash Berlin-Taylor', + author_email='Hong Minhee <\x68\x6f\x6e\x67.minhee' '@' '\x67\x6d\x61\x69\x6c.com>, Ash Berlin-Taylor <ash_git...@firemirror.com>', description='Sphinx domain for documenting HTTP APIs', long_description=readme(), zip_safe=False, + python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', @@ -40,6 +41,9 @@ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'Topic :: Documentation', 'Topic :: Utilities', ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/sphinxcontrib/autohttp/bottle.py new/httpdomain-1.8.0/sphinxcontrib/autohttp/bottle.py --- old/httpdomain-1.7.0/sphinxcontrib/autohttp/bottle.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/sphinxcontrib/autohttp/bottle.py 2021-09-23 15:14:40.000000000 +0200 @@ -17,7 +17,6 @@ from docutils.parsers.rst import directives, Directive from docutils.statemachine import ViewList -from sphinx.util import force_decode from sphinx.util.nodes import nested_parse_with_titles from sphinx.util.docstrings import prepare_docstring from sphinx.pycode import ModuleAnalyzer @@ -89,11 +88,10 @@ continue view = target.callback docstring = view.__doc__ or '' - if not isinstance(docstring, six.text_type): - analyzer = ModuleAnalyzer.for_module(view.__module__) - docstring = force_decode(docstring, analyzer.encoding) + if not docstring and 'include-empty-docstring' not in self.options: continue + docstring = prepare_docstring(docstring) for line in http_directive(method, path, docstring): yield line diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/sphinxcontrib/autohttp/flask.py new/httpdomain-1.8.0/sphinxcontrib/autohttp/flask.py --- old/httpdomain-1.7.0/sphinxcontrib/autohttp/flask.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/sphinxcontrib/autohttp/flask.py 2021-09-23 15:14:40.000000000 +0200 @@ -19,7 +19,6 @@ from docutils.parsers.rst import directives, Directive from docutils.statemachine import ViewList -from sphinx.util import force_decode from sphinx.util.nodes import nested_parse_with_titles from sphinx.util.docstrings import prepare_docstring from sphinx.pycode import ModuleAnalyzer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/sphinxcontrib/autohttp/flask_base.py new/httpdomain-1.8.0/sphinxcontrib/autohttp/flask_base.py --- old/httpdomain-1.7.0/sphinxcontrib/autohttp/flask_base.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/sphinxcontrib/autohttp/flask_base.py 2021-09-23 15:14:40.000000000 +0200 @@ -17,7 +17,6 @@ from docutils.parsers.rst import directives, Directive -from sphinx.util import force_decode from sphinx.util.docstrings import prepare_docstring from sphinx.pycode import ModuleAnalyzer @@ -236,9 +235,6 @@ if view_func and view_func.__doc__: view_doc = view_func.__doc__ - if not isinstance(view_doc, six.text_type): - analyzer = ModuleAnalyzer.for_module(view.__module__) - view_doc = force_decode(view_doc, analyzer.encoding) if not view_doc and 'include-empty-docstring' not in self.options: continue diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/sphinxcontrib/autohttp/tornado.py new/httpdomain-1.8.0/sphinxcontrib/autohttp/tornado.py --- old/httpdomain-1.7.0/sphinxcontrib/autohttp/tornado.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/sphinxcontrib/autohttp/tornado.py 2021-09-23 15:14:40.000000000 +0200 @@ -18,7 +18,6 @@ from docutils.parsers.rst import directives, Directive from docutils.statemachine import ViewList -from sphinx.util import force_decode from sphinx.util.nodes import nested_parse_with_titles from sphinx.util.docstrings import prepare_docstring from sphinx.pycode import ModuleAnalyzer @@ -129,11 +128,10 @@ continue docstring = getattr(handler, method).__doc__ or '' - #if not isinstance(docstring, unicode): - # analyzer = ModuleAnalyzer.for_module(view.__module__) - # docstring = force_decode(docstring, analyzer.encoding) + if not docstring and 'include-empty-docstring' not in self.options: continue + docstring = prepare_docstring(docstring) for line in http_directive(method, normalize_path(path), docstring): yield line diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/httpdomain-1.7.0/sphinxcontrib/httpdomain.py new/httpdomain-1.8.0/sphinxcontrib/httpdomain.py --- old/httpdomain-1.7.0/sphinxcontrib/httpdomain.py 2018-07-01 13:45:36.000000000 +0200 +++ new/httpdomain-1.8.0/sphinxcontrib/httpdomain.py 2021-09-23 15:14:40.000000000 +0200 @@ -22,18 +22,27 @@ from sphinx.roles import XRefRole from sphinx.domains import Domain, ObjType, Index from sphinx.directives import ObjectDescription, directives +from sphinx.util import logging from sphinx.util.nodes import make_refnode from sphinx.util.docfields import GroupedField, TypedField +from sphinx.util.docutils import Reporter, LoggingReporter +from sphinx.locale import _ -# The env.get_doctree() lookup results in a pickle.load() call which is -# expensive enough to dominate the runtime entirely when the number of endpoints -# and references is large enough. The doctrees are generated during the read- -# phase and we can cache their lookup during the write-phase significantly -# improving performance. -# Currently sphinxcontrib-httpdomain does not declare to support parallel read -# support (parallel_read_safe is the default False) so we can simply use a -# module global to hold the cache. -_doctree_cache = {} +logger = logging.getLogger(__name__) + + +class DummyDocument(object): + """Used where the signature requires a docutils.node.Document but only its reporter + is being used. + + Up until the current Sphinx 2.3.1 calls to env.get_doctree() (which would get + us said docutils.node.Document) result in pickle.load() calls which are expensive + enough to dominate the runtime entirely when the number of endpoints and references + is large enough. + """ + + def __init__(self, reporter): + self.reporter = reporter class DocRef(object): @@ -55,7 +64,7 @@ In 2014, RFC2616 was replaced by multiple RFCs (7230-7237).""" def __init__(self, section): - url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec{0:d}.html' + url = 'https://www.w3.org/Protocols/rfc2616/rfc2616-sec{0:d}.html' url = url.format(int(section)) super(RFC2616Ref, self).__init__(url, 'sec', section) @@ -71,7 +80,7 @@ class EventSourceRef(DocRef): def __init__(self, section): - url = 'http://www.w3.org/TR/eventsource/' + url = 'https://www.w3.org/TR/eventsource/' super(EventSourceRef, self).__init__(url, section, '') @@ -79,7 +88,7 @@ """Represents a reference to W3 Cross-Origin Resource Sharing recommendation.""" def __init__(self, name, type): - url = 'http://www.w3.org/TR/cors/' + url = 'https://www.w3.org/TR/cors/' super(CORSRef, self).__init__(url, name, '-' + type) @@ -259,27 +268,24 @@ doc_field_types = [ TypedField('parameter', label='Parameters', names=('param', 'parameter', 'arg', 'argument'), - typerolename='obj', typenames=('paramtype', 'type')), + typenames=('paramtype', 'type')), TypedField('jsonparameter', label='JSON Parameters', names=('jsonparameter', 'jsonparam', 'json'), - typerolename='obj', typenames=('jsonparamtype', 'jsontype')), + typenames=('jsonparamtype', 'jsontype')), TypedField('requestjsonobject', label='Request JSON Object', names=('reqjsonobj', 'reqjson', '<jsonobj', '<json'), - typerolename='obj', typenames=('reqjsonobj', '<jsonobj')), + typenames=('reqjsonobj', '<jsonobj')), TypedField('requestjsonarray', label='Request JSON Array of Objects', names=('reqjsonarr', '<jsonarr'), - typerolename='obj', typenames=('reqjsonarrtype', '<jsonarrtype')), TypedField('responsejsonobject', label='Response JSON Object', names=('resjsonobj', 'resjson', '>jsonobj', '>json'), - typerolename='obj', typenames=('resjsonobj', '>jsonobj')), + typenames=('resjsonobj', '>jsonobj')), TypedField('responsejsonarray', label='Response JSON Array of Objects', names=('resjsonarr', '>jsonarr'), - typerolename='obj', typenames=('resjsonarrtype', '>jsonarrtype')), TypedField('queryparameter', label='Query Parameters', names=('queryparameter', 'queryparam', 'qparam', 'query'), - typerolename='obj', typenames=('queryparamtype', 'querytype', 'qtype')), GroupedField('formparameter', label='Form Parameters', names=('formparameter', 'formparam', 'fparam', 'form')), @@ -410,6 +416,9 @@ title = self.method.upper() + ' ' + title return title, target + def result_nodes(self, document, env, node, is_ref): + return [node], [] + class HTTPXRefMethodRole(XRefRole): @@ -485,19 +494,19 @@ elif status is None: return report_unknown_code() elif code == 226: - url = 'http://www.ietf.org/rfc/rfc3229.txt' + url = 'https://www.ietf.org/rfc/rfc3229.txt' elif code == 418: - url = 'http://www.ietf.org/rfc/rfc2324.txt' + url = 'https://www.ietf.org/rfc/rfc2324.txt' elif code == 429: - url = 'http://tools.ietf.org/html/rfc6585#section-4' + url = 'https://tools.ietf.org/html/rfc6585#section-4' elif code == 449: - url = 'http://msdn.microsoft.com/en-us/library/dd891478(v=prot.10).aspx' + url = 'https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wdv/83ecf19f-e0f8-4706-aae5-ba618f52f100' elif code == 451: - url = 'http://www.ietf.org/rfc/rfc7725.txt' + url = 'https://www.ietf.org/rfc/rfc7725.txt' elif code in WEBDAV_STATUS_CODES: - url = 'http://tools.ietf.org/html/rfc4918#section-11.%d' % (WEBDAV_STATUS_CODES.index(code) + 1) + url = 'https://tools.ietf.org/html/rfc4918#section-11.%d' % (WEBDAV_STATUS_CODES.index(code) + 1) elif code in HTTP_STATUS_CODES: - url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html' \ + url = 'https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html' \ '#sec10.' + ('%d.%d' % (code // 100, 1 + code % 100)) else: url = '' @@ -573,17 +582,17 @@ label = 'HTTP' object_types = { - 'options': ObjType('options', 'options', 'obj'), - 'head': ObjType('head', 'head', 'obj'), - 'post': ObjType('post', 'post', 'obj'), - 'get': ObjType('get', 'get', 'obj'), - 'put': ObjType('put', 'put', 'obj'), - 'patch': ObjType('patch', 'patch', 'obj'), - 'delete': ObjType('delete', 'delete', 'obj'), - 'trace': ObjType('trace', 'trace', 'obj'), - 'connect': ObjType('connect', 'connect', 'obj'), - 'copy': ObjType('copy', 'copy', 'obj'), - 'any': ObjType('any', 'any', 'obj') + 'options': ObjType('options', 'options'), + 'head': ObjType('head', 'head'), + 'post': ObjType('post', 'post'), + 'get': ObjType('get', 'get'), + 'put': ObjType('put', 'put'), + 'patch': ObjType('patch', 'patch'), + 'delete': ObjType('delete', 'delete'), + 'trace': ObjType('trace', 'trace'), + 'connect': ObjType('connect', 'connect'), + 'copy': ObjType('copy', 'copy'), + 'any': ObjType('any', 'any') } directives = { @@ -653,10 +662,10 @@ if role is None: return None - if fromdocname not in _doctree_cache: - _doctree_cache[fromdocname] = env.get_doctree(fromdocname) - doctree = _doctree_cache[fromdocname] - + reporter = LoggingReporter(env.doc2path(fromdocname), + report_level=Reporter.WARNING_LEVEL, + halt_level=Reporter.SEVERE_LEVEL) + doctree = DummyDocument(reporter) resnode = role.result_nodes(doctree, env, node, None)[0][0] if isinstance(resnode, addnodes.pending_xref): text = node[0][0] @@ -691,6 +700,27 @@ anchor = http_resource_anchor(method, path) yield (path, path, method, info[0], anchor, 1) + def merge_domaindata(self, docnames, otherdata): + """Merge domaindata from the workers/chunks when they return. + + Called once per parallelization chunk. + Only used when sphinx is run in parallel mode. + + :param docnames: a Set of the docnames that are part of the current chunk to merge + :param otherdata: the partial data calculated by the current chunk + """ + for typ in self.object_types: + self_data = self.data[typ] + other_data = otherdata[typ] + for entry_point_name, entry_point_data in other_data.items(): + if entry_point_name in self_data: + logger.warning('duplicate HTTP %s method definition %s in %s, ' + 'other instance is in %s' % + (typ, entry_point_name, + self.env.doc2path(other_data[entry_point_name][0]), + self.env.doc2path(self_data[entry_point_name][0]))) + else: + self_data[entry_point_name] = entry_point_data class HTTPLexer(RegexLexer): """Lexer for HTTP sessions.""" @@ -757,8 +787,16 @@ } +def register_routingtable_as_label(app, document): + labels = app.env.domaindata['std']['labels'] + labels['routingtable'] = 'http-routingtable', '', _('HTTP Routing Table') + anonlabels = app.env.domaindata['std']['anonlabels'] + anonlabels['routingtable'] = 'http-routingtable', '' + + def setup(app): app.add_domain(HTTPDomain) + app.connect('doctree-read', register_routingtable_as_label) try: get_lexer_by_name('http') @@ -769,3 +807,5 @@ app.add_config_value('http_index_localname', 'HTTP Routing Table', True) app.add_config_value('http_strict_mode', True, None) app.add_config_value('http_headers_ignore_prefixes', ['X-'], None) + return {"parallel_read_safe": True, + "parallel_write_safe": True}