[Python-modules-team] Bug#955104: sphinxcontrib-websupport: FTBFS with Sphinx 2.4: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.7 3.8" returned exit code 13
Lucas Nussbaum
lucas at debian.org
Fri Mar 27 14:52:18 GMT 2020
Source: sphinxcontrib-websupport
Version: 1.2.0-1
Severity: important
Tags: ftbfs
User: python-modules-team at lists.alioth.debian.org
Usertags: sphinx2.4
Hi,
sphinxcontrib-websupport fails to build with Sphinx 2.4, currently available in
experimental.
Relevant part (hopefully):
> dpkg-buildpackage
> -----------------
>
> Command: dpkg-buildpackage -us -uc -sa -rfakeroot
> dpkg-buildpackage: info: source package sphinxcontrib-websupport
> dpkg-buildpackage: info: source version 1.2.0-1
> dpkg-buildpackage: info: source distribution unstable
> dpkg-buildpackage: info: source changed by Dmitry Shachnev <mitya57 at debian.org>
> dpkg-source --before-build .
> dpkg-buildpackage: info: host architecture amd64
> debian/rules clean
> dh clean --with python3 --buildsystem=pybuild
> dh_auto_clean -O--buildsystem=pybuild
> I: pybuild base:217: python3.7 setup.py clean
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build' (and everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.7' does not exist -- can't clean it
> I: pybuild base:217: python3.8 setup.py clean
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build' (and everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.8' does not exist -- can't clean it
> dh_autoreconf_clean -O--buildsystem=pybuild
> dh_clean -O--buildsystem=pybuild
> dpkg-source -b .
> dpkg-source: info: using source format '3.0 (quilt)'
> dpkg-source: info: building sphinxcontrib-websupport using existing ./sphinxcontrib-websupport_1.2.0.orig.tar.gz
> dpkg-source: info: using patch list from debian/patches/series
> dpkg-source: warning: ignoring deletion of file PKG-INFO, use --include-removal to override
> dpkg-source: warning: ignoring deletion of directory sphinxcontrib_websupport.egg-info
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/SOURCES.txt, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/top_level.txt, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/namespace_packages.txt, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/dependency_links.txt, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/PKG-INFO, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/requires.txt, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/not-zip-safe, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file sphinxcontrib_websupport.egg-info/entry_points.txt, use --include-removal to override
> dpkg-source: info: building sphinxcontrib-websupport in sphinxcontrib-websupport_1.2.0-1.debian.tar.xz
> dpkg-source: info: building sphinxcontrib-websupport in sphinxcontrib-websupport_1.2.0-1.dsc
> debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
> dh_update_autotools_config -O--buildsystem=pybuild
> dh_autoreconf -O--buildsystem=pybuild
> dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:217: python3.7 setup.py config
> running config
> I: pybuild base:217: python3.8 setup.py config
> running config
> dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:217: /usr/bin/python3.7 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib
> copying sphinxcontrib/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/errors.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/core.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/builder.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/writer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/sqlalchemy_db.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/sqlalchemystorage.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/differ.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/storage
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/whooshsearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/nullsearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/xapiansearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/search
> running egg_info
> creating sphinxcontrib_websupport.egg-info
> writing sphinxcontrib_websupport.egg-info/PKG-INFO
> writing dependency_links to sphinxcontrib_websupport.egg-info/dependency_links.txt
> writing entry points to sphinxcontrib_websupport.egg-info/entry_points.txt
> writing namespace_packages to sphinxcontrib_websupport.egg-info/namespace_packages.txt
> writing requirements to sphinxcontrib_websupport.egg-info/requires.txt
> writing top-level names to sphinxcontrib_websupport.egg-info/top_level.txt
> writing manifest file 'sphinxcontrib_websupport.egg-info/SOURCES.txt'
> reading manifest file 'sphinxcontrib_websupport.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> writing manifest file 'sphinxcontrib_websupport.egg-info/SOURCES.txt'
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/ajax-loader.gif -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment-bright.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment-close.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/down-pressed.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/down.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/up-pressed.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/up.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/websupport.js -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/files
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/templates
> copying sphinxcontrib/websupport/templates/searchresults.html -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/templates
> I: pybuild base:217: /usr/bin/python3 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib
> copying sphinxcontrib/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/errors.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/core.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/builder.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/writer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> copying sphinxcontrib/websupport/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/sqlalchemy_db.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/sqlalchemystorage.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/storage
> copying sphinxcontrib/websupport/storage/differ.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/storage
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/whooshsearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/nullsearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/search
> copying sphinxcontrib/websupport/search/xapiansearch.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/search
> running egg_info
> writing sphinxcontrib_websupport.egg-info/PKG-INFO
> writing dependency_links to sphinxcontrib_websupport.egg-info/dependency_links.txt
> writing entry points to sphinxcontrib_websupport.egg-info/entry_points.txt
> writing namespace_packages to sphinxcontrib_websupport.egg-info/namespace_packages.txt
> writing requirements to sphinxcontrib_websupport.egg-info/requires.txt
> writing top-level names to sphinxcontrib_websupport.egg-info/top_level.txt
> reading manifest file 'sphinxcontrib_websupport.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> writing manifest file 'sphinxcontrib_websupport.egg-info/SOURCES.txt'
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/ajax-loader.gif -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment-bright.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment-close.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/comment.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/down-pressed.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/down.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/up-pressed.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/up.png -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> copying sphinxcontrib/websupport/files/websupport.js -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/files
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/templates
> copying sphinxcontrib/websupport/templates/searchresults.html -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8/build/sphinxcontrib/websupport/templates
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:217: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build; python3.7 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.7.7, pytest-4.6.9, py-1.8.1, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, inifile: setup.cfg
> collected 13 items
>
> tests/test_searchadapters.py FF [ 15%]
> tests/test_websupport.py FFFFFFFFFF. [100%]
>
> =================================== FAILURES ===================================
> _________________________________ test_xapian __________________________________
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cc509850>
> app = <sphinx.application.Sphinx object at 0x7ff9cbbc1f10>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> > mod = import_module(extname)
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:453:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None
>
> def import_module(name, package=None):
> """Import a module.
>
> The 'package' argument is required when performing a relative import. It
> specifies the package to use as the anchor point from which to resolve the
> relative import to an absolute import.
>
> """
> level = 0
> if name.startswith('.'):
> if not package:
> msg = ("the 'package' argument is required to perform a relative "
> "import for {!r}")
> raise TypeError(msg.format(name))
> for character in name:
> if character != '.':
> break
> level += 1
> > return _bootstrap._gcd_import(name[level:], package, level)
>
> /usr/lib/python3.7/importlib/__init__.py:127:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None, level = 0
>
> > ???
>
> <frozen importlib._bootstrap>:1006:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:983:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:967:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> spec = ModuleSpec(name='sphinxcontrib.websupport.builder', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f...trib-websupport-hkeho8/sphinxcontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py')
>
> > ???
>
> <frozen importlib._bootstrap>:677:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <_frozen_importlib_external.SourceFileLoader object at 0x7ff9caea23d0>
> module = <module 'sphinxcontrib.websupport.builder' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py'>
>
> > ???
>
> <frozen importlib._bootstrap_external>:728:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> f = <built-in function exec>
> args = (<code object <module> at 0x7ff9caea6c00, file "/<<PKGBUILDDIR>>/...ontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/__pycache__/builder.cpython-37.pyc', ...})
> kwds = {}
>
> > ???
>
> <frozen importlib._bootstrap>:219:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> """
>
> from os import path
> import posixpath
> import shutil
>
> from docutils.io import StringOutput
>
> from sphinx import version_info as sphinx_version
> from sphinx.jinja2glue import BuiltinTemplateLoader
> from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile
> > from sphinx.builders.html import PickleHTMLBuilder
> E ImportError: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location)
>
> sphinxcontrib/websupport/builder.py:21: ImportError
>
> During handling of the above exception, another exception occurred:
>
> @skip_unless_importable('xapian', 'needs xapian bindings installed')
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> def test_xapian():
> > search_adapter_helper('xapian')
>
> tests/test_searchadapters.py:64:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> tests/test_searchadapters.py:32: in search_adapter_helper
> support.build()
> sphinxcontrib/websupport/core.py:139: in build
> warning=self.warning)
> /usr/lib/python3/dist-packages/sphinx/application.py:239: in __init__
> self.setup_extension(extension)
> /usr/lib/python3/dist-packages/sphinx/application.py:391: in setup_extension
> self.registry.load_extension(self, extname)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cc509850>
> app = <sphinx.application.Sphinx object at 0x7ff9cbbc1f10>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> mod = import_module(extname)
> except ImportError as err:
> logger.verbose(__('Original exception:\n') + traceback.format_exc())
> > raise ExtensionError(__('Could not import extension %s') % extname, err)
> E sphinx.errors.ExtensionError: Could not import extension sphinxcontrib.websupport.builder (exception: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location))
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:456: ExtensionError
> _________________________________ test_whoosh __________________________________
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cbb48150>
> app = <sphinx.application.Sphinx object at 0x7ff9cbba0e10>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> > mod = import_module(extname)
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:453:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None
>
> def import_module(name, package=None):
> """Import a module.
>
> The 'package' argument is required when performing a relative import. It
> specifies the package to use as the anchor point from which to resolve the
> relative import to an absolute import.
>
> """
> level = 0
> if name.startswith('.'):
> if not package:
> msg = ("the 'package' argument is required to perform a relative "
> "import for {!r}")
> raise TypeError(msg.format(name))
> for character in name:
> if character != '.':
> break
> level += 1
> > return _bootstrap._gcd_import(name[level:], package, level)
>
> /usr/lib/python3.7/importlib/__init__.py:127:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None, level = 0
>
> > ???
>
> <frozen importlib._bootstrap>:1006:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:983:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:967:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> spec = ModuleSpec(name='sphinxcontrib.websupport.builder', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f...trib-websupport-hkeho8/sphinxcontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py')
>
> > ???
>
> <frozen importlib._bootstrap>:677:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <_frozen_importlib_external.SourceFileLoader object at 0x7ff9caba0750>
> module = <module 'sphinxcontrib.websupport.builder' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py'>
>
> > ???
>
> <frozen importlib._bootstrap_external>:728:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> f = <built-in function exec>
> args = (<code object <module> at 0x7ff9cae51c00, file "/<<PKGBUILDDIR>>/...ontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/__pycache__/builder.cpython-37.pyc', ...})
> kwds = {}
>
> > ???
>
> <frozen importlib._bootstrap>:219:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> """
>
> from os import path
> import posixpath
> import shutil
>
> from docutils.io import StringOutput
>
> from sphinx import version_info as sphinx_version
> from sphinx.jinja2glue import BuiltinTemplateLoader
> from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile
> > from sphinx.builders.html import PickleHTMLBuilder
> E ImportError: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location)
>
> sphinxcontrib/websupport/builder.py:21: ImportError
>
> During handling of the above exception, another exception occurred:
>
> @skip_unless_importable('whoosh', 'needs whoosh package installed')
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> def test_whoosh():
> > search_adapter_helper('whoosh')
>
> tests/test_searchadapters.py:70:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> tests/test_searchadapters.py:32: in search_adapter_helper
> support.build()
> sphinxcontrib/websupport/core.py:139: in build
> warning=self.warning)
> /usr/lib/python3/dist-packages/sphinx/application.py:239: in __init__
> self.setup_extension(extension)
> /usr/lib/python3/dist-packages/sphinx/application.py:391: in setup_extension
> self.registry.load_extension(self, extname)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cbb48150>
> app = <sphinx.application.Sphinx object at 0x7ff9cbba0e10>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> mod = import_module(extname)
> except ImportError as err:
> logger.verbose(__('Original exception:\n') + traceback.format_exc())
> > raise ExtensionError(__('Could not import extension %s') % extname, err)
> E sphinx.errors.ExtensionError: Could not import extension sphinxcontrib.websupport.builder (exception: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location))
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:456: ExtensionError
> ________________________________ test_no_srcdir ________________________________
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cabb5290>
> app = <sphinx.application.Sphinx object at 0x7ff9cabb5210>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> > mod = import_module(extname)
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:453:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None
>
> def import_module(name, package=None):
> """Import a module.
>
> The 'package' argument is required when performing a relative import. It
> specifies the package to use as the anchor point from which to resolve the
> relative import to an absolute import.
>
> """
> level = 0
> if name.startswith('.'):
> if not package:
> msg = ("the 'package' argument is required to perform a relative "
> "import for {!r}")
> raise TypeError(msg.format(name))
> for character in name:
> if character != '.':
> break
> level += 1
> > return _bootstrap._gcd_import(name[level:], package, level)
>
> /usr/lib/python3.7/importlib/__init__.py:127:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None, level = 0
>
> > ???
>
> <frozen importlib._bootstrap>:1006:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:983:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:967:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> spec = ModuleSpec(name='sphinxcontrib.websupport.builder', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f...trib-websupport-hkeho8/sphinxcontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py')
>
> > ???
>
> <frozen importlib._bootstrap>:677:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <_frozen_importlib_external.SourceFileLoader object at 0x7ff9caa06c90>
> module = <module 'sphinxcontrib.websupport.builder' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py'>
>
> > ???
>
> <frozen importlib._bootstrap_external>:728:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> f = <built-in function exec>
> args = (<code object <module> at 0x7ff9cabb1c00, file "/<<PKGBUILDDIR>>/...ontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/__pycache__/builder.cpython-37.pyc', ...})
> kwds = {}
>
> > ???
>
> <frozen importlib._bootstrap>:219:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> """
>
> from os import path
> import posixpath
> import shutil
>
> from docutils.io import StringOutput
>
> from sphinx import version_info as sphinx_version
> from sphinx.jinja2glue import BuiltinTemplateLoader
> from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile
> > from sphinx.builders.html import PickleHTMLBuilder
> E ImportError: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location)
>
> sphinxcontrib/websupport/builder.py:21: ImportError
>
> During handling of the above exception, another exception occurred:
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cabad1d0>
>
> @with_support(storage=NullStorage())
> def test_no_srcdir(support):
> # make sure the correct exception is raised if srcdir is not given.
> with pytest.raises(RuntimeError):
> > support.build()
>
> tests/test_websupport.py:57:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> sphinxcontrib/websupport/core.py:139: in build
> warning=self.warning)
> /usr/lib/python3/dist-packages/sphinx/application.py:239: in __init__
> self.setup_extension(extension)
> /usr/lib/python3/dist-packages/sphinx/application.py:391: in setup_extension
> self.registry.load_extension(self, extname)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9cabb5290>
> app = <sphinx.application.Sphinx object at 0x7ff9cabb5210>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> mod = import_module(extname)
> except ImportError as err:
> logger.verbose(__('Original exception:\n') + traceback.format_exc())
> > raise ExtensionError(__('Could not import extension %s') % extname, err)
> E sphinx.errors.ExtensionError: Could not import extension sphinxcontrib.websupport.builder (exception: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location))
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:456: ExtensionError
> ----------------------------- Captured stdout call -----------------------------
> [01mRunning Sphinx v2.4.3[39;49;00m
> __________________________________ test_build __________________________________
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9ca993150>
> app = <sphinx.application.Sphinx object at 0x7ff9ca993210>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> > mod = import_module(extname)
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:453:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None
>
> def import_module(name, package=None):
> """Import a module.
>
> The 'package' argument is required when performing a relative import. It
> specifies the package to use as the anchor point from which to resolve the
> relative import to an absolute import.
>
> """
> level = 0
> if name.startswith('.'):
> if not package:
> msg = ("the 'package' argument is required to perform a relative "
> "import for {!r}")
> raise TypeError(msg.format(name))
> for character in name:
> if character != '.':
> break
> level += 1
> > return _bootstrap._gcd_import(name[level:], package, level)
>
> /usr/lib/python3.7/importlib/__init__.py:127:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder', package = None, level = 0
>
> > ???
>
> <frozen importlib._bootstrap>:1006:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:983:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> name = 'sphinxcontrib.websupport.builder'
> import_ = <function _gcd_import at 0x7ff9ce10cb00>
>
> > ???
>
> <frozen importlib._bootstrap>:967:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> spec = ModuleSpec(name='sphinxcontrib.websupport.builder', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f...trib-websupport-hkeho8/sphinxcontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py')
>
> > ???
>
> <frozen importlib._bootstrap>:677:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <_frozen_importlib_external.SourceFileLoader object at 0x7ff9cab50b90>
> module = <module 'sphinxcontrib.websupport.builder' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/builder.py'>
>
> > ???
>
> <frozen importlib._bootstrap_external>:728:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> f = <built-in function exec>
> args = (<code object <module> at 0x7ff9cab53300, file "/<<PKGBUILDDIR>>/...ontrib-websupport-1.2.0/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/__pycache__/builder.cpython-37.pyc', ...})
> kwds = {}
>
> > ???
>
> <frozen importlib._bootstrap>:219:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> """
>
> from os import path
> import posixpath
> import shutil
>
> from docutils.io import StringOutput
>
> from sphinx import version_info as sphinx_version
> from sphinx.jinja2glue import BuiltinTemplateLoader
> from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile
> > from sphinx.builders.html import PickleHTMLBuilder
> E ImportError: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location)
>
> sphinxcontrib/websupport/builder.py:21: ImportError
>
> During handling of the above exception, another exception occurred:
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9ca998610>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_build(support):
> > support.build()
>
> tests/test_websupport.py:63:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> sphinxcontrib/websupport/core.py:139: in build
> warning=self.warning)
> /usr/lib/python3/dist-packages/sphinx/application.py:239: in __init__
> self.setup_extension(extension)
> /usr/lib/python3/dist-packages/sphinx/application.py:391: in setup_extension
> self.registry.load_extension(self, extname)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <sphinx.registry.SphinxComponentRegistry object at 0x7ff9ca993150>
> app = <sphinx.application.Sphinx object at 0x7ff9ca993210>
> extname = 'sphinxcontrib.websupport.builder'
>
> def load_extension(self, app: "Sphinx", extname: str) -> None:
> """Load a Sphinx extension."""
> if extname in app.extensions: # alread loaded
> return
> if extname in EXTENSION_BLACKLIST:
> logger.warning(__('the extension %r was already merged with Sphinx since '
> 'version %s; this extension is ignored.'),
> extname, EXTENSION_BLACKLIST[extname])
> return
>
> # update loading context
> prefix = __('while setting up extension %s:') % extname
> with prefixed_warnings(prefix):
> try:
> mod = import_module(extname)
> except ImportError as err:
> logger.verbose(__('Original exception:\n') + traceback.format_exc())
> > raise ExtensionError(__('Could not import extension %s') % extname, err)
> E sphinx.errors.ExtensionError: Could not import extension sphinxcontrib.websupport.builder (exception: cannot import name 'PickleHTMLBuilder' from 'sphinx.builders.html' (unknown location))
>
> /usr/lib/python3/dist-packages/sphinx/registry.py:456: ExtensionError
> ----------------------------- Captured stdout call -----------------------------
> [01mRunning Sphinx v2.4.3[39;49;00m
> ______________________________ test_get_document _______________________________
>
> self = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9ca9391d0>
> docname = 'contents', username = '', moderator = False
>
> def get_document(self, docname, username='', moderator=False):
> """Load and return a document from a pickle. The document will
> be a dict object which can be used to render a template::
>
> support = WebSupport(datadir=datadir)
> support.get_document('index', username, moderator)
>
> In most cases `docname` will be taken from the request path and
> passed directly to this function. In Flask, that would be something
> like this::
>
> @app.route('/<path:docname>')
> def index(docname):
> username = g.user.name if g.user else ''
> moderator = g.user.moderator if g.user else False
> try:
> document = support.get_document(docname, username,
> moderator)
> except DocumentNotFoundError:
> abort(404)
> render_template('doc.html', document=document)
>
> The document dict that is returned contains the following items
> to be used during template rendering.
>
> * **body**: The main body of the document as HTML
> * **sidebar**: The sidebar of the document as HTML
> * **relbar**: A div containing links to related documents
> * **title**: The title of the document
> * **css**: Links to css files used by Sphinx
> * **script**: Javascript containing comment options
>
> This raises :class:`~sphinxcontrib.websupport.errors.DocumentNotFoundError`
> if a document matching `docname` is not found.
>
> :param docname: the name of the document to load.
> """
> docpath = path.join(self.datadir, 'pickles', docname)
> if path.isdir(docpath):
> infilename = docpath + '/index.fpickle'
> if not docname:
> docname = 'index'
> else:
> docname += '/index'
> else:
> infilename = docpath + '.fpickle'
>
> try:
> > with open(infilename, 'rb') as f:
> E FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpcy3d8f89/websupport/data/pickles/contents.fpickle'
>
> sphinxcontrib/websupport/core.py:203: FileNotFoundError
>
> During handling of the above exception, another exception occurred:
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9ca9391d0>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_get_document(support):
> with pytest.raises(DocumentNotFoundError):
> support.get_document('nonexisting')
>
> > contents = support.get_document('contents')
>
> tests/test_websupport.py:72:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9ca9391d0>
> docname = 'contents', username = '', moderator = False
>
> def get_document(self, docname, username='', moderator=False):
> """Load and return a document from a pickle. The document will
> be a dict object which can be used to render a template::
>
> support = WebSupport(datadir=datadir)
> support.get_document('index', username, moderator)
>
> In most cases `docname` will be taken from the request path and
> passed directly to this function. In Flask, that would be something
> like this::
>
> @app.route('/<path:docname>')
> def index(docname):
> username = g.user.name if g.user else ''
> moderator = g.user.moderator if g.user else False
> try:
> document = support.get_document(docname, username,
> moderator)
> except DocumentNotFoundError:
> abort(404)
> render_template('doc.html', document=document)
>
> The document dict that is returned contains the following items
> to be used during template rendering.
>
> * **body**: The main body of the document as HTML
> * **sidebar**: The sidebar of the document as HTML
> * **relbar**: A div containing links to related documents
> * **title**: The title of the document
> * **css**: Links to css files used by Sphinx
> * **script**: Javascript containing comment options
>
> This raises :class:`~sphinxcontrib.websupport.errors.DocumentNotFoundError`
> if a document matching `docname` is not found.
>
> :param docname: the name of the document to load.
> """
> docpath = path.join(self.datadir, 'pickles', docname)
> if path.isdir(docpath):
> infilename = docpath + '/index.fpickle'
> if not docname:
> docname = 'index'
> else:
> docname += '/index'
> else:
> infilename = docpath + '.fpickle'
>
> try:
> with open(infilename, 'rb') as f:
> document = pickle.load(f)
> except IOError:
> raise errors.DocumentNotFoundError(
> > 'The document "%s" could not be found' % docname)
> E sphinxcontrib.websupport.errors.DocumentNotFoundError: The document "contents" could not be found
>
> sphinxcontrib/websupport/core.py:207: DocumentNotFoundError
> ________________________________ test_comments _________________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cc509850>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_comments(support):
> session = Session()
> nodes = session.query(Node).all()
> > first_node = nodes[0]
> E IndexError: list index out of range
>
> tests/test_websupport.py:82: IndexError
> __________________________ test_user_delete_comments ___________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cab50e10>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_user_delete_comments(support):
> def get_comment():
> session = Session()
> node = session.query(Node).first()
> session.close()
> return support.get_data(node.id)['comments'][0]
>
> > comment = get_comment()
>
> tests/test_websupport.py:135:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> def get_comment():
> session = Session()
> node = session.query(Node).first()
> session.close()
> > return support.get_data(node.id)['comments'][0]
> E AttributeError: 'NoneType' object has no attribute 'id'
>
> tests/test_websupport.py:133: AttributeError
> _______________________________ test_moderation ________________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cabad450>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support(moderation_callback=moderation_callback)
> def test_moderation(support):
> session = Session()
> nodes = session.query(Node).all()
> > node = nodes[7]
> E IndexError: list index out of range
>
> tests/test_websupport.py:160: IndexError
> ________________________ test_moderator_delete_comments ________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9ca998690>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_moderator_delete_comments(support):
> def get_comment():
> session = Session()
> node = session.query(Node).first()
> session.close()
> return support.get_data(node.id, moderator=True)['comments'][1]
>
> > comment = get_comment()
>
> tests/test_websupport.py:190:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> def get_comment():
> session = Session()
> node = session.query(Node).first()
> session.close()
> > return support.get_data(node.id, moderator=True)['comments'][1]
> E AttributeError: 'NoneType' object has no attribute 'id'
>
> tests/test_websupport.py:188: AttributeError
> _____________________________ test_update_username _____________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cab89b50>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_update_username(support):
> support.update_username('user_two', 'new_user_two')
> session = Session()
> comments = session.query(Comment).\
> filter(Comment.username == 'user_two').all()
> assert len(comments) == 0
> votes = session.query(CommentVote).\
> filter(CommentVote.username == 'user_two').all()
> assert len(votes) == 0
> comments = session.query(Comment).\
> filter(Comment.username == 'new_user_two').all()
> > assert len(comments) == 1
> E assert 0 == 1
> E + where 0 = len([])
>
> tests/test_websupport.py:210: AssertionError
> ________________________________ test_proposals ________________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9caa86950>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_proposals(support):
> session = Session()
> node = session.query(Node).first()
>
> > data = support.get_data(node.id)
> E AttributeError: 'NoneType' object has no attribute 'id'
>
> tests/test_websupport.py:222: AttributeError
> _________________________________ test_voting __________________________________
>
> support = <sphinxcontrib.websupport.core.WebSupport object at 0x7ff9cab52390>
>
> @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
> @with_support()
> def test_voting(support):
> session = Session()
> nodes = session.query(Node).all()
> > node = nodes[0]
> E IndexError: list index out of range
>
> tests/test_websupport.py:237: IndexError
> =============================== warnings summary ===============================
> sphinxcontrib/websupport/__init__.py:18
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/__init__.py:18: RemovedInSphinx40Warning: sphinx.util.pycompat.htmlescape is deprecated. Check CHANGES for Sphinx API modifications.
> from sphinxcontrib.websupport.core import WebSupport # NOQA
>
> sphinxcontrib/websupport/core.py:32
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build/sphinxcontrib/websupport/core.py:32: RemovedInSphinx40Warning: sphinx.util.jsonimpl is deprecated
> from sphinx.util.jsonimpl import dumps as dump_json
>
> .pybuild/cpython3_3.7/build/tests/test_searchadapters.py::test_xapian
> /usr/lib/python3/dist-packages/jinja2/sandbox.py:19: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working
> from collections import Mapping
>
> -- Docs: https://docs.pytest.org/en/latest/warnings.html
> =============== 12 failed, 1 passed, 3 warnings in 0.91 seconds ================
> E: pybuild pybuild:352: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7/build; python3.7 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.7 3.8" returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2020/03/26/sphinxcontrib-websupport_1.2.0-1_unstable_sphinx243.log
Please see [1] for Sphinx changelog, which may give a hint of what changes in
Sphinx caused this error.
Also see [2] for the list of deprecated/removed APIs and possible alternatives
to them.
Sphinx 2.4 is going to be uploaded to unstable in a couple of weeks. When that
happens, the severity of this bug will be bumped to serious.
In case you have questions, please Cc sphinx at packages.debian.org on reply.
[1]: https://www.sphinx-doc.org/en/2.0/changes.html
[2]: https://www.sphinx-doc.org/en/2.0/extdev/deprecated.html#dev-deprecated-apis
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
About the archive rebuild: The rebuild was done on EC2 VM instances from
Amazon Web Services, using a clean, minimal and up-to-date chroot. Every
failed build was retried once to eliminate random failures.
More information about the Python-modules-team
mailing list