<86>Jan 27 05:36:43 userdel[3170896]: delete user 'rooter' <86>Jan 27 05:36:43 userdel[3170896]: removed group 'rooter' owned by 'rooter' <86>Jan 27 05:36:43 userdel[3170896]: removed shadow group 'rooter' owned by 'rooter' <86>Jan 27 05:36:43 groupadd[3170919]: group added to /etc/group: name=rooter, GID=1868 <86>Jan 27 05:36:43 groupadd[3170919]: group added to /etc/gshadow: name=rooter <86>Jan 27 05:36:43 groupadd[3170919]: new group: name=rooter, GID=1868 <86>Jan 27 05:36:43 useradd[3170945]: new user: name=rooter, UID=1868, GID=1868, home=/root, shell=/bin/bash, from=none <86>Jan 27 05:36:43 userdel[3170976]: delete user 'builder' <86>Jan 27 05:36:43 userdel[3170976]: removed group 'builder' owned by 'builder' <86>Jan 27 05:36:43 userdel[3170976]: removed shadow group 'builder' owned by 'builder' <86>Jan 27 05:36:43 groupadd[3171007]: group added to /etc/group: name=builder, GID=1869 <86>Jan 27 05:36:43 groupadd[3171007]: group added to /etc/gshadow: name=builder <86>Jan 27 05:36:43 groupadd[3171007]: new group: name=builder, GID=1869 <86>Jan 27 05:36:43 useradd[3171031]: new user: name=builder, UID=1869, GID=1869, home=/usr/src, shell=/bin/bash, from=none <13>Jan 27 05:36:46 rpmi: libmpdec3-2.5.1-alt3 sisyphus+314490.500.5.1 1675432033 installed <13>Jan 27 05:36:46 rpmi: libgdbm-1.8.3-alt10 sisyphus+278100.1600.1.1 1626059138 installed <13>Jan 27 05:36:46 rpmi: libexpat-2.5.0-alt1 sisyphus+309227.100.1.1 1667075766 installed <13>Jan 27 05:36:46 rpmi: libb2-0.98.1-alt1_1 sisyphus+291614.100.1.1 1638962878 installed <13>Jan 27 05:36:46 rpmi: libp11-kit-1:0.25.3-alt2 sisyphus+336533.100.1.1 1702645575 installed <13>Jan 27 05:36:46 rpmi: libtasn1-4.19.0-alt3 sisyphus+327816.100.1.1 1692802618 installed <13>Jan 27 05:36:46 rpmi: rpm-macros-alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Jan 27 05:36:46 rpmi: alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Jan 27 05:36:46 rpmi: ca-certificates-2023.12.20-alt1 sisyphus+336902.300.1.1 1703105726 installed <13>Jan 27 05:36:46 rpmi: ca-trust-0.1.4-alt1 sisyphus+308690.100.1.1 1666182992 installed <13>Jan 27 05:36:46 rpmi: p11-kit-trust-1:0.25.3-alt2 sisyphus+336533.100.1.1 1702645575 installed <13>Jan 27 05:36:46 rpmi: libcrypto3-3.1.4-alt1 sisyphus+332632.100.2.1 1698241305 installed <13>Jan 27 05:36:46 rpmi: libssl3-3.1.4-alt1 sisyphus+332632.100.2.1 1698241305 installed <13>Jan 27 05:36:46 rpmi: python3-3.12.1-alt1 sisyphus+338551.300.3.1 1705938690 installed <13>Jan 27 05:36:47 rpmi: python3-base-3.12.1-alt1 sisyphus+338551.300.3.1 1705938690 installed <13>Jan 27 05:36:47 rpmi: python3-module-py3dephell-0.1.0-alt2 sisyphus+328191.600.5.1 1693609196 installed <13>Jan 27 05:36:47 rpmi: tests-for-installed-python3-pkgs-0.1.24-alt2 sisyphus+331059.100.4.1 1696870033 installed <13>Jan 27 05:36:47 rpmi: rpm-build-python3-0.1.24-alt2 sisyphus+331059.100.4.1 1696870033 installed <13>Jan 27 05:36:50 rpmi: python3-module-zope.interface-6.0-alt1 sisyphus+333513.24700.71.1 1704544166 installed <13>Jan 27 05:36:50 rpmi: python3-module-docutils-0.20.1-alt1 sisyphus+323438.100.1.1 1687370718 installed <13>Jan 27 05:36:50 rpmi: python3-module-six-1.16.0-alt2 sisyphus+324249.100.1.1 1688484676 installed <13>Jan 27 05:36:50 rpmi: python3-module-Pygments-2.17.2-alt1 sisyphus+334864.100.2.1 1701773787 installed <13>Jan 27 05:36:50 rpmi: python3-module-pkg_resources-1:69.0.3-alt2 sisyphus+339080.100.1.1 1706272183 installed <13>Jan 27 05:36:50 rpmi: python3-module-zope.i18nmessageid-6.0.1-alt1 sisyphus+333513.33000.72.1 1704590121 installed <13>Jan 27 05:36:50 rpmi: python3-module-markupsafe-1:2.1.4-alt1 sisyphus+338528.100.1.2 1705786004 installed <13>Jan 27 05:36:51 rpmi: python3-module-babel-1:2.14.0-alt1 sisyphus+338035.100.1.2 1705646267 installed <13>Jan 27 05:36:51 rpmi: python3-module-packaging-23.2-alt1 sisyphus+330805.100.2.1 1696324248 installed <13>Jan 27 05:36:51 rpmi: libnspr-1:4.35-alt1 sisyphus+308164.100.1.1 1665397042 installed <13>Jan 27 05:36:51 rpmi: python3-module-jinja2-3.1.3-alt1 sisyphus+338371.3500.8.1 1706006785 installed <13>Jan 27 05:36:51 rpmi: python3-module-alabaster-0.7.6-alt4 sisyphus+281697.200.1.1 1627919931 installed <13>Jan 27 05:36:51 rpmi: python3-module-genshi-0.7.7-alt1 sisyphus+333513.13000.71.1 1704541177 installed <13>Jan 27 05:36:51 rpmi: python3-module-z3c-3.0.0-alt4 sisyphus+284857.200.1.1 1631109149 installed <13>Jan 27 05:36:51 rpmi: python3-module-zc-1.0.0-alt7 sisyphus+284857.100.1.1 1631109117 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope-3.3.0-alt9 sisyphus+281937.200.4.1 1628175910 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope.event-5.0-alt1.1 sisyphus+325755.140.2.1 1690991538 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope.schema-7.0.1-alt2 sisyphus+325755.1600.2.1 1690991981 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope.configuration-5.0-alt1.1 sisyphus+325755.400.2.1 1690991638 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope.hookable-5.4-alt1 sisyphus+333513.32700.72.1 1704590086 installed <13>Jan 27 05:36:51 rpmi: python3-module-zope.proxy-5.0.0-alt1 sisyphus+333513.25000.71.1 1704544202 installed <13>Jan 27 05:36:51 rpmi: python3-module-webob-1.8.7-alt2 sisyphus+339062.100.1.1 1706256758 installed <13>Jan 27 05:36:51 rpmi: python3-module-waitress-2.1.2-alt1 sisyphus+338913.100.1.1 1706110601 installed <13>Jan 27 05:36:51 rpmi: python3-module-snowballstemmer-2.2.0-alt1 sisyphus+319215.100.1.1 1682346633 installed <13>Jan 27 05:36:51 rpmi: python3-module-repoze-2.4.1-alt1 sisyphus+303920.100.1.1 1658140098 installed <13>Jan 27 05:36:51 rpmi: python3-module-plaster-1.1.2-alt1 sisyphus+312618.100.1.1 1672317024 installed <13>Jan 27 05:36:51 rpmi: python3-module-polib-1.1.1-alt1 sisyphus+282657.100.1.1 1628954165 installed <13>Jan 27 05:36:51 rpmi: python3-module-imagesize-1.4.1-alt1 sisyphus+318084.100.1.1 1680697673 installed <13>Jan 27 05:36:51 rpmi: python3-module-idna-3.6-alt1 sisyphus+335330.100.1.2 1701263518 installed <13>Jan 27 05:36:51 rpmi: python3-module-watchdog-3.0.0-alt1 sisyphus+319848.100.1.1 1683199372 installed <13>Jan 27 05:36:51 rpmi: python3-module-click-8.1.7-alt1 sisyphus+327424.100.2.1 1695395098 installed <13>Jan 27 05:36:51 rpmi: python3-module-charset-normalizer-2.1.1-alt1 sisyphus+311047.100.1.1 1669992940 installed <13>Jan 27 05:36:51 rpmi: python3-module-chameleon.core-4.5.0-alt1 sisyphus+338688.100.1.1 1705976382 installed <13>Jan 27 05:36:51 rpmi: python3-module-lingua-4.15.0-alt2 sisyphus+304052.100.1.1 1658352892 installed <13>Jan 27 05:36:51 rpmi: python3-module-webencodings-0.5.1-alt2 sisyphus+276020.100.1.1 1624812421 installed <13>Jan 27 05:36:51 rpmi: python3-module-pycparser-2.21-alt1.1 sisyphus+309935.7300.4.1 1668527005 installed <13>Jan 27 05:36:51 rpmi: python3-module-cffi-1.16.0-alt1 sisyphus+333513.10400.71.1 1704540321 installed <13>Jan 27 05:36:51 rpmi: python3-module-cryptography-42.0.1-alt1 sisyphus+338984.100.1.2 1706196520 installed <13>Jan 27 05:36:51 rpmi: python3-module-openssl-23.2.0-alt1 sisyphus+326014.100.1.1 1690659362 installed <13>Jan 27 05:36:51 rpmi: python3-module-urllib3-2:2.1.0-alt2 sisyphus+339022.100.1.1 1706233982 installed <13>Jan 27 05:36:51 rpmi: python3-module-requests-2.31.0-alt1 sisyphus+321663.100.2.1 1684917021 installed <13>Jan 27 05:36:51 rpmi: python3-module-persistent-5.1-alt1 sisyphus+333513.35600.73.1 1704636555 installed <13>Jan 27 05:36:51 rpmi: python3-module-openid-3.2.0-alt1 sisyphus+278049.100.2.1 1625998936 installed <13>Jan 27 05:36:51 rpmi: python3-module-Cheetah-3.3.3-alt1 sisyphus+333513.10500.71.1 1704540354 installed <13>Jan 27 05:36:51 rpmi: python3-module-paste-3.7.1-alt1 sisyphus+332187.100.1.1 1697730831 installed <13>Jan 27 05:36:51 rpmi: python3-module-PasteDeploy-1:3.0.1-alt1 sisyphus+308592.100.1.1 1666070463 installed <13>Jan 27 05:36:51 rpmi: python3-module-PasteScript-1:2.0.2-alt2 sisyphus+272468.100.1.1 1621939313 installed <13>Jan 27 05:36:51 rpmi: python-sphinx-objects.inv-1:2.3.13.20231231-alt1 sisyphus+337756.100.1.1 1704495859 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-applehelp-1.0.8-alt1 sisyphus+338681.100.1.1 1705971952 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-devhelp-1.0.6-alt1 sisyphus+338681.200.1.1 1705971978 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-jquery-4.1-alt3 sisyphus+339023.100.1.1 1706234262 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-jsmath-1.0.1-alt1 sisyphus+276004.100.1.1 1624811634 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-htmlhelp-2.0.0-alt2 sisyphus+298571.100.1.1 1650103344 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-serializinghtml-1.1.10-alt1 sisyphus+338546.100.3.1 1705871063 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinxcontrib-qthelp-1.0.7-alt1 sisyphus+338681.300.1.1 1705972004 installed <13>Jan 27 05:36:51 rpmi: python3-module-sphinx-1:7.2.6-alt1 sisyphus+338037.100.1.2 1705651927 installed <13>Jan 27 05:36:51 rpmi: python3-module-pluggy-1.3.0-alt1 sisyphus+330478.100.1.1 1695823310 installed <13>Jan 27 05:36:51 rpmi: python3-module-iniconfig-2.0.0-alt1 sisyphus+314076.200.3.1 1674737275 installed <13>Jan 27 05:36:51 rpmi: python3-module-pytest-7.4.3-alt1 sisyphus+332685.100.2.1 1698314627 installed <13>Jan 27 05:36:52 rpmi: libxslt-1.1.37-alt1 sisyphus+307481.100.1.1 1664360525 installed <13>Jan 27 05:36:52 rpmi: python3-module-html5lib-1:1.1-alt1 sisyphus+278096.120.5.1 1626086978 installed <13>Jan 27 05:36:52 rpmi: python3-module-lxml-4.9.3.0.112.gitc18f89b8-alt1 sisyphus+333513.52350.73.1 1704646220 installed <13>Jan 27 05:36:52 rpmi: python3-module-soupsieve-2.3.1-alt1 sisyphus+297886.100.1.1 1649153481 installed <13>Jan 27 05:36:52 rpmi: python3-module-beautifulsoup4-4.11.2-alt1 sisyphus+316622.100.1.1 1678651404 installed <13>Jan 27 05:36:52 rpmi: libpython3-3.12.1-alt1 sisyphus+338551.300.3.1 1705938690 installed <13>Jan 27 05:36:52 rpmi: libsqlite3-3.44.2-alt1 sisyphus+335409.100.3.3 1701347861 installed <13>Jan 27 05:36:52 rpmi: libnss-3.96.1-alt1 sisyphus+336902.200.1.1 1703106818 installed <13>Jan 27 05:36:52 rpmi: python3-module-nss-1.0.1-alt7 sisyphus+333513.61400.73.1 1704655181 installed <13>Jan 27 05:36:52 rpmi: python3-module-beaker-1.12.1-alt1 sisyphus+319143.100.1.1 1682256768 installed <13>Jan 27 05:36:52 rpmi: libncurses6-6.3.20220618-alt4 sisyphus+328055.40.2.1 1693213017 installed <13>Jan 27 05:36:52 rpmi: libtinfo-devel-6.3.20220618-alt4 sisyphus+328055.40.2.1 1693213017 installed <13>Jan 27 05:36:52 rpmi: libncurses-devel-6.3.20220618-alt4 sisyphus+328055.40.2.1 1693213017 installed <13>Jan 27 05:36:53 rpmi: python3-dev-3.12.1-alt1 sisyphus+338551.300.3.1 1705938690 installed <13>Jan 27 05:36:53 rpmi: python3-module-setuptools-1:69.0.3-alt2 sisyphus+339080.100.1.1 1706272183 installed <13>Jan 27 05:36:53 rpmi: python3-module-wheel-0.42.0-alt1 sisyphus+336049.100.2.1 1702033503 installed <13>Jan 27 05:36:53 rpmi: python3-module-mako-1.3.1-alt1 sisyphus+338686.100.1.1 1705973867 installed <13>Jan 27 05:36:53 rpmi: python3-module-webtest-3.0.0-alt1 sisyphus+339062.200.2.1 1706258036 installed <13>Jan 27 05:36:53 rpmi: pytest3-7.4.3-alt1 sisyphus+332685.100.2.1 1698314627 installed <13>Jan 27 05:36:53 rpmi: python3-module-plaster-pastedeploy-0.4.1-alt2 sisyphus+242478.100.1.1 1575644445 installed <13>Jan 27 05:36:53 rpmi: python3-module-zope.component-6.0-alt2 sisyphus+325755.1240.2.1 1690991894 installed <13>Jan 27 05:36:53 rpmi: python3-module-hupper-1.12.1-alt1 sisyphus+339084.100.1.1 1706272716 installed <13>Jan 27 05:36:53 rpmi: python3-module-repoze.lru-0.7-alt2 sisyphus+278582.100.1.1 1626088917 installed <13>Jan 27 05:36:53 rpmi: python3-module-zope.deprecation-1:5.0-alt2 sisyphus+326348.1400.4.1 1691597623 installed <13>Jan 27 05:36:53 rpmi: python3-module-venusian-3.0.0-alt1.1 sisyphus+309935.11000.4.1 1668527810 installed <13>Jan 27 05:36:53 rpmi: python3-module-translationstring-1.4-alt3 sisyphus+273292.100.1.1 1622548886 installed Building target platforms: i586 Building for target i586 Wrote: /usr/src/in/nosrpm/python3-module-pyramid-2.0.2-alt1.nosrc.rpm (w1.gzdio) <13>Jan 27 05:36:56 rpmi: python3-module-pyproject-installer-0.5.2-alt1 sisyphus+324644.100.2.1 1689089627 installed Installing python3-module-pyramid-2.0.2-alt1.src.rpm Building target platforms: i586 Building for target i586 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.81424 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python3-module-pyramid-2.0.2 + echo 'Source #0 (python3-module-pyramid-2.0.2.tar):' Source #0 (python3-module-pyramid-2.0.2.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-pyramid-2.0.2.tar + cd python3-module-pyramid-2.0.2 + /bin/chmod -c -Rf u+rwX,go-w . + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.81424 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-pyramid-2.0.2 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic' + /usr/bin/python3 -m pyproject_installer -v build INFO : pyproject_installer.build_cmd._build : Building wheel INFO : pyproject_installer.build_cmd._build : Source tree: /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2 INFO : pyproject_installer.build_cmd._build : Output dir: /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/dist DEBUG : pyproject_installer.lib.build_backend : Validating source path DEBUG : pyproject_installer.lib.build_backend : Checking for PEP517 spec DEBUG : pyproject_installer.lib.build_backend : Parsing configuration file: /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/pyproject.toml INFO : backend_caller.py : Calling hook build_wheel in subprocess INFO : backend_caller.py : Build backend: setuptools.build_meta INFO : backend_caller.py : Hook args: ['/usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/dist'] INFO : backend_caller.py : Hook kwargs: {'config_settings': None} INFO : root : running bdist_wheel INFO : root : running build INFO : root : running build_py INFO : root : creating build INFO : root : creating build/lib INFO : root : creating build/lib/pyramid INFO : root : copying src/pyramid/wsgi.py -> build/lib/pyramid INFO : root : copying src/pyramid/viewderivers.py -> build/lib/pyramid INFO : root : copying src/pyramid/view.py -> build/lib/pyramid INFO : root : copying src/pyramid/util.py -> build/lib/pyramid INFO : root : copying src/pyramid/urldispatch.py -> build/lib/pyramid INFO : root : copying src/pyramid/url.py -> build/lib/pyramid INFO : root : copying src/pyramid/tweens.py -> build/lib/pyramid INFO : root : copying src/pyramid/traversal.py -> build/lib/pyramid INFO : root : copying src/pyramid/threadlocal.py -> build/lib/pyramid INFO : root : copying src/pyramid/testing.py -> build/lib/pyramid INFO : root : copying src/pyramid/static.py -> build/lib/pyramid INFO : root : copying src/pyramid/settings.py -> build/lib/pyramid INFO : root : copying src/pyramid/session.py -> build/lib/pyramid INFO : root : copying src/pyramid/security.py -> build/lib/pyramid INFO : root : copying src/pyramid/scripting.py -> build/lib/pyramid INFO : root : copying src/pyramid/router.py -> build/lib/pyramid INFO : root : copying src/pyramid/response.py -> build/lib/pyramid INFO : root : copying src/pyramid/resource.py -> build/lib/pyramid INFO : root : copying src/pyramid/request.py -> build/lib/pyramid INFO : root : copying src/pyramid/renderers.py -> build/lib/pyramid INFO : root : copying src/pyramid/registry.py -> build/lib/pyramid INFO : root : copying src/pyramid/predicates.py -> build/lib/pyramid INFO : root : copying src/pyramid/path.py -> build/lib/pyramid INFO : root : copying src/pyramid/paster.py -> build/lib/pyramid INFO : root : copying src/pyramid/location.py -> build/lib/pyramid INFO : root : copying src/pyramid/interfaces.py -> build/lib/pyramid INFO : root : copying src/pyramid/i18n.py -> build/lib/pyramid INFO : root : copying src/pyramid/httpexceptions.py -> build/lib/pyramid INFO : root : copying src/pyramid/exceptions.py -> build/lib/pyramid INFO : root : copying src/pyramid/events.py -> build/lib/pyramid INFO : root : copying src/pyramid/encode.py -> build/lib/pyramid INFO : root : copying src/pyramid/decorator.py -> build/lib/pyramid INFO : root : copying src/pyramid/csrf.py -> build/lib/pyramid INFO : root : copying src/pyramid/authorization.py -> build/lib/pyramid INFO : root : copying src/pyramid/authentication.py -> build/lib/pyramid INFO : root : copying src/pyramid/asset.py -> build/lib/pyramid INFO : root : copying src/pyramid/__init__.py -> build/lib/pyramid INFO : root : creating build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/pviews.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/ptweens.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/pshell.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/pserve.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/proutes.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/prequest.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/pdistreport.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/common.py -> build/lib/pyramid/scripts INFO : root : copying src/pyramid/scripts/__init__.py -> build/lib/pyramid/scripts INFO : root : creating build/lib/pyramid/config INFO : root : copying src/pyramid/config/zca.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/views.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/tweens.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/testing.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/settings.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/security.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/routes.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/rendering.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/predicates.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/i18n.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/factories.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/assets.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/adapters.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/actions.py -> build/lib/pyramid/config INFO : root : copying src/pyramid/config/__init__.py -> build/lib/pyramid/config INFO : root : running egg_info INFO : root : creating src/pyramid.egg-info INFO : root : writing src/pyramid.egg-info/PKG-INFO INFO : root : writing dependency_links to src/pyramid.egg-info/dependency_links.txt INFO : root : writing entry points to src/pyramid.egg-info/entry_points.txt INFO : root : writing requirements to src/pyramid.egg-info/requires.txt INFO : root : writing top-level names to src/pyramid.egg-info/top_level.txt INFO : root : writing manifest file 'src/pyramid.egg-info/SOURCES.txt' INFO : root : reading manifest file 'src/pyramid.egg-info/SOURCES.txt' INFO : root : reading manifest template 'MANIFEST.in' WARNING : root : no previously-included directories found matching 'docs/_build' WARNING : root : warning: no previously-included files matching '__pycache__' found anywhere in distribution WARNING : root : warning: no previously-included files matching '*.py[cod]' found anywhere in distribution WARNING : root : warning: no previously-included files matching '.DS_Store' found anywhere in distribution INFO : root : adding license file 'LICENSE.txt' INFO : root : writing manifest file 'src/pyramid.egg-info/SOURCES.txt' INFO : wheel : installing to build/bdist.linux-i686/wheel INFO : root : running install INFO : root : running install_lib INFO : root : creating build/bdist.linux-i686 INFO : root : creating build/bdist.linux-i686/wheel INFO : root : creating build/bdist.linux-i686/wheel/pyramid INFO : root : creating build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/__init__.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/actions.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/adapters.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/assets.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/factories.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/i18n.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/predicates.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/rendering.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/routes.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/security.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/settings.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/testing.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/tweens.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/views.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : copying build/lib/pyramid/config/zca.py -> build/bdist.linux-i686/wheel/pyramid/config INFO : root : creating build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/__init__.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/common.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/pdistreport.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/prequest.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/proutes.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/pserve.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/pshell.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/ptweens.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/scripts/pviews.py -> build/bdist.linux-i686/wheel/pyramid/scripts INFO : root : copying build/lib/pyramid/__init__.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/asset.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/authentication.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/authorization.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/csrf.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/decorator.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/encode.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/events.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/exceptions.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/httpexceptions.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/i18n.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/interfaces.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/location.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/paster.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/path.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/predicates.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/registry.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/renderers.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/request.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/resource.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/response.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/router.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/scripting.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/security.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/session.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/settings.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/static.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/testing.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/threadlocal.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/traversal.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/tweens.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/url.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/urldispatch.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/util.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/view.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/viewderivers.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : copying build/lib/pyramid/wsgi.py -> build/bdist.linux-i686/wheel/pyramid INFO : root : running install_egg_info INFO : root : Copying src/pyramid.egg-info to build/bdist.linux-i686/wheel/pyramid-2.0.2-py3.12.egg-info INFO : root : running install_scripts INFO : wheel : creating build/bdist.linux-i686/wheel/pyramid-2.0.2.dist-info/WHEEL INFO : wheel : creating '/usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/dist/.tmp-8k10wdm7/pyramid-2.0.2-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it INFO : wheel : adding 'pyramid/__init__.py' INFO : wheel : adding 'pyramid/asset.py' INFO : wheel : adding 'pyramid/authentication.py' INFO : wheel : adding 'pyramid/authorization.py' INFO : wheel : adding 'pyramid/csrf.py' INFO : wheel : adding 'pyramid/decorator.py' INFO : wheel : adding 'pyramid/encode.py' INFO : wheel : adding 'pyramid/events.py' INFO : wheel : adding 'pyramid/exceptions.py' INFO : wheel : adding 'pyramid/httpexceptions.py' INFO : wheel : adding 'pyramid/i18n.py' INFO : wheel : adding 'pyramid/interfaces.py' INFO : wheel : adding 'pyramid/location.py' INFO : wheel : adding 'pyramid/paster.py' INFO : wheel : adding 'pyramid/path.py' INFO : wheel : adding 'pyramid/predicates.py' INFO : wheel : adding 'pyramid/registry.py' INFO : wheel : adding 'pyramid/renderers.py' INFO : wheel : adding 'pyramid/request.py' INFO : wheel : adding 'pyramid/resource.py' INFO : wheel : adding 'pyramid/response.py' INFO : wheel : adding 'pyramid/router.py' INFO : wheel : adding 'pyramid/scripting.py' INFO : wheel : adding 'pyramid/security.py' INFO : wheel : adding 'pyramid/session.py' INFO : wheel : adding 'pyramid/settings.py' INFO : wheel : adding 'pyramid/static.py' INFO : wheel : adding 'pyramid/testing.py' INFO : wheel : adding 'pyramid/threadlocal.py' INFO : wheel : adding 'pyramid/traversal.py' INFO : wheel : adding 'pyramid/tweens.py' INFO : wheel : adding 'pyramid/url.py' INFO : wheel : adding 'pyramid/urldispatch.py' INFO : wheel : adding 'pyramid/util.py' INFO : wheel : adding 'pyramid/view.py' INFO : wheel : adding 'pyramid/viewderivers.py' INFO : wheel : adding 'pyramid/wsgi.py' INFO : wheel : adding 'pyramid/config/__init__.py' INFO : wheel : adding 'pyramid/config/actions.py' INFO : wheel : adding 'pyramid/config/adapters.py' INFO : wheel : adding 'pyramid/config/assets.py' INFO : wheel : adding 'pyramid/config/factories.py' INFO : wheel : adding 'pyramid/config/i18n.py' INFO : wheel : adding 'pyramid/config/predicates.py' INFO : wheel : adding 'pyramid/config/rendering.py' INFO : wheel : adding 'pyramid/config/routes.py' INFO : wheel : adding 'pyramid/config/security.py' INFO : wheel : adding 'pyramid/config/settings.py' INFO : wheel : adding 'pyramid/config/testing.py' INFO : wheel : adding 'pyramid/config/tweens.py' INFO : wheel : adding 'pyramid/config/views.py' INFO : wheel : adding 'pyramid/config/zca.py' INFO : wheel : adding 'pyramid/scripts/__init__.py' INFO : wheel : adding 'pyramid/scripts/common.py' INFO : wheel : adding 'pyramid/scripts/pdistreport.py' INFO : wheel : adding 'pyramid/scripts/prequest.py' INFO : wheel : adding 'pyramid/scripts/proutes.py' INFO : wheel : adding 'pyramid/scripts/pserve.py' INFO : wheel : adding 'pyramid/scripts/pshell.py' INFO : wheel : adding 'pyramid/scripts/ptweens.py' INFO : wheel : adding 'pyramid/scripts/pviews.py' INFO : wheel : adding 'pyramid-2.0.2.dist-info/LICENSE.txt' INFO : wheel : adding 'pyramid-2.0.2.dist-info/METADATA' INFO : wheel : adding 'pyramid-2.0.2.dist-info/WHEEL' INFO : wheel : adding 'pyramid-2.0.2.dist-info/entry_points.txt' INFO : wheel : adding 'pyramid-2.0.2.dist-info/top_level.txt' INFO : wheel : adding 'pyramid-2.0.2.dist-info/RECORD' INFO : wheel : removing build/bdist.linux-i686/wheel INFO : pyproject_installer.build_cmd._build : Built wheel: pyramid-2.0.2-py3-none-any.whl + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.25459 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-pyramid-buildroot + : + /bin/rm -rf -- /usr/src/tmp/python3-module-pyramid-buildroot + PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games + cd python3-module-pyramid-2.0.2 + /usr/bin/python3 -m pyproject_installer -v install --destdir=/usr/src/tmp/python3-module-pyramid-buildroot INFO : pyproject_installer.install_cmd._install : Installing wheel INFO : pyproject_installer.install_cmd._install : Wheel directory: /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/dist INFO : pyproject_installer.install_cmd._install : Wheel filename: pyramid-2.0.2-py3-none-any.whl INFO : pyproject_installer.install_cmd._install : Destination: /usr/src/tmp/python3-module-pyramid-buildroot DEBUG : pyproject_installer.lib.wheel : Parsing wheel filename DEBUG : pyproject_installer.lib.wheel : Validating wheel file DEBUG : pyproject_installer.lib.wheel : Validating wheel spec version DEBUG : pyproject_installer.lib.wheel : Parsing wheel spec metadata DEBUG : pyproject_installer.lib.wheel : Validating RECORD INFO : pyproject_installer.install_cmd._install : Wheel installation root: /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages INFO : pyproject_installer.install_cmd._install : Extracting wheel DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: pyramid-2.0.2.dist-info/LICENSE.txt DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: pyramid-2.0.2.dist-info/WHEEL DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: pyramid-2.0.2.dist-info/top_level.txt DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: pyramid-2.0.2.dist-info/RECORD INFO : pyproject_installer.install_cmd._install : Generating entrypoints scripts DEBUG : pyproject_installer.lib.scripts : Installing console script: pdistreport DEBUG : pyproject_installer.lib.scripts : Installing console script: prequest DEBUG : pyproject_installer.lib.scripts : Installing console script: proutes DEBUG : pyproject_installer.lib.scripts : Installing console script: pserve DEBUG : pyproject_installer.lib.scripts : Installing console script: pshell DEBUG : pyproject_installer.lib.scripts : Installing console script: ptweens DEBUG : pyproject_installer.lib.scripts : Installing console script: pviews INFO : pyproject_installer.install_cmd._install : Wheel was installed + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/python3-module-pyramid-buildroot (auto) Verifying and fixing files in /usr/src/tmp/python3-module-pyramid-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig) Checking contents of files in /usr/src/tmp/python3-module-pyramid-buildroot/ (default) Compressing files in /usr/src/tmp/python3-module-pyramid-buildroot (auto) Adjusting library links in /usr/src/tmp/python3-module-pyramid-buildroot ./usr/lib: (from :0) Verifying ELF objects in /usr/src/tmp/python3-module-pyramid-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) Bytecompiling python3 modules in /usr/src/tmp/python3-module-pyramid-buildroot using /usr/bin/python3 compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/actions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/adapters.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/assets.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/factories.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/rendering.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/routes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/views.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/zca.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/common.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pdistreport.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/prequest.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/proutes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pserve.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pshell.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/ptweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pviews.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/asset.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authentication.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authorization.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/csrf.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/decorator.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/encode.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/events.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/exceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/httpexceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/interfaces.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/location.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/paster.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/path.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/registry.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/renderers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/request.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/resource.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/response.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/router.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripting.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/session.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/static.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/threadlocal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/traversal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/url.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/urldispatch.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/util.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/view.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/viewderivers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/wsgi.py Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-pyramid-buildroot using /usr/bin/python3 -O compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/actions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/adapters.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/assets.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/factories.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/rendering.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/routes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/views.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/zca.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/common.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pdistreport.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/prequest.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/proutes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pserve.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pshell.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/ptweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pviews.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/asset.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authentication.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authorization.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/csrf.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/decorator.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/encode.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/events.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/exceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/httpexceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/interfaces.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/location.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/paster.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/path.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/registry.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/renderers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/request.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/resource.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/response.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/router.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripting.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/session.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/static.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/threadlocal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/traversal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/url.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/urldispatch.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/util.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/view.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/viewderivers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/wsgi.py Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-pyramid-buildroot using /usr/bin/python3 -OO compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/actions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/adapters.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/assets.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/factories.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/rendering.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/routes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/views.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/zca.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/common.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pdistreport.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/prequest.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/proutes.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pserve.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pshell.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/ptweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripts/pviews.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/__init__.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/asset.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authentication.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/authorization.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/csrf.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/decorator.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/encode.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/events.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/exceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/httpexceptions.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/i18n.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/interfaces.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/location.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/paster.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/path.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/predicates.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/registry.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/renderers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/request.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/resource.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/response.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/router.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/scripting.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/security.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/session.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/settings.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/static.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/testing.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/threadlocal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/traversal.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/tweens.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/url.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/urldispatch.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/util.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/view.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/viewderivers.py compile /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/wsgi.py Hardlinking identical .pyc and .opt-?.pyc files './usr/lib/python3/site-packages/pyramid/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/__init__.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/__init__.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/asset.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/asset.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/authentication.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/authentication.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/authorization.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/authorization.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/csrf.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/csrf.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/decorator.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/decorator.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/encode.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/encode.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/events.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/events.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/exceptions.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/exceptions.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/httpexceptions.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/httpexceptions.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/i18n.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/i18n.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/interfaces.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/interfaces.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/location.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/location.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/paster.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/paster.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/path.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/path.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/predicates.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/predicates.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/predicates.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/predicates.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/renderers.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/renderers.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/request.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/request.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/resource.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/resource.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/response.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/response.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/router.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/router.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/scripting.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/scripting.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/security.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/security.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/session.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/session.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/settings.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/settings.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/static.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/static.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/testing.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/testing.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/threadlocal.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/threadlocal.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/traversal.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/traversal.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/tweens.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/tweens.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/url.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/url.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/urldispatch.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/urldispatch.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/urldispatch.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/urldispatch.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/util.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/util.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/view.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/view.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/viewderivers.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/viewderivers.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/viewderivers.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/viewderivers.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/__pycache__/wsgi.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/__pycache__/wsgi.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/adapters.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/adapters.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/assets.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/assets.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/factories.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/factories.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/i18n.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/i18n.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/predicates.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/predicates.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/rendering.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/rendering.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/routes.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/routes.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/security.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/security.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/settings.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/settings.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/testing.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/testing.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/tweens.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/tweens.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/views.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/views.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/config/__pycache__/zca.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/config/__pycache__/zca.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/__init__.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/__init__.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/__init__.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/__init__.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/common.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/common.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pdistreport.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pdistreport.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pdistreport.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pdistreport.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/prequest.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/prequest.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/prequest.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/prequest.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/proutes.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/proutes.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/proutes.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/proutes.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pshell.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pshell.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pshell.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pshell.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/ptweens.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/ptweens.cpython-312.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/ptweens.cpython-312.opt-2.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/ptweens.cpython-312.opt-1.pyc' './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pviews.cpython-312.opt-1.pyc' => './usr/lib/python3/site-packages/pyramid/scripts/__pycache__/pviews.cpython-312.pyc' Executing(%check): /bin/sh -e /usr/src/tmp/rpm-tmp.4539 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-pyramid-2.0.2 + export PYTHONPATH=/usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/_stub:/usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages + PYTHONPATH=/usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/_stub:/usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages + pytest3 tests ============================= test session starts ============================== platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0 rootdir: /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2 configfile: setup.cfg collected 2635 items tests/test_asset.py ........... [ 0%] tests/test_authentication.py ........................................... [ 2%] ........................................................................ [ 4%] ................................................ [ 6%] tests/test_authorization.py ........................ [ 7%] tests/test_csrf.py ........................................ [ 9%] tests/test_decorator.py .... [ 9%] tests/test_encode.py ............... [ 9%] tests/test_events.py ....................................... [ 11%] tests/test_exceptions.py ........... [ 11%] tests/test_httpexceptions.py ........................................... [ 13%] ................ [ 13%] tests/test_i18n.py ............................................ [ 15%] tests/test_integration.py .............................................. [ 17%] ..............................FF...............................FF....FFF [ 20%] ...... [ 20%] tests/test_location.py .. [ 20%] tests/test_paster.py ........ [ 20%] tests/test_path.py ..................................................... [ 22%] ............................ [ 23%] tests/test_predicates.py ............................................... [ 25%] ........................ [ 26%] tests/test_registry.py .................................... [ 27%] tests/test_renderers.py ................................................ [ 29%] .............. [ 30%] tests/test_request.py .................................................. [ 32%] ..... [ 32%] tests/test_response.py ............... [ 32%] tests/test_router.py ................................................... [ 34%] ......... [ 35%] tests/test_scripting.py ............. [ 35%] tests/test_security.py ............................................... [ 37%] tests/test_session.py .................................................. [ 39%] .......................................... [ 40%] tests/test_settings.py ................... [ 41%] tests/test_static.py ................................................... [ 43%] ... [ 43%] tests/test_testing.py .................................................. [ 45%] ............................. [ 46%] tests/test_threadlocal.py ........ [ 46%] tests/test_traversal.py ................................................ [ 48%] ................................................. [ 50%] tests/test_tweens.py ..... [ 50%] tests/test_url.py ...................................................... [ 52%] ......................................................... [ 54%] tests/test_urldispatch.py .............................................. [ 56%] .... [ 56%] tests/test_util.py ..................................................... [ 58%] ........................................................................ [ 61%] [ 61%] tests/test_view.py ..................................................... [ 63%] .......................... [ 64%] tests/test_viewderivers.py ............................................. [ 66%] .................................................... [ 68%] tests/test_wsgi.py ........... [ 68%] tests/test_config/test_actions.py ...................................... [ 70%] ........ [ 70%] tests/test_config/test_adapters.py ..................... [ 71%] tests/test_config/test_assets.py ....................................... [ 72%] .................................................................... [ 75%] tests/test_config/test_factories.py .................. [ 76%] tests/test_config/test_i18n.py .............. [ 76%] tests/test_config/test_init.py ......................................... [ 78%] ..............FFF.FF........................................ [ 80%] tests/test_config/test_predicates.py ................................... [ 81%] .... [ 81%] tests/test_config/test_rendering.py ... [ 81%] tests/test_config/test_routes.py ............................... [ 83%] tests/test_config/test_security.py .............. [ 83%] tests/test_config/test_settings.py ........................ [ 84%] tests/test_config/test_testing.py ............ [ 85%] tests/test_config/test_tweens.py ................................. [ 86%] tests/test_config/test_views.py ........................................ [ 87%] ........................................................................ [ 90%] ........................................................................ [ 93%] ...................................................................... [ 95%] tests/test_scripts/test_common.py .. [ 96%] tests/test_scripts/test_pdistreport.py .. [ 96%] tests/test_scripts/test_prequest.py ................... [ 96%] tests/test_scripts/test_proutes.py .............................. [ 97%] tests/test_scripts/test_pserve.py ......... [ 98%] tests/test_scripts/test_pshell.py ................. [ 98%] tests/test_scripts/test_ptweens.py ..... [ 99%] tests/test_scripts/test_pviews.py ....................... [100%] =================================== FAILURES =================================== _______________________ TestViewDecoratorApp.test_first ________________________ self = def setUp(self): from pyramid.config import Configurator config = Configurator( root_factory=self.root_factory, package=self.package ) > config.include(self.package) tests/test_integration.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:666: in include c(configurator) tests/pkgs/viewdecoratorapp/__init__.py:2: in includeme config.scan('tests.pkgs.viewdecoratorapp') /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _______________________ TestViewDecoratorApp.test_second _______________________ self = def setUp(self): from pyramid.config import Configurator config = Configurator( root_factory=self.root_factory, package=self.package ) > config.include(self.package) tests/test_integration.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:666: in include c(configurator) tests/pkgs/viewdecoratorapp/__init__.py:2: in includeme config.scan('tests.pkgs.viewdecoratorapp') /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError __________________________ SelfScanAppTest.test_root ___________________________ self = def setUp(self): from .test_config.pkgs.selfscan import main > config = main() tests/test_integration.py:740: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_config/pkgs/selfscan/__init__.py:13: in main c.scan() /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError ___________________________ SelfScanAppTest.test_two ___________________________ self = def setUp(self): from .test_config.pkgs.selfscan import main > config = main() tests/test_integration.py:740: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_config/pkgs/selfscan/__init__.py:13: in main c.scan() /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _______________________ RendererScanAppTest.test_rescan ________________________ self = def setUp(self): from pyramid.config import Configurator config = Configurator( root_factory=self.root_factory, package=self.package ) > config.include(self.package) tests/test_integration.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:666: in include c(configurator) tests/pkgs/rendererscanapp/__init__.py:10: in includeme config.scan() /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError ________________________ RendererScanAppTest.test_root _________________________ self = def setUp(self): from pyramid.config import Configurator config = Configurator( root_factory=self.root_factory, package=self.package ) > config.include(self.package) tests/test_integration.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:666: in include c(configurator) tests/pkgs/rendererscanapp/__init__.py:10: in includeme config.scan() /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _________________________ RendererScanAppTest.test_two _________________________ self = def setUp(self): from pyramid.config import Configurator config = Configurator( root_factory=self.root_factory, package=self.package ) > config.include(self.package) tests/test_integration.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:666: in include c(configurator) tests/pkgs/rendererscanapp/__init__.py:10: in includeme config.scan() /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError ___________________ ConfiguratorTests.test_scan_integration ____________________ self = def test_scan_integration(self): from zope.interface import alsoProvides from pyramid.view import render_view_to_response from tests.test_config.pkgs import scannable as package config = self._makeOne(autocommit=True) > config.scan(package) tests/test_config/test_init.py:987: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _______________ ConfiguratorTests.test_scan_integration_conflict _______________ self = def test_scan_integration_conflict(self): from pyramid.config import Configurator from tests.test_config.pkgs import selfscan c = Configurator() > c.scan(selfscan) tests/test_config/test_init.py:1159: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError __________ ConfiguratorTests.test_scan_integration_dottedname_package __________ self = def test_scan_integration_dottedname_package(self): from zope.interface import alsoProvides from pyramid.view import render_view_to_response config = self._makeOne(autocommit=True) > config.scan('tests.test_config.pkgs.scannable') tests/test_config/test_init.py:1115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None, ignore = [] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _____________ ConfiguratorTests.test_scan_integration_with_ignore ______________ self = def test_scan_integration_with_ignore(self): from zope.interface import alsoProvides from pyramid.view import render_view_to_response from tests.test_config.pkgs import scannable as package config = self._makeOne(autocommit=True) > config.scan(package, ignore='tests.test_config.pkgs.scannable.another') tests/test_config/test_init.py:1094: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = package = categories = ('pyramid',), onerror = None ignore = ['tests.test_config.pkgs.scannable.another'] def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError _____________ ConfiguratorTests.test_scan_integration_with_onerror _____________ self = def test_scan_integration_with_onerror(self): # fancy sys.path manipulation here to appease "setup.py test" which # fails miserably when it can't import something in the package import sys try: here = os.path.dirname(__file__) path = os.path.join(here, 'path') sys.path.append(path) config = self._makeOne(autocommit=True) class FooException(Exception): pass def onerror(name): raise FooException > self.assertRaises( FooException, config.scan, 'scanerror', onerror=onerror ) tests/test_config/test_init.py:1148: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:880: in scan scanner.scan( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def scan(self, package, categories=None, onerror=None, ignore=None): """ Scan a Python package and any of its subpackages. All top-level objects will be considered; those marked with venusian callback attributes related to ``category`` will be processed. The ``package`` argument should be a reference to a Python package or module object. The ``categories`` argument should be sequence of Venusian callback categories (each category usually a string) or the special value ``None`` which means all Venusian callback categories. The default is ``None``. The ``onerror`` argument should either be ``None`` or a callback function which behaves the same way as the ``onerror`` callback function described in http://docs.python.org/library/pkgutil.html#pkgutil.walk_packages . By default, during a scan, Venusian will propagate all errors that happen during its code importing process, including :exc:`ImportError`. If you use a custom ``onerror`` callback, you can change this behavior. Here's an example ``onerror`` callback that ignores :exc:`ImportError`:: import sys def onerror(name): if not issubclass(sys.exc_info()[0], ImportError): raise # reraise the last exception The ``name`` passed to ``onerror`` is the module or package dotted name that could not be imported due to an exception. .. versionadded:: 1.0 the ``onerror`` callback The ``ignore`` argument allows you to ignore certain modules, packages, or global objects during a scan. It should be a sequence containing strings and/or callables that will be used to match against the full dotted name of each object encountered during a scan. The sequence can contain any of these three types of objects: - A string representing a full dotted name. To name an object by dotted name, use a string representing the full dotted name. For example, if you want to ignore the ``my.package`` package *and any of its subobjects or subpackages* during the scan, pass ``ignore=['my.package']``. - A string representing a relative dotted name. To name an object relative to the ``package`` passed to this method, use a string beginning with a dot. For example, if the ``package`` you've passed is imported as ``my.package``, and you pass ``ignore=['.mymodule']``, the ``my.package.mymodule`` mymodule *and any of its subobjects or subpackages* will be omitted during scan processing. - A callable that accepts a full dotted name string of an object as its single positional argument and returns ``True`` or ``False``. For example, if you want to skip all packages, modules, and global objects with a full dotted path that ends with the word "tests", you can use ``ignore=[re.compile('tests$').search]``. If the callable returns ``True`` (or anything else truthy), the object is ignored, if it returns ``False`` (or anything else falsy) the object is not ignored. *Note that unlike string matches, ignores that use a callable don't cause submodules and subobjects of a module or package represented by a dotted name to also be ignored, they match individual objects found during a scan, including packages, modules, and global objects*. You can mix and match the three types of strings in the list. For example, if the package being scanned is ``my``, ``ignore=['my.package', '.someothermodule', re.compile('tests$').search]`` would cause ``my.package`` (and all its submodules and subobjects) to be ignored, ``my.someothermodule`` to be ignored, and any modules, packages, or global objects found during the scan that have a full dotted name that ends with the word ``tests`` to be ignored. Note that packages and modules matched by any ignore in the list will not be imported, and their top-level code will not be run as a result. A string or callable alone can also be passed as ``ignore`` without a surrounding list. .. versionadded:: 1.0a3 the ``ignore`` argument """ pkg_name = package.__name__ if ignore is not None and ( isinstance(ignore, str) or not hasattr(ignore, "__iter__") ): ignore = [ignore] elif ignore is None: ignore = [] # non-leading-dotted name absolute object name str_ignores = [ign for ign in ignore if isinstance(ign, str)] # leading dotted name relative to scanned package rel_ignores = [ign for ign in str_ignores if ign.startswith(".")] # non-leading dotted names abs_ignores = [ign for ign in str_ignores if not ign.startswith(".")] # functions, e.g. re.compile('pattern').search callable_ignores = [ign for ign in ignore if callable(ign)] def _ignore(fullname): for ign in rel_ignores: if fullname.startswith(pkg_name + ign): return True for ign in abs_ignores: # non-leading-dotted name absolute object name if fullname.startswith(ign): return True for ign in callable_ignores: if ign(fullname): return True return False def invoke(mod_name, name, ob): fullname = mod_name + "." + name if _ignore(fullname): return category_keys = categories try: # Some metaclasses do insane things when asked for an # ``ATTACH_ATTR``, like not raising an AttributeError but # some other arbitary exception. Some even shittier # introspected code lets us access ``ATTACH_ATTR`` far but # barfs on a second attribute access for ``attached_to`` # (still not raising an AttributeError, but some other # arbitrary exception). Finally, the shittiest code of all # allows the attribute access of the ``ATTACH_ATTR`` *and* # ``attached_to``, (say, both ``ob.__getattr__`` and # ``attached_categories.__getattr__`` returning a proxy for # any attribute access), which either a) isn't callable or b) # is callable, but, when called, shits its pants in an # potentially arbitrary way (although for b, only TypeError # has been seen in the wild, from PyMongo). Thus the # catchall except: return here, which in any other case would # be high treason. attached_categories = getattr(ob, ATTACH_ATTR) if not attached_categories.attached_to(mod_name, name, ob): return except: return if category_keys is None: category_keys = list(attached_categories.keys()) try: # When metaclasses return proxies for any attribute access # the list may contain keys of different types which might # not be sortable. In that case we can just return, # because we're not dealing with a proper venusian # callback. category_keys.sort() except TypeError: # pragma: no cover return for category in category_keys: callbacks = attached_categories.get(category, []) try: # Metaclasses might trick us by reaching this far and then # fail with too little values to unpack. for callback, cb_mod_name, liftid, scope in callbacks: if cb_mod_name != mod_name: # avoid processing objects that were imported into # this module but were not actually defined there continue callback(self, name, ob) except ValueError: # pragma: nocover continue for name, ob in getmembers(package): # whether it's a module or a package, we need to scan its # members; walk_packages only iterates over submodules and # subpackages invoke(pkg_name, name, ob) if hasattr(package, "__path__"): # package, not module results = walk_packages( package.__path__, package.__name__ + ".", onerror=onerror, ignore=_ignore, ) for importer, modname, ispkg in results: > loader = importer.find_module(modname) E AttributeError: 'FileFinder' object has no attribute 'find_module' /usr/lib/python3/site-packages/venusian/__init__.py:205: AttributeError =============================== warnings summary =============================== ../../../../lib/python3/site-packages/webob/compat.py:5 /usr/lib/python3/site-packages/webob/compat.py:5: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13 from cgi import parse_header ../../../tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/asset.py:2 /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/asset.py:2: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources ../../../../lib/python3/site-packages/pkg_resources/__init__.py:2868 ../../../../lib/python3/site-packages/pkg_resources/__init__.py:2868 /usr/lib/python3/site-packages/pkg_resources/__init__.py:2868: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('paste')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) ../../../../lib/python3/site-packages/pkg_resources/__init__.py:2868 /usr/lib/python3/site-packages/pkg_resources/__init__.py:2868: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('repoze')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) ../../../../lib/python3/site-packages/pkg_resources/__init__.py:2868 ../../../../lib/python3/site-packages/pkg_resources/__init__.py:2868 /usr/lib/python3/site-packages/pkg_resources/__init__.py:2868: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) tests/test_integration.py:19 /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_integration.py:19: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). fiveyrsfuture = datetime.datetime.utcnow() + datetime.timedelta(5 * 365) tests/test_integration.py:21 /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_integration.py:21: DeprecationWarning: 'locale.getdefaultlocale' is deprecated and slated for removal in Python 3.15. Use setlocale(), getencoding() and getlocale() instead. defaultlocale = locale.getdefaultlocale()[1] tests/test_static.py:8 /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_static.py:8: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). fiveyrsfuture = datetime.datetime.utcnow() + datetime.timedelta(5 * 365) tests/test_authentication.py::TestAuthTktCookieHelper::test_remember_max_age tests/test_authentication.py::TestAuthTktCookieHelper::test_remember_str_max_age /usr/lib/python3/site-packages/webob/cookies.py:238: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). v = datetime.utcnow() + v tests/test_integration.py: 1 warning tests/test_static.py: 20 warnings tests/test_viewderivers.py: 3 warnings tests/test_config/test_views.py: 1 warning /usr/lib/python3/site-packages/webob/response.py:1206: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). self.expires = datetime.utcnow() + timedelta(seconds=seconds) tests/test_integration.py::TestStaticPermApp::test_allowed tests/test_integration.py::TestStaticPermApp::test_allowed_via_acl_global_root_factory tests/test_integration.py::TestStaticPermApp::test_allowed_via_acl_local_root_factory tests/test_integration.py::TestStaticPermApp::test_denied_via_acl_global_root_factory tests/test_integration.py::TestStaticPermApp::test_denied_via_acl_local_root_factory /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/staticpermapp/__init__.py:21: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_integration.py::TestStaticPermApp::test_allowed tests/test_integration.py::TestStaticPermApp::test_allowed_via_acl_global_root_factory tests/test_integration.py::TestStaticPermApp::test_allowed_via_acl_local_root_factory tests/test_integration.py::TestStaticPermApp::test_denied_via_acl_global_root_factory tests/test_integration.py::TestStaticPermApp::test_denied_via_acl_local_root_factory /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/staticpermapp/__init__.py:22: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_integration.py::TestForbiddenAppHasResult::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/forbiddenapp/__init__.py:26: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_integration.py::TestForbiddenAppHasResult::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/forbiddenapp/__init__.py:27: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_integration.py::TestForbiddenView::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/forbiddenview/__init__.py:30: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_integration.py::TestForbiddenView::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/forbiddenview/__init__.py:31: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_integration.py::TestViewPermissionBug::test_test tests/test_integration.py::TestViewPermissionBug::test_x /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/permbugapp/__init__.py:25: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_integration.py::TestViewPermissionBug::test_test tests/test_integration.py::TestViewPermissionBug::test_x /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/permbugapp/__init__.py:26: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_integration.py::TestDefaultViewPermissionBug::test_x tests/test_integration.py::TestDefaultViewPermissionBug::test_y tests/test_integration.py::TestDefaultViewPermissionBug::test_z /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/defpermbugapp/__init__.py:29: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_integration.py::TestDefaultViewPermissionBug::test_x tests/test_integration.py::TestDefaultViewPermissionBug::test_y tests/test_integration.py::TestDefaultViewPermissionBug::test_z /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/defpermbugapp/__init__.py:30: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_integration.py::TestLegacySecurityApp::test_inaccessible tests/test_integration.py::TestLegacySecurityApp::test_private_allowed tests/test_integration.py::TestLegacySecurityApp::test_private_denied tests/test_integration.py::TestLegacySecurityApp::test_public /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/legacysecurityapp/__init__.py:30: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(RemoteUserAuthenticationPolicy()) tests/test_integration.py::TestLegacySecurityApp::test_inaccessible tests/test_integration.py::TestLegacySecurityApp::test_private_allowed tests/test_integration.py::TestLegacySecurityApp::test_private_denied tests/test_integration.py::TestLegacySecurityApp::test_public /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/legacysecurityapp/__init__.py:31: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(AuthorizationPolicy()) tests/test_integration.py::TestConflictApp::test_autoresolved_view tests/test_integration.py::TestConflictApp::test_nonoverridden_authorization_policy tests/test_integration.py::TestConflictApp::test_overridden_authorization_policy tests/test_integration.py::TestConflictApp::test_overridden_autoresolved_view tests/test_integration.py::TestConflictApp::test_overridden_route_view /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/conflictapp/__init__.py:25: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy( tests/test_integration.py::TestConflictApp::test_autoresolved_view tests/test_integration.py::TestConflictApp::test_nonoverridden_authorization_policy tests/test_integration.py::TestConflictApp::test_overridden_authorization_policy tests/test_integration.py::TestConflictApp::test_overridden_autoresolved_view tests/test_integration.py::TestConflictApp::test_overridden_route_view /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/pkgs/conflictapp/__init__.py:28: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(ACLAuthorizationPolicy()) tests/test_integration.py::TestConflictApp::test_overridden_authorization_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_integration.py:701: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(DummySecurityPolicy()) tests/test_predicates.py::Test_EffectivePrincipalsPredicate::test_it_call_authentication_policy_doesnt_provide_superset tests/test_predicates.py::Test_EffectivePrincipalsPredicate::test_it_call_authentication_policy_provides_superset tests/test_predicates.py::Test_EffectivePrincipalsPredicate::test_it_call_authentication_policy_provides_superset_implicit tests/test_predicates.py::Test_EffectivePrincipalsPredicate::test_it_call_no_authentication_policy /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/predicates.py:305: DeprecationWarning: The new security policy has deprecated effective_principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. req_principals = request.effective_principals tests/test_renderers.py::TestJSON::test_with_custom_adapter /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_renderers.py:46: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now = datetime.utcnow() tests/test_renderers.py::TestJSON::test_with_custom_adapter2 /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_renderers.py:60: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now = datetime.utcnow() tests/test_response.py::TestFileResponse::test_python_277_bug_15207 /usr/lib/python3.12/unittest/case.py:589: ResourceWarning: unclosed file <_io.BufferedReader name='/usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/fixtures/minimal.xml'> if method() is not None: Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_security.py::TestAllPermissionsList::test_contains_w_object tests/test_security.py::TestAllPermissionsList::test_contains_w_string tests/test_security.py::TestAllPermissionsList::test_equality_miss tests/test_security.py::TestAllPermissionsList::test_equality_w_other_instances_of_class tests/test_security.py::TestAllPermissionsList::test_equality_w_other_instances_of_class tests/test_security.py::TestAllPermissionsList::test_equality_w_self tests/test_security.py::TestAllPermissionsList::test_iterable tests/test_security.py::TestAllPermissionsList::test_singleton /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:14: DeprecationWarning: AllPermissionsList: "pyramid.security.AllPermissionsList" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.AllPermissionsList" from pyramid.security import AllPermissionsList tests/test_security.py::TestAllPermissionsList::test_singleton /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:48: DeprecationWarning: ALL_PERMISSIONS: "pyramid.security.ALL_PERMISSIONS" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.ALL_PERMISSIONS" from pyramid.security import ALL_PERMISSIONS tests/test_security.py::TestACLAllowed::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:95: DeprecationWarning: ACLAllowed: "pyramid.security.ACLAllowed" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.ACLAllowed" from pyramid.security import ACLAllowed tests/test_security.py::TestACLDenied::test_it /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:124: DeprecationWarning: ACLDenied: "pyramid.security.ACLDenied" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.ACLDenied" from pyramid.security import ACLDenied tests/test_security.py::TestPrincipalsAllowedByPermission::test_no_authorization_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:162: DeprecationWarning: Everyone: "pyramid.security.Everyone" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.Everyone" from pyramid.security import Everyone tests/test_security.py::TestPrincipalsAllowedByPermission::test_no_authorization_policy tests/test_security.py::TestPrincipalsAllowedByPermission::test_with_authorization_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:157: DeprecationWarning: principals_allowed_by_permission: The new security policy has removed the concept of principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. from pyramid.security import principals_allowed_by_permission tests/test_security.py::TestUnAuthenticatedUserId::test_legacy_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:386: DeprecationWarning: The new security policy has deprecated unauthenticated_userid. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.unauthenticated_userid, 'yo') tests/test_security.py::TestUnAuthenticatedUserId::test_no_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:375: DeprecationWarning: The new security policy has deprecated unauthenticated_userid. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.unauthenticated_userid, None) tests/test_security.py::TestUnAuthenticatedUserId::test_security_policy_trumps_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:392: DeprecationWarning: The new security policy has deprecated unauthenticated_userid. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.unauthenticated_userid, 'wat') tests/test_security.py::TestUnAuthenticatedUserId::test_with_security_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:380: DeprecationWarning: The new security policy has deprecated unauthenticated_userid. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.unauthenticated_userid, 'yo') tests/test_security.py::TestEffectivePrincipals::test_legacy_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:442: DeprecationWarning: The new security policy has deprecated effective_principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.effective_principals, 'yo') tests/test_security.py::TestEffectivePrincipals::test_no_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:426: DeprecationWarning: Everyone: "pyramid.security.Everyone" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.Everyone" from pyramid.security import Everyone tests/test_security.py::TestEffectivePrincipals::test_no_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:429: DeprecationWarning: The new security policy has deprecated effective_principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.effective_principals, [Everyone]) tests/test_security.py::TestEffectivePrincipals::test_security_policy_trumps_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:445: DeprecationWarning: Everyone: "pyramid.security.Everyone" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.Everyone" from pyramid.security import Everyone tests/test_security.py::TestEffectivePrincipals::test_security_policy_trumps_authentication_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:450: DeprecationWarning: The new security policy has deprecated effective_principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.effective_principals, [Everyone]) tests/test_security.py::TestEffectivePrincipals::test_with_security_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:432: DeprecationWarning: Everyone: "pyramid.security.Everyone" is deprecated in Pyramid 2.0. Adjust your import to "pyramid.authorization.Everyone" from pyramid.security import Everyone tests/test_security.py::TestEffectivePrincipals::test_with_security_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_security.py:436: DeprecationWarning: The new security policy has deprecated effective_principals. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.assertEqual(request.effective_principals, [Everyone]) tests/test_session.py::TestPickleSerializer::test_dumps tests/test_session.py::TestPickleSerializer::test_loads tests/test_session.py::TestPickleSerializer::test_loads_raises_ValueError_on_bad_import tests/test_session.py::TestPickleSerializer::test_loads_raises_ValueError_on_invalid_data /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_session.py:574: DeprecationWarning: PickleSerializer: pyramid.session.PickleSerializer is deprecated as of Pyramid 2.0 for security concerns. Use pyramid.session.JSONSerializer or reference the narrative documentation for information on building a migration tool. from pyramid.session import PickleSerializer tests/test_viewderivers.py::TestDeriveView::test_http_cached_view_integer /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_viewderivers.py:1207: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). when = datetime.datetime.utcnow() + datetime.timedelta(hours=1) tests/test_viewderivers.py::TestDeriveView::test_http_cached_view_timedelta /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_viewderivers.py:1232: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). when = datetime.datetime.utcnow() + datetime.timedelta(hours=1) tests/test_viewderivers.py::TestDeriveView::test_http_cached_view_tuple /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_viewderivers.py:1257: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). when = datetime.datetime.utcnow() + datetime.timedelta(hours=1) tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authorization_policy_only tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_only tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:405: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.set_authorization_policy(authorization_policy) tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission /usr/src/tmp/python3-module-pyramid-buildroot/usr/lib/python3/site-packages/pyramid/config/__init__.py:408: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. self.set_authentication_policy(authentication_policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:37: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy_autocommit /usr/lib/python3.12/unittest/case.py:238: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. callable_obj(*args, **kwargs) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:59: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy_autocommit /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:80: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_security_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:31: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authentication_policy(authn_policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:92: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy_autocommit /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:100: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:115: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy_autocommit /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_security.py:131: DeprecationWarning: Authentication and authorization policies have been deprecated in favor of security policies. See "Upgrading Authentication/Authorization" in "What's New in Pyramid 2.0" of the documentation for more information. config.set_authorization_policy(authz_policy) tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_http_cache /usr/src/RPM/BUILD/python3-module-pyramid-2.0.2/tests/test_config/test_views.py:318: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). when = datetime.datetime.utcnow() + datetime.timedelta(days=1) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_integration.py::TestViewDecoratorApp::test_first - Attribut... FAILED tests/test_integration.py::TestViewDecoratorApp::test_second - Attribu... FAILED tests/test_integration.py::SelfScanAppTest::test_root - AttributeError... FAILED tests/test_integration.py::SelfScanAppTest::test_two - AttributeError:... FAILED tests/test_integration.py::RendererScanAppTest::test_rescan - Attribut... FAILED tests/test_integration.py::RendererScanAppTest::test_root - AttributeE... FAILED tests/test_integration.py::RendererScanAppTest::test_two - AttributeEr... FAILED tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration FAILED tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_conflict FAILED tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_dottedname_package FAILED tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_ignore FAILED tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_onerror ================ 12 failed, 2623 passed, 141 warnings in 7.04s ================= error: Bad exit status from /usr/src/tmp/rpm-tmp.4539 (%check) RPM build errors: Bad exit status from /usr/src/tmp/rpm-tmp.4539 (%check) Command exited with non-zero status 1 8.33user 0.87system 0:09.24elapsed 99%CPU (0avgtext+0avgdata 57592maxresident)k 0inputs+0outputs (0major+122941minor)pagefaults 0swaps hsh-rebuild: rebuild of `python3-module-pyramid-2.0.2-alt1.src.rpm' failed. Command exited with non-zero status 1 6.35user 1.78system 0:24.39elapsed 33%CPU (0avgtext+0avgdata 124932maxresident)k 144inputs+0outputs (0major+358739minor)pagefaults 0swaps