==> Building on glalie ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/python-aiosmtpd ./ .SRCINFO 1,272 100% 0.00kB/s 0:00:00 1,272 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=3/5) .nvchecker.toml 52 100% 50.78kB/s 0:00:00 52 100% 50.78kB/s 0:00:00 (xfr#2, to-chk=2/5) PKGBUILD 1,879 100% 1.79MB/s 0:00:00 1,879 100% 1.79MB/s 0:00:00 (xfr#3, to-chk=1/5) python-aiosmtpd-1.4.6-2.log 495 100% 483.40kB/s 0:00:00 495 100% 483.40kB/s 0:00:00 (xfr#4, to-chk=0/5) sent 2,317 bytes received 142 bytes 4,918.00 bytes/sec total size is 3,396 speedup is 1.38 ==> Running extra-riscv64-build -- -d /home/felix/packages/riscv64-pkg-cache:/var/cache/pacman/pkg -l root37 on remote host... ]2;🔵 Container arch-nspawn-1907842 on glalie.felixc.at[?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [root37]...done ==> Making package: python-aiosmtpd 1.4.6-2 (Mon Dec 30 14:16:36 2024) ==> Retrieving sources...  -> Downloading aiosmtpd-1.4.6.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 150k 0 150k 0 0 99660 0 --:--:-- 0:00:01 --:--:-- 279k  -> Downloading fix-python-3.13.patch... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3830 100 3830 0 0 5789 0 --:--:-- --:--:-- --:--:-- 5794 ==> Validating source files with sha512sums... aiosmtpd-1.4.6.tar.gz ... Passed fix-python-3.13.patch ... Passed ==> Validating source files with b2sums... aiosmtpd-1.4.6.tar.gz ... Passed fix-python-3.13.patch ... Passed ]2;🔵 Container arch-nspawn-1909122 on glalie.felixc.at==> Making package: python-aiosmtpd 1.4.6-2 (Mon Dec 30 14:17:05 2024) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (4) New Version Net Change Download Size extra/mpdecimal 4.0.0-2 0.29 MiB core/python 3.13.1-1 108.57 MiB extra/python-atpublic 5.0-2 0.02 MiB 0.01 MiB extra/python-attrs 23.2.0-4 0.54 MiB Total Download Size: 0.01 MiB Total Installed Size: 109.42 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-atpublic-5.0-2-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing mpdecimal... installing python... Optional dependencies for python python-setuptools: for building Python packages using tooling that is usually bundled with Python python-pip: for installing Python packages using tooling that is usually bundled with Python python-pipx: for installing Python software not packaged on Arch Linux sqlite: for a default database integration [installed] xz: for lzma [installed] tk: for tkinter installing python-atpublic... installing python-attrs... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (18) New Version Net Change extra/python-autocommand 2.2.2-7 0.08 MiB extra/python-iniconfig 2.0.0-6 0.04 MiB extra/python-jaraco.collections 5.0.1-2 0.10 MiB extra/python-jaraco.context 5.3.0-3 0.04 MiB extra/python-jaraco.functools 4.1.0-1 0.07 MiB extra/python-jaraco.text 4.0.0-2 0.08 MiB extra/python-more-itertools 10.5.0-1 0.64 MiB extra/python-packaging 24.2-3 0.66 MiB extra/python-platformdirs 4.3.6-2 0.24 MiB extra/python-pluggy 1.5.0-3 0.20 MiB extra/python-pyproject-hooks 1.2.0-3 0.10 MiB extra/python-build 1.2.2-3 0.20 MiB extra/python-installer 0.7.0-10 0.17 MiB extra/python-pytest 1:8.3.4-1 3.92 MiB extra/python-pytest-asyncio 0.24.0-2 0.15 MiB extra/python-pytest-mock 3.14.0-2 0.09 MiB extra/python-setuptools 1:75.2.0-4 8.05 MiB extra/python-wheel 0.45.0-3 0.28 MiB Total Installed Size: 15.12 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-packaging... installing python-pyproject-hooks... installing python-build... Optional dependencies for python-build python-pip: to use as the Python package installer (default) python-uv: to use as the Python package installer python-virtualenv: to use virtualenv for build isolation installing python-installer... installing python-more-itertools... installing python-jaraco.functools... installing python-jaraco.context... installing python-autocommand... installing python-jaraco.text... Optional dependencies for python-jaraco.text python-inflect: for show-newlines script installing python-jaraco.collections... installing python-platformdirs... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures python-setuptools: for legacy bdist_wheel subcommand [pending] installing python-setuptools... installing python-iniconfig... installing python-pluggy... installing python-pytest... installing python-pytest-asyncio... installing python-pytest-mock... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... [?25h==> Retrieving sources...  -> Found aiosmtpd-1.4.6.tar.gz  -> Found fix-python-3.13.patch ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Extracting aiosmtpd-1.4.6.tar.gz with bsdtar ==> Starting prepare()... patching file .github/workflows/ci-cd.yml patching file aiosmtpd/docs/NEWS.rst patching file aiosmtpd/tests/test_server.py patching file setup.cfg patching file tox.ini ==> Starting build()... * Getting build dependencies for wheel... * Building wheel... running bdist_wheel running build running build_py creating build/lib/aiosmtpd copying aiosmtpd/main.py -> build/lib/aiosmtpd copying aiosmtpd/smtp.py -> build/lib/aiosmtpd copying aiosmtpd/__init__.py -> build/lib/aiosmtpd copying aiosmtpd/__main__.py -> build/lib/aiosmtpd copying aiosmtpd/lmtp.py -> build/lib/aiosmtpd copying aiosmtpd/controller.py -> build/lib/aiosmtpd copying aiosmtpd/handlers.py -> build/lib/aiosmtpd copying aiosmtpd/proxy_protocol.py -> build/lib/aiosmtpd creating build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_smtp.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_misc.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/__init__.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_lmtp.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_smtpsmuggling.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_proxyprotocol.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_main.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_starttls.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_smtps.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_handlers.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/conftest.py -> build/lib/aiosmtpd/tests copying aiosmtpd/tests/test_server.py -> build/lib/aiosmtpd/tests creating build/lib/aiosmtpd/qa copying aiosmtpd/qa/__init__.py -> build/lib/aiosmtpd/qa copying aiosmtpd/qa/test_0packaging.py -> build/lib/aiosmtpd/qa copying aiosmtpd/qa/test_1testsuite.py -> build/lib/aiosmtpd/qa creating build/lib/aiosmtpd/testing copying aiosmtpd/testing/__init__.py -> build/lib/aiosmtpd/testing copying aiosmtpd/testing/helpers.py -> build/lib/aiosmtpd/testing copying aiosmtpd/testing/statuscodes.py -> build/lib/aiosmtpd/testing creating build/lib/aiosmtpd/docs copying aiosmtpd/docs/__init__.py -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/conf.py -> build/lib/aiosmtpd/docs creating build/lib/aiosmtpd/tests/certs copying aiosmtpd/tests/certs/__init__.py -> build/lib/aiosmtpd/tests/certs running egg_info creating aiosmtpd.egg-info writing aiosmtpd.egg-info/PKG-INFO writing dependency_links to aiosmtpd.egg-info/dependency_links.txt writing entry points to aiosmtpd.egg-info/entry_points.txt writing requirements to aiosmtpd.egg-info/requires.txt writing top-level names to aiosmtpd.egg-info/top_level.txt writing manifest file 'aiosmtpd.egg-info/SOURCES.txt' reading manifest file 'aiosmtpd.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.py[oc]' found anywhere in distribution warning: no previously-included files matching '*.sw[a-p]' found anywhere in distribution warning: no previously-included files matching 'pyvenv.cfg' found anywhere in distribution adding license file 'LICENSE' adding license file 'NOTICE' writing manifest file 'aiosmtpd.egg-info/SOURCES.txt' /usr/lib/python3.13/site-packages/setuptools/command/build_py.py:218: _Warning: Package 'aiosmtpd.docs._exts' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'aiosmtpd.docs._exts' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'aiosmtpd.docs._exts' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'aiosmtpd.docs._exts' to be distributed and are already explicitly excluding 'aiosmtpd.docs._exts' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.13/site-packages/setuptools/command/build_py.py:218: _Warning: Package 'aiosmtpd.docs._static' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'aiosmtpd.docs._static' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'aiosmtpd.docs._static' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'aiosmtpd.docs._static' to be distributed and are already explicitly excluding 'aiosmtpd.docs._static' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) copying aiosmtpd/py.typed -> build/lib/aiosmtpd copying aiosmtpd/docs/.gitignore -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/Makefile -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/NEWS.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/auth.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/cli.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/concepts.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/controller.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/handlers.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/index.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/intro.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/lmtp.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/manpage.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/migrating.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/proxyprotocol.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/requirements.txt -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/smtp.rst -> build/lib/aiosmtpd/docs copying aiosmtpd/docs/testing.rst -> build/lib/aiosmtpd/docs creating build/lib/aiosmtpd/docs/_exts copying aiosmtpd/docs/_exts/autoprogramm.py -> build/lib/aiosmtpd/docs/_exts creating build/lib/aiosmtpd/docs/_static copying aiosmtpd/docs/_static/aiosmtpd.css -> build/lib/aiosmtpd/docs/_static copying aiosmtpd/tests/certs/server.crt -> build/lib/aiosmtpd/tests/certs copying aiosmtpd/tests/certs/server.key -> build/lib/aiosmtpd/tests/certs copying aiosmtpd/tests/certs/server_alt.crt -> build/lib/aiosmtpd/tests/certs copying aiosmtpd/tests/certs/server_alt.key -> build/lib/aiosmtpd/tests/certs installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/aiosmtpd copying build/lib/aiosmtpd/main.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd creating build/bdist.linux-riscv64/wheel/aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_smtp.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_misc.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_lmtp.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_smtpsmuggling.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_proxyprotocol.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_main.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_starttls.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_smtps.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_handlers.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/conftest.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests copying build/lib/aiosmtpd/tests/test_server.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests creating build/bdist.linux-riscv64/wheel/aiosmtpd/tests/certs copying build/lib/aiosmtpd/tests/certs/server_alt.key -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests/certs copying build/lib/aiosmtpd/tests/certs/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests/certs copying build/lib/aiosmtpd/tests/certs/server.crt -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests/certs copying build/lib/aiosmtpd/tests/certs/server_alt.crt -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests/certs copying build/lib/aiosmtpd/tests/certs/server.key -> build/bdist.linux-riscv64/wheel/./aiosmtpd/tests/certs copying build/lib/aiosmtpd/smtp.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd copying build/lib/aiosmtpd/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd copying build/lib/aiosmtpd/__main__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd creating build/bdist.linux-riscv64/wheel/aiosmtpd/qa copying build/lib/aiosmtpd/qa/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/qa copying build/lib/aiosmtpd/qa/test_0packaging.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/qa copying build/lib/aiosmtpd/qa/test_1testsuite.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/qa creating build/bdist.linux-riscv64/wheel/aiosmtpd/testing copying build/lib/aiosmtpd/testing/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/testing copying build/lib/aiosmtpd/testing/helpers.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/testing copying build/lib/aiosmtpd/testing/statuscodes.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/testing copying build/lib/aiosmtpd/py.typed -> build/bdist.linux-riscv64/wheel/./aiosmtpd creating build/bdist.linux-riscv64/wheel/aiosmtpd/docs copying build/lib/aiosmtpd/docs/controller.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/__init__.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/cli.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs creating build/bdist.linux-riscv64/wheel/aiosmtpd/docs/_static copying build/lib/aiosmtpd/docs/_static/aiosmtpd.css -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs/_static copying build/lib/aiosmtpd/docs/NEWS.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/proxyprotocol.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/.gitignore -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/intro.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs creating build/bdist.linux-riscv64/wheel/aiosmtpd/docs/_exts copying build/lib/aiosmtpd/docs/_exts/autoprogramm.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs/_exts copying build/lib/aiosmtpd/docs/smtp.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/concepts.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/testing.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/migrating.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/conf.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/auth.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/index.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/lmtp.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/handlers.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/manpage.rst -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/requirements.txt -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/docs/Makefile -> build/bdist.linux-riscv64/wheel/./aiosmtpd/docs copying build/lib/aiosmtpd/lmtp.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd copying build/lib/aiosmtpd/controller.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd copying build/lib/aiosmtpd/handlers.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd copying build/lib/aiosmtpd/proxy_protocol.py -> build/bdist.linux-riscv64/wheel/./aiosmtpd running install_egg_info Copying aiosmtpd.egg-info to build/bdist.linux-riscv64/wheel/./aiosmtpd-1.4.6-py3.13.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/aiosmtpd-1.4.6.dist-info/WHEEL creating '/build/python-aiosmtpd/src/aiosmtpd-1.4.6/dist/.tmp-v574v4th/aiosmtpd-1.4.6-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'aiosmtpd/__init__.py' adding 'aiosmtpd/__main__.py' adding 'aiosmtpd/controller.py' adding 'aiosmtpd/handlers.py' adding 'aiosmtpd/lmtp.py' adding 'aiosmtpd/main.py' adding 'aiosmtpd/proxy_protocol.py' adding 'aiosmtpd/py.typed' adding 'aiosmtpd/smtp.py' adding 'aiosmtpd/docs/.gitignore' adding 'aiosmtpd/docs/Makefile' adding 'aiosmtpd/docs/NEWS.rst' adding 'aiosmtpd/docs/__init__.py' adding 'aiosmtpd/docs/auth.rst' adding 'aiosmtpd/docs/cli.rst' adding 'aiosmtpd/docs/concepts.rst' adding 'aiosmtpd/docs/conf.py' adding 'aiosmtpd/docs/controller.rst' adding 'aiosmtpd/docs/handlers.rst' adding 'aiosmtpd/docs/index.rst' adding 'aiosmtpd/docs/intro.rst' adding 'aiosmtpd/docs/lmtp.rst' adding 'aiosmtpd/docs/manpage.rst' adding 'aiosmtpd/docs/migrating.rst' adding 'aiosmtpd/docs/proxyprotocol.rst' adding 'aiosmtpd/docs/requirements.txt' adding 'aiosmtpd/docs/smtp.rst' adding 'aiosmtpd/docs/testing.rst' adding 'aiosmtpd/docs/_exts/autoprogramm.py' adding 'aiosmtpd/docs/_static/aiosmtpd.css' adding 'aiosmtpd/qa/__init__.py' adding 'aiosmtpd/qa/test_0packaging.py' adding 'aiosmtpd/qa/test_1testsuite.py' adding 'aiosmtpd/testing/__init__.py' adding 'aiosmtpd/testing/helpers.py' adding 'aiosmtpd/testing/statuscodes.py' adding 'aiosmtpd/tests/__init__.py' adding 'aiosmtpd/tests/conftest.py' adding 'aiosmtpd/tests/test_handlers.py' adding 'aiosmtpd/tests/test_lmtp.py' adding 'aiosmtpd/tests/test_main.py' adding 'aiosmtpd/tests/test_misc.py' adding 'aiosmtpd/tests/test_proxyprotocol.py' adding 'aiosmtpd/tests/test_server.py' adding 'aiosmtpd/tests/test_smtp.py' adding 'aiosmtpd/tests/test_smtps.py' adding 'aiosmtpd/tests/test_smtpsmuggling.py' adding 'aiosmtpd/tests/test_starttls.py' adding 'aiosmtpd/tests/certs/__init__.py' adding 'aiosmtpd/tests/certs/server.crt' adding 'aiosmtpd/tests/certs/server.key' adding 'aiosmtpd/tests/certs/server_alt.crt' adding 'aiosmtpd/tests/certs/server_alt.key' adding 'aiosmtpd-1.4.6.dist-info/LICENSE' adding 'aiosmtpd-1.4.6.dist-info/METADATA' adding 'aiosmtpd-1.4.6.dist-info/NOTICE' adding 'aiosmtpd-1.4.6.dist-info/WHEEL' adding 'aiosmtpd-1.4.6.dist-info/entry_points.txt' adding 'aiosmtpd-1.4.6.dist-info/top_level.txt' adding 'aiosmtpd-1.4.6.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built aiosmtpd-1.4.6-py3-none-any.whl ==> Starting check()... /usr/lib/python3.13/site-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /build/python-aiosmtpd/src/aiosmtpd-1.4.6 configfile: pytest.ini testpaths: aiosmtpd/tests/, aiosmtpd/qa/ plugins: mock-3.14.0, asyncio-0.24.0 asyncio: mode=Mode.AUTO, default_loop_scope=None collecting ... collected 566 items / 1 deselected / 565 selected aiosmtpd/tests/test_handlers.py::TestDebugging::test_debugging PASSED [ 0%] aiosmtpd/tests/test_handlers.py::TestDebugging::test_debugging_bytes PASSED [ 0%] aiosmtpd/tests/test_handlers.py::TestDebugging::test_debugging_without_options PASSED [ 0%] aiosmtpd/tests/test_handlers.py::TestDebugging::test_debugging_with_options PASSED [ 0%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message[bytes] PASSED [ 0%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message[bytearray] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message[str] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message_err[None] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message_err[List] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message_err[Dict] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_prepare_message_err[Tuple] PASSED [ 1%] aiosmtpd/tests/test_handlers.py::TestMessage::test_message PASSED [ 2%] aiosmtpd/tests/test_handlers.py::TestMessage::test_message_decoded PASSED [ 2%] aiosmtpd/tests/test_handlers.py::TestMessage::test_message_async PASSED [ 2%] aiosmtpd/tests/test_handlers.py::TestMessage::test_message_decoded_async PASSED [ 2%] aiosmtpd/tests/test_handlers.py::TestMailbox::test_mailbox PASSED [ 2%] aiosmtpd/tests/test_handlers.py::TestMailbox::test_mailbox_reset PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_debugging_no_args PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_debugging_two_args PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_debugging_stdout PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_debugging_stderr PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_debugging_bad_argument PASSED [ 3%] aiosmtpd/tests/test_handlers.py::TestCLI::test_sink_no_args PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestCLI::test_sink_any_args PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestCLI::test_mailbox_no_args PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestCLI::test_mailbox_too_many_args PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestCLI::test_mailbox PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestProxy::test_deliver_bytes PASSED [ 4%] aiosmtpd/tests/test_handlers.py::TestProxy::test_deliver_str PASSED [ 5%] aiosmtpd/tests/test_handlers.py::TestProxyMocked::test_recipients_refused PASSED [ 5%] aiosmtpd/tests/test_handlers.py::TestProxyMocked::test_oserror PASSED [ 5%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_HELO PASSED [ 5%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_EHLO_deprecated PASSED [ 5%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_EHLO_deprecated_warning PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_EHLO_new PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_EHLO_incompat[TooShort] PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_EHLO_incompat[TooLong] PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_MAIL PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_RCPT PASSED [ 6%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_DATA PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_AUTH PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestHooks::test_hook_NoHooks PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestDeprecation::test_process_message PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestDeprecation::test_process_message_async PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestDeprecation::test_ehlo_hook PASSED [ 7%] aiosmtpd/tests/test_handlers.py::TestDeprecation::test_rset_hook PASSED [ 8%] aiosmtpd/tests/test_lmtp.py::test_lhlo PASSED [ 8%] aiosmtpd/tests/test_lmtp.py::test_helo PASSED [ 8%] aiosmtpd/tests/test_lmtp.py::test_ehlo PASSED [ 8%] aiosmtpd/tests/test_lmtp.py::test_help PASSED [ 8%] aiosmtpd/tests/test_main.py::TestMain::test_setuid PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_setuid_permission_error PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_setuid_no_pwd_module PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_n PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_nosetuid PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_debug_0 PASSED [ 9%] aiosmtpd/tests/test_main.py::TestMain::test_debug_1 PASSED [ 10%] aiosmtpd/tests/test_main.py::TestMain::test_debug_2 PASSED [ 10%] aiosmtpd/tests/test_main.py::TestMain::test_debug_3 PASSED [ 10%] aiosmtpd/tests/test_main.py::TestMainByWatcher::test_tls PASSED [ 10%] aiosmtpd/tests/test_main.py::TestMainByWatcher::test_tls_noreq PASSED [ 10%] aiosmtpd/tests/test_main.py::TestMainByWatcher::test_smtps PASSED [ 10%] aiosmtpd/tests/test_main.py::TestParseArgs::test_defaults PASSED [ 11%] aiosmtpd/tests/test_main.py::TestParseArgs::test_handler_from_cli PASSED [ 11%] aiosmtpd/tests/test_main.py::TestParseArgs::test_handler_no_from_cli PASSED [ 11%] aiosmtpd/tests/test_main.py::TestParseArgs::test_handler_from_cli_exception PASSED [ 11%] aiosmtpd/tests/test_main.py::TestParseArgs::test_handler_no_from_cli_exception PASSED [ 11%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args0-localhost-8025] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args1-foo-25] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args2-foo-25] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args3-foo-8025] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args4-localhost-25] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_host_port[args5-::0-25] PASSED [ 12%] aiosmtpd/tests/test_main.py::TestParseArgs::test_bad_port_number PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_version[--version] PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_version[-v] PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_smtps[args0] PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_smtps[args1] PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_tls[args0] PASSED [ 13%] aiosmtpd/tests/test_main.py::TestParseArgs::test_tls[args1] PASSED [ 14%] aiosmtpd/tests/test_main.py::TestParseArgs::test_norequiretls PASSED [ 14%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[smtps-x-x] PASSED [ 14%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[smtps-cert-x] PASSED [ 14%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[smtps-x-key] PASSED [ 14%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[tls-x-x] PASSED [ 15%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[tls-cert-x] PASSED [ 15%] aiosmtpd/tests/test_main.py::TestParseArgs::test_ssl_files_err[tls-x-key] PASSED [ 15%] aiosmtpd/tests/test_main.py::TestSigint::test_keyboard_interrupt PASSED [ 15%] aiosmtpd/tests/test_misc.py::TestInit::test_create_new_if_none PASSED [ 15%] aiosmtpd/tests/test_misc.py::TestInit::test_not_create_new_if_exist PASSED [ 15%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_invalid_version PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_invalid_error PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_invalid_protocol PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_mismatch PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_mismatch_raises PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_unsetkey PASSED [ 16%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_unknownkey PASSED [ 17%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_unknownkey_raises PASSED [ 17%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_tlv_none PASSED [ 17%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_tlv_fake PASSED [ 17%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyData::test_tlv_1 PASSED [ 17%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_1 PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_1_ne PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_1_ne_raises PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_2 PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[1-ALPN] PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[2-AUTHORITY] PASSED [ 18%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[3-CRC32C] PASSED [ 19%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[4-NOOP] PASSED [ 19%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[5-UNIQUE_ID] PASSED [ 19%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[32-SSL] PASSED [ 19%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[33-SSL_VERSION] PASSED [ 19%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[34-SSL_CN] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[35-SSL_CIPHER] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[36-SSL_SIG_ALG] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[37-SSL_KEY_ALG] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[48-NETNS] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_backmap[None-wrongname] PASSED [ 20%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_parse_partial PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_unknowntype_notstrict PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_unknowntype_strict PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_malformed_ssl_partialok PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_malformed_ssl_notpartialok PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestProxyTLV::test_eq PASSED [ 21%] aiosmtpd/tests/test_proxyprotocol.py::TestModule::test_get[v1] PASSED [ 22%] aiosmtpd/tests/test_proxyprotocol.py::TestModule::test_get[v2] PASSED [ 22%] aiosmtpd/tests/test_proxyprotocol.py::TestModule::test_get_cut_v1 PASSED [ 22%] aiosmtpd/tests/test_proxyprotocol.py::TestModule::test_get_cut_v2 PASSED [ 22%] aiosmtpd/tests/test_proxyprotocol.py::TestModule::test_get_invalid_sig PASSED [ 22%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_value_error[-1] PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_value_error[-1.0] PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_value_error[0] PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_value_error[0.0] PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_lt_3 PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_ge_3[3] PASSED [ 23%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_ge_3[3.0] PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_ge_3[4] PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestSMTPInit::test_ge_3[4.0] PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_noproxy PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[joaoreis81] PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[haproxydoc] PASSED [ 24%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[cloudflare4] PASSED [ 25%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[cloudflare6] PASSED [ 25%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[avinetworks] PASSED [ 25%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_valid_patterns[googlecloud] PASSED [ 25%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_tcp4 PASSED [ 25%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_tcp4_random PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_tcp6_shortened PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_tcp6_random PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_unknown PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_unknown_short PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_invalid_sig PASSED [ 26%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_unsupported_family PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_unsupported_proto PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_too_long PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_nocr PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_notproxy PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_wrongtype_64 PASSED [ 27%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_wrongtype_46 PASSED [ 28%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_wrongtype_6mixed PASSED [ 28%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[zeroleader] PASSED [ 28%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[space1] PASSED [ 28%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[space2] PASSED [ 28%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[space3] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[space4] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[addr6s] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr[addr6d] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_extra[space] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_extra[sptext] PASSED [ 29%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_malformed_addr4 PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_ports_oob PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV1::test_portd_oob PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_1 PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNSPEC_empty PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNSPEC_notempty PASSED [ 30%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET4[1-] PASSED [ 31%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET4[1-fake_tlv] PASSED [ 31%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET4[2-] PASSED [ 31%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET4[2-fake_tlv] PASSED [ 31%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET6[1-] PASSED [ 31%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET6[1-fake_tlv] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET6[2-] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_INET6[2-fake_tlv] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNIX[1-] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNIX[1-fake_tlv] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNIX[2-] PASSED [ 32%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_UNIX[2-fake_tlv] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_fallback_UNSPEC[0-1] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_fallback_UNSPEC[0-2] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_fallback_UNSPEC[1-0] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_fallback_UNSPEC[2-0] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_fallback_UNSPEC[3-0] PASSED [ 33%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_invalid_sig PASSED [ 34%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_illegal_ver PASSED [ 34%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_unsupported_cmd PASSED [ 34%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_unsupported_fam PASSED [ 34%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_unsupported_proto PASSED [ 34%] aiosmtpd/tests/test_proxyprotocol.py::TestGetV2::test_wrong_proto_6shouldbe4 PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_okay[v1] PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_okay[v2] PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_hiccup[v1] PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_hiccup[v2] PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_timeout[v1] PASSED [ 35%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_timeout[v2] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_incomplete[v1] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestWithController::test_incomplete[v2] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestHandlerAcceptReject::test_simple[v1-True] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestHandlerAcceptReject::test_simple[v1-False] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestHandlerAcceptReject::test_simple[v2-True] PASSED [ 36%] aiosmtpd/tests/test_proxyprotocol.py::TestHandlerAcceptReject::test_simple[v2-False] PASSED [ 37%] aiosmtpd/tests/test_server.py::TestServer::test_smtp_utf8 PASSED [ 37%] aiosmtpd/tests/test_server.py::TestServer::test_default_max_command_size_limit PASSED [ 37%] aiosmtpd/tests/test_server.py::TestServer::test_special_max_command_size_limit PASSED [ 37%] aiosmtpd/tests/test_server.py::TestServer::test_warn_authreq_notls PASSED [ 37%] aiosmtpd/tests/test_server.py::TestController::test_ready_timeout PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_factory_timeout PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_reuse_loop PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_socket_error_dupe PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_socket_error_default PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_server_attribute PASSED [ 38%] aiosmtpd/tests/test_server.py::TestController::test_enablesmtputf8_flag PASSED [ 39%] aiosmtpd/tests/test_server.py::TestController::test_serverhostname_arg PASSED [ 39%] aiosmtpd/tests/test_server.py::TestController::test_hostname_empty PASSED [ 39%] aiosmtpd/tests/test_server.py::TestController::test_hostname_none PASSED [ 39%] aiosmtpd/tests/test_server.py::TestController::test_testconn_raises PASSED [ 39%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost PASSED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_noipv6 PASSED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6yes PASSED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6no[99] PASSED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6no[97] PASSED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6inuse FAILED [ 40%] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_error PASSED [ 41%] aiosmtpd/tests/test_server.py::TestController::test_stop_default PASSED [ 41%] aiosmtpd/tests/test_server.py::TestController::test_stop_assert PASSED [ 41%] aiosmtpd/tests/test_server.py::TestController::test_stop_noassert PASSED [ 41%] aiosmtpd/tests/test_server.py::TestUnixSocketController::test_server_creation PASSED [ 41%] aiosmtpd/tests/test_server.py::TestUnixSocketController::test_server_creation_ssl PASSED [ 41%] aiosmtpd/tests/test_server.py::TestUnthreaded::test_unixsocket PASSED [ 42%] aiosmtpd/tests/test_server.py::TestUnthreaded::test_inet_loopstop PASSED [ 42%] aiosmtpd/tests/test_server.py::TestUnthreaded::test_inet_contstop PASSED [ 42%] aiosmtpd/tests/test_server.py::TestFactory::test_normal_situation SKIPPED [ 42%] aiosmtpd/tests/test_server.py::TestFactory::test_unknown_args_direct SKIPPED [ 42%] aiosmtpd/tests/test_server.py::TestFactory::test_unknown_args_inkwargs SKIPPED [ 43%] aiosmtpd/tests/test_server.py::TestFactory::test_factory_none SKIPPED [ 43%] aiosmtpd/tests/test_server.py::TestFactory::test_noexc_smtpd_missing SKIPPED [ 43%] aiosmtpd/tests/test_server.py::TestCompat::test_version PASSED [ 43%] aiosmtpd/tests/test_smtp.py::TestProtocol::test_honors_mail_delimiters PASSED [ 43%] aiosmtpd/tests/test_smtp.py::TestProtocol::test_empty_email PASSED [ 43%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_binary[\x80FAIL\r\n] PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_binary[\x80 FAIL\r\n] PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_close_then_continue PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_no_hostname PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_duplicate PASSED [ 44%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo PASSED [ 45%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_duplicate PASSED [ 45%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_no_hostname PASSED [ 45%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_then_ehlo PASSED [ 45%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_then_helo PASSED [ 45%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_noop PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_noop_with_arg PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_quit PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_quit_with_args PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[HELO] PASSED [ 46%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[EHLO] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[MAIL] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[RCPT] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[DATA] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[RSET] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[NOOP] PASSED [ 47%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[QUIT] PASSED [ 48%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[VRFY] PASSED [ 48%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[AUTH] PASSED [ 48%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_esmtp[MAIL] PASSED [ 48%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_esmtp[RCPT] PASSED [ 48%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_bad_arg PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_expn PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[MAIL] PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[RCPT] PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[DATA] PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[0] PASSED [ 49%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[1] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[2] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[3] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[4] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[5] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[6] PASSED [ 50%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[7] PASSED [ 51%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[8] PASSED [ 51%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[9] PASSED [ 51%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[10] PASSED [ 51%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[11] PASSED [ 51%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[12] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[13] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[14] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[15] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[16] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[17] PASSED [ 52%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[18] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[19] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[20] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[21] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[22] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[23] PASSED [ 53%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[24] PASSED [ 54%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[25] PASSED [ 54%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[26] PASSED [ 54%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[27] PASSED [ 54%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[28] PASSED [ 54%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[29] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[30] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[31] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[32] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[33] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[34] PASSED [ 55%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[35] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[36] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[37] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[38] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[39] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[noarg] PASSED [ 56%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[nofrom] PASSED [ 57%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[noaddr] PASSED [ 57%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[params_noesmtp] PASSED [ 57%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[malformed] PASSED [ 57%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[norm] PASSED [ 57%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[extralead] PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[extratail] PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_from_twice PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[malformed] PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[missing] PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[badsyntax] PASSED [ 58%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[space] PASSED [ 59%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_params_unrecognized PASSED [ 59%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_bpo27931fix_smtp PASSED [ 59%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_invalid_address[0] PASSED [ 59%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_invalid_address[1] PASSED [ 59%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_invalid_address[0] PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_invalid_address[1] PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_no_mail PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noarg] PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noto] PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noaddr] PASSED [ 60%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[params] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[malformed] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noarg] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noto] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noaddr] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[badparams] PASSED [ 61%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[malformed] PASSED [ 62%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_unknown_params PASSED [ 62%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[0] PASSED [ 62%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[1] PASSED [ 62%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[2] PASSED [ 62%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[3] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[4] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[5] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[6] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[7] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[8] PASSED [ 63%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[9] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[10] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[11] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[12] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[13] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[14] PASSED [ 64%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[15] PASSED [ 65%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[16] PASSED [ 65%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[17] PASSED [ 65%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[18] PASSED [ 65%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[19] PASSED [ 65%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[20] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[21] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[22] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[23] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[24] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[25] PASSED [ 66%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[26] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[27] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[28] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[29] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[30] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[31] PASSED [ 67%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[32] PASSED [ 68%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[33] PASSED [ 68%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[34] PASSED [ 68%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[35] PASSED [ 68%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[36] PASSED [ 68%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[37] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[38] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[39] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[40] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[41] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[42] PASSED [ 69%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_invalid_address[0] PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_invalid_address[1] PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_bpo27931fix_esmtp PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rset PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rset_with_arg PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy PASSED [ 70%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy_no_arg PASSED [ 71%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy_not_address PASSED [ 71%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_no_rcpt PASSED [ 71%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_354 PASSED [ 71%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_invalid_params PASSED [ 71%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_empty_command PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_too_long_command PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_way_too_long_command PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTP::test_unknown_command PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTPNonDecoding::test_mail_invalid_body_param PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_no_ehlo PASSED [ 72%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_helo PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_not_enough_values PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_already_authenticated PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_auth_individually PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_rset_maintain_authenticated PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_auth_loginteract_warning PASSED [ 73%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_ehlo PASSED [ 74%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[GSSAPI] PASSED [ 74%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[DIGEST-MD5] PASSED [ 74%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[MD5] PASSED [ 74%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[CRAM-MD5] PASSED [ 74%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_custom_mechanism PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_disabled_mechanism PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[login-True] PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[login-False] PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[plain-True] PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[plain-False] PASSED [ 75%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_base64_encoding PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_base64_length PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_too_many_values PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_username PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_password PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_empty PASSED [ 76%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_good_credentials PASSED [ 77%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_goodcreds_sanitized_log PASSED [ 77%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_good_credentials PASSED [ 77%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_bad_credentials PASSED [ 77%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_no_credentials PASSED [ 77%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_abort PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_bad_base64_encoding PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login2_bad_base64 PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login2_good_credentials PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_good_credentials PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_base64 PASSED [ 78%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_username PASSED [ 79%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_password PASSED [ 79%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_empty_credentials PASSED [ 79%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_abort_username PASSED [ 79%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_abort_password PASSED [ 79%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_DENYFALSE PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_DENYMISSING PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_NONE PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestAuthenticator::test_success PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestAuthenticator::test_fail_withmesg PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_help_unauthenticated PASSED [ 80%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_help_authenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_vrfy_unauthenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_mail_unauthenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_rcpt_unauthenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_rcpt_nomail_authenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_unauthenticated PASSED [ 81%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_authenticated PASSED [ 82%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_vrfy_authenticated PASSED [ 82%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_mail_authenticated PASSED [ 82%] aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_norcpt_authenticated PASSED [ 82%] aiosmtpd/tests/test_smtp.py::TestResetCommands::test_helo PASSED [ 82%] aiosmtpd/tests/test_smtp.py::TestResetCommands::test_ehlo PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestResetCommands::test_rset PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_size_too_large PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_compatible_smtputf8 PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_unrequited_smtputf8 PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_incompatible_smtputf8 PASSED [ 83%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_invalid_body PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_esmtp_no_size_limit PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_process_message_error PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_message_body PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_dots_escaped PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors PASSED [ 84%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors_unhandled PASSED [ 85%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors_custom_response PASSED [ 85%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_exception PASSED [ 85%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_undescribable PASSED [ 85%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_multiple_connections_lost PASSED [ 85%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_bad_encodings PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_data_line_too_long PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_long_line_double_count PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_long_line_leak PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_body_delay_error PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_body_then_too_long_lines PASSED [ 86%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_line_delay_error PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_lines_then_too_long_body PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestCustomization::test_custom_hostname PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestCustomization::test_default_greeting PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestCustomization::test_custom_greeting PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestCustomization::test_mail_invalid_body_param PASSED [ 87%] aiosmtpd/tests/test_smtp.py::TestCustomization::test_limitlocalpart PASSED [ 88%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_during_DATA PASSED [ 88%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_during_command PASSED [ 88%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_in_long_command PASSED [ 88%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_command PASSED [ 88%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_command_2 PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_long_command PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_data PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestClientCrash::test_sockclose_after_helo PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_ehlo PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_bad_encoded_param PASSED [ 89%] aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_mail_param PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_data PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestSleepingHandler::test_close_after_helo PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestTimeout::test_timeout PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_warn_authreqnotls PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_log_authmechanisms PASSED [ 90%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has space] PASSED [ 91%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has.dot] PASSED [ 91%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has/slash] PASSED [ 91%] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has\\backslash] PASSED [ 91%] aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_wrong_type PASSED [ 91%] aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_wrong_value_type PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestLimits::test_all_limit_15 PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestLimits::test_different_limits PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestLimits::test_different_limits_custom_default PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_bogus PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestSanitize::test_loginpassword PASSED [ 92%] aiosmtpd/tests/test_smtp.py::TestSanitize::test_authresult PASSED [ 93%] aiosmtpd/tests/test_smtps.py::TestSMTPS::test_smtps PASSED [ 93%] aiosmtpd/tests/test_smtpsmuggling.py::TestSmuggling::test_smtp_smuggling PASSED [ 93%] aiosmtpd/tests/test_starttls.py::TestNoTLS::test_disabled_tls PASSED [ 93%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_help_starttls PASSED [ 93%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls_arg PASSED [ 93%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls PASSED [ 94%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls_quit PASSED [ 94%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_failed_handshake PASSED [ 94%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_tls_handshake_stopcontroller PASSED [ 94%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_tls_bad_syntax PASSED [ 94%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_help_after_starttls PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestStartTLS::test_helo_starttls PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestTLSEnding::test_eof_received PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestTLSEnding::test_tls_handshake_failing PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_ehlo PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_mail PASSED [ 95%] aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_rcpt PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_helo_fails PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_help_fails PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_ehlo PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_mail_fails PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_rcpt_fails PASSED [ 96%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_vrfy_fails PASSED [ 97%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_data_fails PASSED [ 97%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_noop_okay PASSED [ 97%] aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_quit_okay PASSED [ 97%] aiosmtpd/tests/test_starttls.py::TestRequireTLSAUTH::test_auth_notls PASSED [ 97%] aiosmtpd/tests/test_starttls.py::TestRequireTLSAUTH::test_auth_tls PASSED [ 98%] aiosmtpd/tests/test_starttls.py::TestTLSContext::test_verify_mode_nochange PASSED [ 98%] aiosmtpd/tests/test_starttls.py::TestTLSContext::test_certreq_warn PASSED [ 98%] aiosmtpd/tests/test_starttls.py::TestTLSContext::test_nocertreq_chkhost_warn PASSED [ 98%] aiosmtpd/qa/test_0packaging.py::TestVersion::test_pep440 PASSED [ 98%] aiosmtpd/qa/test_0packaging.py::TestNews::test_NEWS_version PASSED [ 98%] aiosmtpd/qa/test_0packaging.py::TestNews::test_release_date PASSED [ 99%] aiosmtpd/qa/test_1testsuite.py::TestStatusCodes::test_elemtype PASSED [ 99%] aiosmtpd/qa/test_1testsuite.py::TestStatusCodes::test_nameval PASSED [ 99%] aiosmtpd/qa/test_1testsuite.py::TestStatusCodes::test_enhanced PASSED [ 99%] aiosmtpd/qa/test_1testsuite.py::TestStatusCodes::test_commands PASSED [ 99%] aiosmtpd/qa/test_1testsuite.py::TestHarness::test_fqdn_cached PASSED [100%] =================================== FAILURES =================================== ___________________ TestController.test_getlocalhost_6inuse ____________________ cls = func = . at 0x3f90ea4400> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: Callable[[], TResult], when: Literal["collect", "setup", "call", "teardown"], reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, ) -> CallInfo[TResult]: """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :type func: Callable[[], _pytest.runner.TResult] :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: TResult | None = func() /usr/lib/python3.13/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.13/site-packages/_pytest/runner.py:242: in lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.13/site-packages/pluggy/_hooks.py:513: in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) /usr/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.13/site-packages/_pytest/threadexception.py:92: in pytest_runtest_call yield from thread_exception_runtest_hook() /usr/lib/python3.13/site-packages/_pytest/threadexception.py:68: in thread_exception_runtest_hook yield /usr/lib/python3.13/site-packages/_pytest/unraisableexception.py:95: in pytest_runtest_call yield from unraisable_exception_runtest_hook() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def unraisable_exception_runtest_hook() -> Generator[None]: with catch_unraisable_exception() as cm: try: yield finally: if cm.unraisable: if cm.unraisable.err_msg is not None: err_msg = cm.unraisable.err_msg else: err_msg = "Exception ignored in" msg = f"{err_msg}: {cm.unraisable.object!r}\n\n" msg += "".join( traceback.format_exception( cm.unraisable.exc_type, cm.unraisable.exc_value, cm.unraisable.exc_traceback, ) ) > warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) E pytest.PytestUnraisableExceptionWarning: Exception ignored in: E E Traceback (most recent call last): E File "/usr/lib/python3.13/asyncio/selector_events.py", line 872, in __del__ E self._server._detach(self) E ~~~~~~~~~~~~~~~~~~~~^^^^^^ E File "/usr/lib/python3.13/asyncio/base_events.py", line 303, in _detach E self._wakeup() E ~~~~~~~~~~~~^^ E File "/usr/lib/python3.13/asyncio/base_events.py", line 308, in _wakeup E for waiter in waiters: E ^^^^^^^ E TypeError: 'NoneType' object is not iterable /usr/lib/python3.13/site-packages/_pytest/unraisableexception.py:85: PytestUnraisableExceptionWarning =========================== short test summary info ============================ FAILED aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6inuse - pytest.PytestUnraisableExceptionWarning: Exception ignored in: Traceback (most recent call last): File "/usr/lib/python3.13/asyncio/selector_events.py", line 872, in __del__ self._server._detach(self) ~~~~~~~~~~~~~~~~~~~~^^^^^^ File "/usr/lib/python3.13/asyncio/base_events.py", line 303, in _detach self._wakeup() ~~~~~~~~~~~~^^ File "/usr/lib/python3.13/asyncio/base_events.py", line 308, in _wakeup for waiter in waiters: ^^^^^^^ TypeError: 'NoneType' object is not iterable ====== 1 failed, 559 passed, 5 skipped, 1 deselected in 129.64s (0:02:09) ====== ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/root37/build [?25h[?25hreceiving incremental file list python-aiosmtpd-1.4.6-2-riscv64-build.log python-aiosmtpd-1.4.6-2-riscv64-check.log python-aiosmtpd-1.4.6-2-riscv64-prepare.log sent 81 bytes received 9,629 bytes 19,420.00 bytes/sec total size is 71,264 speedup is 7.34