==> Building on minun ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/todoman ./ PKGBUILD 2,244 100% 0.00kB/s 0:00:00 2,244 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3) todoman-4.2.1-2.log 239 100% 233.40kB/s 0:00:00 239 100% 233.40kB/s 0:00:00 (xfr#2, to-chk=0/3) sent 1,420 bytes received 96 bytes 1,010.67 bytes/sec total size is 2,436 speedup is 1.61 ==> Running extra-riscv64-build -- -d /home/felix/packages/riscv64-pkg-cache:/var/cache/pacman/pkg -l root16 on remote host... [?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] -> [root16]...done ==> Making package: todoman 4.2.1-2 (Fri Jul 28 17:54:14 2023) ==> Retrieving sources...  -> Downloading todoman-4.2.1.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 100 66378 100 66378 0 0 268k 0 --:--:-- --:--:-- --:--:-- 268k ==> Validating source files with sha512sums... todoman-4.2.1.tar.gz ... Passed ==> Validating source files with b2sums... todoman-4.2.1.tar.gz ... Passed ==> Making package: todoman 4.2.1-2 (Fri Jul 28 17:54:30 2023) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (15) New Version Net Change Download Size core/libnsl 2.0.0-3 0.06 MiB extra/python-future 0.18.3-1 5.07 MiB extra/python-pytz 2023.3-1 0.17 MiB extra/python-six 1.16.0-8 0.12 MiB extra/python-typing_extensions 4.7.1-1 0.37 MiB core/python 3.11.3-2 107.17 MiB extra/python-atomicwrites 1.4.1-3 0.04 MiB 0.01 MiB extra/python-click 8.1.6-1 1.24 MiB 0.20 MiB extra/python-click-log 0.4.0-3 0.02 MiB 0.01 MiB extra/python-dateutil 2.8.2-5 1.05 MiB extra/python-humanize 4.7.0-1 0.44 MiB 0.07 MiB extra/python-icalendar 5.0.7-1 0.39 MiB 0.08 MiB extra/python-parsedatetime 2.6-6 0.43 MiB extra/python-pyxdg 0.28-2 0.59 MiB extra/python-urwid 2.1.2.r56.gabc098c-1 2.86 MiB Total Download Size: 0.38 MiB Total Installed Size: 120.02 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-click-8.1.6-1-any downloading... python-icalendar-5.0.7-1-any downloading... python-humanize-4.7.0-1-any downloading... python-atomicwrites-1.4.1-3-any downloading... python-click-log-0.4.0-3-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing libnsl... installing python... Optional dependencies for python python-setuptools python-pip sqlite [installed] mpdecimal: for decimal xz: for lzma [installed] tk: for tkinter installing python-atomicwrites... installing python-click... installing python-click-log... installing python-six... installing python-dateutil... installing python-humanize... installing python-pytz... installing python-icalendar... installing python-future... Optional dependencies for python-future python-setuptools: futurize and pasteurize scripts installing python-parsedatetime... installing python-pyxdg... installing python-typing_extensions... installing python-urwid... [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (52) New Version Net Change Download Size extra/python-attrs 22.2.0-3 0.55 MiB extra/python-autocommand 2.2.2-4 0.08 MiB extra/python-babel 2.12.1-1 31.41 MiB extra/python-chardet 5.1.0-3 3.02 MiB extra/python-docutils 1:0.20.1-1 5.72 MiB extra/python-exceptiongroup 1.1.2-1 0.13 MiB extra/python-fastjsonschema 2.18.0-1 0.29 MiB extra/python-idna 3.4-3 0.71 MiB extra/python-imagesize 1.4.1-4 0.05 MiB extra/python-inflect 7.0.0-1 0.39 MiB extra/python-iniconfig 2.0.0-4 0.04 MiB extra/python-jaraco.context 4.3.0-3 0.04 MiB extra/python-jaraco.functools 3.8.0-1 0.07 MiB extra/python-jaraco.text 3.11.1-3 0.09 MiB extra/python-jinja 1:3.1.2-4 1.82 MiB extra/python-markupsafe 2.1.3-1 0.08 MiB extra/python-more-itertools 9.1.1-4 0.61 MiB extra/python-ordered-set 4.1.0-4 0.07 MiB extra/python-packaging 23.1-1 0.47 MiB extra/python-platformdirs 3.9.1-1 0.22 MiB extra/python-pluggy 1.0.0-4 0.13 MiB extra/python-pydantic 1.10.9-1 6.57 MiB extra/python-pygments 2.15.1-1 13.57 MiB extra/python-pyproject-hooks 1.0.0-5 0.09 MiB extra/python-requests 2.28.2-4 0.61 MiB extra/python-snowballstemmer 2.2.0-5 2.82 MiB extra/python-sortedcontainers 2.4.0-4 0.41 MiB extra/python-sphinx 7.0.1-3 17.93 MiB 2.40 MiB extra/python-sphinx-alabaster-theme 0.7.13-4 0.05 MiB extra/python-sphinxcontrib-applehelp 1.0.4-3 0.26 MiB extra/python-sphinxcontrib-devhelp 1.0.2-11 0.13 MiB extra/python-sphinxcontrib-htmlhelp 2.0.1-3 0.18 MiB extra/python-sphinxcontrib-jquery 4.1-2 0.38 MiB extra/python-sphinxcontrib-jsmath 1.0.1-15 0.02 MiB extra/python-sphinxcontrib-qthelp 1.0.3-11 0.17 MiB extra/python-sphinxcontrib-serializinghtml 1.1.5-6 0.14 MiB extra/python-tomli 2.0.1-3 0.11 MiB extra/python-trove-classifiers 2023.7.6-1 0.11 MiB extra/python-urllib3 1.26.15-1 1.30 MiB extra/python-validate-pyproject 0.13-1 0.29 MiB extra/python-build 0.10.0-4 0.68 MiB extra/python-freezegun 1.2.2-2 0.13 MiB extra/python-hypothesis 6.75.3-1 4.20 MiB extra/python-installer 0.7.0-3 0.82 MiB extra/python-pytest 7.4.0-1 4.01 MiB extra/python-pytest-runner 6.0.0-5 0.04 MiB extra/python-setuptools 1:68.0.0-1 4.64 MiB extra/python-setuptools-scm 7.1.0-4 0.36 MiB extra/python-sphinx-autorun 1.1.1-6 0.02 MiB 0.01 MiB extra/python-sphinx-click 4.4.0-2 0.09 MiB 0.03 MiB extra/python-sphinx_rtd_theme 1.2.2-2 3.45 MiB extra/python-wheel 0.40.0-3 0.28 MiB Total Download Size: 2.43 MiB Total Installed Size: 109.84 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-sphinx-7.0.1-3-any downloading... python-sphinx-click-4.4.0-2-any downloading... python-sphinx-autorun-1.1.1-6-any downloading... 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-virtualenv: Use virtualenv for build isolation installing python-installer... installing python-sphinx-autorun... installing python-docutils... installing python-babel... installing python-imagesize... installing python-markupsafe... installing python-jinja... Optional dependencies for python-jinja python-babel: for i18n support [installed] installing python-pygments... installing python-urllib3... Optional dependencies for python-urllib3 python-brotli: Brotli support python-certifi: security support python-cryptography: security support python-idna: security support [pending] python-pyopenssl: security support python-pysocks: SOCKS support installing python-chardet... installing python-idna... installing python-requests... Optional dependencies for python-requests python-pysocks: SOCKS proxy support installing python-snowballstemmer... Optional dependencies for python-snowballstemmer python-pystemmer: for improved performance installing python-sphinx-alabaster-theme... installing python-sphinxcontrib-applehelp... installing python-sphinxcontrib-devhelp... installing python-sphinxcontrib-htmlhelp... installing python-sphinxcontrib-jsmath... installing python-sphinxcontrib-qthelp... installing python-sphinxcontrib-serializinghtml... installing python-sphinx... Optional dependencies for python-sphinx imagemagick: for ext.imgconverter texlive-latexextra: for generation of PDF documentation installing python-sphinx-click... installing python-sphinxcontrib-jquery... installing python-sphinx_rtd_theme... installing python-more-itertools... installing python-jaraco.functools... installing python-jaraco.context... installing python-autocommand... installing python-pydantic... Optional dependencies for python-pydantic python-dotenv: for .env file support python-email-validator: for email validation installing python-inflect... installing python-jaraco.text... installing python-ordered-set... installing python-platformdirs... installing python-tomli... installing python-fastjsonschema... installing python-trove-classifiers... installing python-validate-pyproject... installing python-setuptools... installing python-setuptools-scm... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures [installed] installing python-freezegun... installing python-attrs... installing python-sortedcontainers... installing python-exceptiongroup... installing python-hypothesis... Optional dependencies for python-hypothesis python-pytz: for datetime and django module [installed] python-faker: for fakefactory and django module python-django: for django module python-numpy: for numpy module python-pytest: for pytest module [pending] python-lark-parser: for lark module python-libcst: for codemods module installing python-iniconfig... installing python-pluggy... installing python-pytest... installing python-pytest-runner... [?25h==> Retrieving sources...  -> Found todoman-4.2.1.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Extracting todoman-4.2.1.tar.gz with bsdtar ==> Starting build()... * Getting build dependencies for wheel... * Building wheel... running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/todoman copying todoman/__init__.py -> build/lib/todoman copying todoman/__main__.py -> build/lib/todoman copying todoman/cli.py -> build/lib/todoman copying todoman/configuration.py -> build/lib/todoman copying todoman/exceptions.py -> build/lib/todoman copying todoman/formatters.py -> build/lib/todoman copying todoman/interactive.py -> build/lib/todoman copying todoman/model.py -> build/lib/todoman copying todoman/version.py -> build/lib/todoman copying todoman/widgets.py -> build/lib/todoman running egg_info writing todoman.egg-info/PKG-INFO writing dependency_links to todoman.egg-info/dependency_links.txt writing entry points to todoman.egg-info/entry_points.txt writing requirements to todoman.egg-info/requires.txt writing top-level names to todoman.egg-info/top_level.txt reading manifest file 'todoman.egg-info/SOURCES.txt' adding license file 'LICENCE' adding license file 'AUTHORS.rst' writing manifest file 'todoman.egg-info/SOURCES.txt' installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64 creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/__init__.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/__main__.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/cli.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/configuration.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/exceptions.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/formatters.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/interactive.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/model.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/version.py -> build/bdist.linux-riscv64/wheel/todoman copying build/lib/todoman/widgets.py -> build/bdist.linux-riscv64/wheel/todoman running install_egg_info Copying todoman.egg-info to build/bdist.linux-riscv64/wheel/todoman-4.2.1-py3.11.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/todoman-4.2.1.dist-info/WHEEL creating '/build/todoman/src/todoman-4.2.1/dist/.tmp-7jcxtm4r/todoman-4.2.1-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'todoman/__init__.py' adding 'todoman/__main__.py' adding 'todoman/cli.py' adding 'todoman/configuration.py' adding 'todoman/exceptions.py' adding 'todoman/formatters.py' adding 'todoman/interactive.py' adding 'todoman/model.py' adding 'todoman/version.py' adding 'todoman/widgets.py' adding 'todoman-4.2.1.dist-info/AUTHORS.rst' adding 'todoman-4.2.1.dist-info/LICENCE' adding 'todoman-4.2.1.dist-info/METADATA' adding 'todoman-4.2.1.dist-info/WHEEL' adding 'todoman-4.2.1.dist-info/entry_points.txt' adding 'todoman-4.2.1.dist-info/top_level.txt' adding 'todoman-4.2.1.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built todoman-4.2.1-py3-none-any.whl make: Entering directory '/build/todoman/src/todoman-4.2.1/docs' sphinx-build -b man -d build/doctrees source build/man Running Sphinx v7.0.1 building [mo]: targets for 0 po files that are out of date writing output... building [man]: all manpages updating environment: [new config] 8 added, 0 changed, 0 removed reading sources... [ 12%] changelog reading sources... [ 25%] configure reading sources... [ 37%] contributing reading sources... [ 50%] index reading sources... [ 62%] install reading sources... [ 75%] licence reading sources... [ 87%] man reading sources... [100%] usage ../CHANGELOG.rst:264: CRITICAL: Title level inconsistent: New features ~~~~~~~~~~~~ ../CHANGELOG.rst:275: CRITICAL: Title level inconsistent: Packaging changes ~~~~~~~~~~~~~~~~~ /build/todoman/src/todoman-4.2.1/docs/source/man.rst:12: WARNING: Inline interpreted text or phrase reference start-string without end-string. looking for now-outdated files... none found pickling environment... done checking consistency... done writing... todo.1 { } done build succeeded, 3 warnings. The manual pages are in build/man. Build finished. The manual pages are in build/man. make: Leaving directory '/build/todoman/src/todoman-4.2.1/docs' ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.11.3, pytest-7.4.0, pluggy-1.0.0 -- /usr/bin/python cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/build/todoman/src/todoman-4.2.1/.hypothesis/examples') rootdir: /dev configfile: null plugins: hypothesis-6.75.3 collecting ... collected 199 items ../../../../dev/tests/test_backend.py::test_datetime_serialization PASSED [ 0%] ../../../../dev/tests/test_backend.py::test_serialize_created_at PASSED [ 1%] ../../../../dev/tests/test_backend.py::test_serialize_dtstart PASSED [ 1%] ../../../../dev/tests/test_backend.py::test_serializer_raises PASSED [ 2%] ../../../../dev/tests/test_backend.py::test_supported_fields_are_serializeable PASSED [ 2%] ../../../../dev/tests/test_backend.py::test_vtodo_serialization PASSED [ 3%] ../../../../dev/tests/test_backend.py::test_update_last_modified PASSED [ 3%] ../../../../dev/tests/test_backend.py::test_sequence_increment PASSED [ 4%] ../../../../dev/tests/test_backend.py::test_normalize_datetime PASSED [ 4%] ../../../../dev/tests/test_cli.py::test_list PASSED [ 5%] ../../../../dev/tests/test_cli.py::test_no_default_list PASSED [ 5%] ../../../../dev/tests/test_cli.py::test_no_extra_whitespace PASSED [ 6%] ../../../../dev/tests/test_cli.py::test_percent PASSED [ 6%] ../../../../dev/tests/test_cli.py::test_list_case_insensitive[default] PASSED [ 7%] ../../../../dev/tests/test_cli.py::test_list_case_insensitive[DEfault] PASSED [ 7%] ../../../../dev/tests/test_cli.py::test_list_case_insensitive[deFAUlT] PASSED [ 8%] ../../../../dev/tests/test_cli.py::test_list_case_insensitive_collision PASSED [ 8%] ../../../../dev/tests/test_cli.py::test_list_case_insensitive_other_collision PASSED [ 9%] ../../../../dev/tests/test_cli.py::test_list_inexistant PASSED [ 9%] ../../../../dev/tests/test_cli.py::test_show_existing PASSED [ 10%] ../../../../dev/tests/test_cli.py::test_show_inexistant PASSED [ 10%] ../../../../dev/tests/test_cli.py::test_human PASSED [ 11%] ../../../../dev/tests/test_cli.py::test_two_events XFAIL (issue#9) [ 11%] ../../../../dev/tests/test_cli.py::test_default_command PASSED [ 12%] ../../../../dev/tests/test_cli.py::test_delete PASSED [ 12%] ../../../../dev/tests/test_cli.py::test_delete_prompt PASSED [ 13%] ../../../../dev/tests/test_cli.py::test_copy PASSED [ 13%] ../../../../dev/tests/test_cli.py::test_move PASSED [ 14%] ../../../../dev/tests/test_cli.py::test_dtstamp PASSED [ 14%] ../../../../dev/tests/test_cli.py::test_default_list PASSED [ 15%] ../../../../dev/tests/test_cli.py::test_default_due[not specified] PASSED [ 15%] ../../../../dev/tests/test_cli.py::test_default_due[greater than 0] PASSED [ 16%] ../../../../dev/tests/test_cli.py::test_default_due[0] PASSED [ 16%] ../../../../dev/tests/test_cli.py::test_default_due2 PASSED [ 17%] ../../../../dev/tests/test_cli.py::test_sorting_fields PASSED [ 17%] ../../../../dev/tests/test_cli.py::test_sorting_output PASSED [ 18%] ../../../../dev/tests/test_cli.py::test_sorting_null_values PASSED [ 18%] ../../../../dev/tests/test_cli.py::test_sort_invalid_fields PASSED [ 19%] ../../../../dev/tests/test_cli.py::test_color_due_dates[72] PASSED [ 19%] ../../../../dev/tests/test_cli.py::test_color_due_dates[-72] PASSED [ 20%] ../../../../dev/tests/test_cli.py::test_color_flag PASSED [ 20%] ../../../../dev/tests/test_cli.py::test_flush PASSED [ 21%] ../../../../dev/tests/test_cli.py::test_edit PASSED [ 21%] ../../../../dev/tests/test_cli.py::test_edit_move PASSED [ 22%] ../../../../dev/tests/test_cli.py::test_edit_retains_id PASSED [ 22%] ../../../../dev/tests/test_cli.py::test_edit_inexistant PASSED [ 23%] ../../../../dev/tests/test_cli.py::test_empty_list PASSED [ 23%] ../../../../dev/tests/test_cli.py::test_show_location PASSED [ 24%] ../../../../dev/tests/test_cli.py::test_location PASSED [ 24%] ../../../../dev/tests/test_cli.py::test_sort_mixed_timezones PASSED [ 25%] ../../../../dev/tests/test_cli.py::test_humanize_interactive PASSED [ 25%] ../../../../dev/tests/test_cli.py::test_due_bad_date PASSED [ 26%] ../../../../dev/tests/test_cli.py::test_multiple_todos_in_file PASSED [ 26%] ../../../../dev/tests/test_cli.py::test_todo_new PASSED [ 27%] ../../../../dev/tests/test_cli.py::test_todo_edit PASSED [ 27%] ../../../../dev/tests/test_cli.py::test_list_startable PASSED [ 28%] ../../../../dev/tests/test_cli.py::test_bad_start_date PASSED [ 28%] ../../../../dev/tests/test_cli.py::test_done PASSED [ 29%] ../../../../dev/tests/test_cli.py::test_done_recurring PASSED [ 29%] ../../../../dev/tests/test_cli.py::test_cancel PASSED [ 30%] ../../../../dev/tests/test_cli.py::test_id_printed_for_new PASSED [ 30%] ../../../../dev/tests/test_cli.py::test_repl SKIPPED (Optional depen...) [ 31%] ../../../../dev/tests/test_cli.py::test_no_repl PASSED [ 31%] ../../../../dev/tests/test_cli.py::test_status_validation PASSED [ 32%] ../../../../dev/tests/test_cli.py::test_bad_status_validation PASSED [ 32%] ../../../../dev/tests/test_cli.py::test_status_filtering PASSED [ 33%] ../../../../dev/tests/test_cli.py::test_invoke_command PASSED [ 33%] ../../../../dev/tests/test_cli.py::test_invoke_invalid_command PASSED [ 34%] ../../../../dev/tests/test_cli.py::test_new_categories_single PASSED [ 34%] ../../../../dev/tests/test_cli.py::test_new_categories_multiple PASSED [ 35%] ../../../../dev/tests/test_cli.py::test_list_categories_single PASSED [ 35%] ../../../../dev/tests/test_cli.py::test_list_categories_multiple PASSED [ 36%] ../../../../dev/tests/test_cli.py::test_show_priority PASSED [ 36%] ../../../../dev/tests/test_cli.py::test_priority PASSED [ 37%] ../../../../dev/tests/test_cli.py::test_porcelain_precedence PASSED [ 37%] ../../../../dev/tests/test_cli.py::test_duplicate_list PASSED [ 38%] ../../../../dev/tests/test_cli.py::test_edit_raw PASSED [ 38%] ../../../../dev/tests/test_cli.py::test_new_description_from_stdin PASSED [ 39%] ../../../../dev/tests/test_cli.py::test_default_priority PASSED [ 39%] ../../../../dev/tests/test_cli.py::test_no_default_priority PASSED [ 40%] ../../../../dev/tests/test_cli.py::test_invalid_default_priority PASSED [ 40%] ../../../../dev/tests/test_cli.py::test_default_command_args PASSED [ 41%] ../../../../dev/tests/test_config.py::test_explicit_nonexistant PASSED [ 41%] ../../../../dev/tests/test_config.py::test_xdg_nonexistant PASSED [ 42%] ../../../../dev/tests/test_config.py::test_xdg_existant PASSED [ 42%] ../../../../dev/tests/test_config.py::test_sane_config PASSED [ 43%] ../../../../dev/tests/test_config.py::test_invalid_color PASSED [ 43%] ../../../../dev/tests/test_config.py::test_invalid_color_arg PASSED [ 44%] ../../../../dev/tests/test_config.py::test_missing_path PASSED [ 44%] ../../../../dev/tests/test_config.py::test_extra_entry XFAIL (Not im...) [ 45%] ../../../../dev/tests/test_config.py::test_extra_section XFAIL (Not ...) [ 45%] ../../../../dev/tests/test_config.py::test_missing_cache_dir PASSED [ 46%] ../../../../dev/tests/test_config.py::test_date_field_in_time_format PASSED [ 46%] ../../../../dev/tests/test_config.py::test_date_field_in_time PASSED [ 47%] ../../../../dev/tests/test_config.py::test_colour_validation_auto PASSED [ 47%] ../../../../dev/tests/test_config.py::test_colour_validation_always PASSED [ 48%] ../../../../dev/tests/test_config.py::test_colour_validation_invalid PASSED [ 48%] ../../../../dev/tests/test_filtering.py::test_priority PASSED [ 49%] ../../../../dev/tests/test_filtering.py::test_location PASSED [ 49%] ../../../../dev/tests/test_filtering.py::test_category PASSED [ 50%] ../../../../dev/tests/test_filtering.py::test_grep PASSED [ 50%] ../../../../dev/tests/test_filtering.py::test_filtering_lists PASSED [ 51%] ../../../../dev/tests/test_filtering.py::test_due_aware PASSED [ 51%] ../../../../dev/tests/test_filtering.py::test_due_naive PASSED [ 52%] ../../../../dev/tests/test_filtering.py::test_filtering_start PASSED [ 52%] ../../../../dev/tests/test_filtering.py::test_statuses PASSED [ 53%] ../../../../dev/tests/test_formatter.py::test_humanized_datetime[CET-interval0] PASSED [ 53%] ../../../../dev/tests/test_formatter.py::test_humanized_datetime[CET-interval1] PASSED [ 54%] ../../../../dev/tests/test_formatter.py::test_humanized_datetime[HST-interval0] PASSED [ 54%] ../../../../dev/tests/test_formatter.py::test_humanized_datetime[HST-interval1] PASSED [ 55%] ../../../../dev/tests/test_formatter.py::test_humanized_date[CET-interval0] PASSED [ 55%] ../../../../dev/tests/test_formatter.py::test_humanized_date[CET-interval1] PASSED [ 56%] ../../../../dev/tests/test_formatter.py::test_humanized_date[HST-interval0] PASSED [ 56%] ../../../../dev/tests/test_formatter.py::test_humanized_date[HST-interval1] PASSED [ 57%] ../../../../dev/tests/test_formatter.py::test_format_priority PASSED [ 57%] ../../../../dev/tests/test_formatter.py::test_format_priority_compact PASSED [ 58%] ../../../../dev/tests/test_formatter.py::test_format_date PASSED [ 58%] ../../../../dev/tests/test_formatter.py::test_format_datetime PASSED [ 59%] ../../../../dev/tests/test_formatter.py::test_detailed_format PASSED [ 59%] ../../../../dev/tests/test_formatter.py::test_parse_time PASSED [ 60%] ../../../../dev/tests/test_formatter.py::test_parse_datetime PASSED [ 60%] ../../../../dev/tests/test_formatter.py::test_humanized_parse_datetime PASSED [ 61%] ../../../../dev/tests/test_formatter.py::test_simple_action PASSED [ 61%] ../../../../dev/tests/test_formatter.py::test_formatting_parsing_consitency PASSED [ 62%] ../../../../dev/tests/test_formatter.py::test_rgb_to_ansi PASSED [ 62%] ../../../../dev/tests/test_formatter.py::test_format_multiple_with_list PASSED [ 63%] ../../../../dev/tests/test_formatter.py::test_format_multiple_without_list PASSED [ 63%] ../../../../dev/tests/test_main.py::test_main PASSED [ 64%] ../../../../dev/tests/test_model.py::test_querying PASSED [ 64%] ../../../../dev/tests/test_model.py::test_retain_tz PASSED [ 65%] ../../../../dev/tests/test_model.py::test_due_date PASSED [ 65%] ../../../../dev/tests/test_model.py::test_change_paths PASSED [ 66%] ../../../../dev/tests/test_model.py::test_list_displayname PASSED [ 66%] ../../../../dev/tests/test_model.py::test_list_colour PASSED [ 67%] ../../../../dev/tests/test_model.py::test_list_colour_cache_invalidation PASSED [ 67%] ../../../../dev/tests/test_model.py::test_list_no_colour PASSED [ 68%] ../../../../dev/tests/test_model.py::test_database_priority_sorting PASSED [ 68%] ../../../../dev/tests/test_model.py::test_retain_unknown_fields PASSED [ 69%] ../../../../dev/tests/test_model.py::test_category_integrity PASSED [ 69%] ../../../../dev/tests/test_model.py::test_category_deletes_on_todo_delete PASSED [ 70%] ../../../../dev/tests/test_model.py::test_todo_setters PASSED [ 70%] ../../../../dev/tests/test_model.py::test_is_completed PASSED [ 71%] ../../../../dev/tests/test_model.py::test_complete_recurring[True-tz0-20990315T020000Z] PASSED [ 71%] ../../../../dev/tests/test_model.py::test_complete_recurring[True-tz0-20990315T020000] SKIPPED [ 72%] ../../../../dev/tests/test_model.py::test_complete_recurring[True-None-20990315T020000Z] SKIPPED [ 72%] ../../../../dev/tests/test_model.py::test_complete_recurring[True-None-20990315T020000] PASSED [ 73%] ../../../../dev/tests/test_model.py::test_complete_recurring[False-tz0-20990315T020000Z] PASSED [ 73%] ../../../../dev/tests/test_model.py::test_complete_recurring[False-tz0-20990315T020000] SKIPPED [ 74%] ../../../../dev/tests/test_model.py::test_complete_recurring[False-None-20990315T020000Z] SKIPPED [ 74%] ../../../../dev/tests/test_model.py::test_complete_recurring[False-None-20990315T020000] PASSED [ 75%] ../../../../dev/tests/test_model.py::test_save_recurring_related PASSED [ 75%] ../../../../dev/tests/test_model.py::test_save_recurring_related_with_date PASSED [ 76%] ../../../../dev/tests/test_model.py::test_todo_filename_absolute_path PASSED [ 76%] ../../../../dev/tests/test_model.py::test_list_equality PASSED [ 77%] ../../../../dev/tests/test_model.py::test_clone PASSED [ 77%] ../../../../dev/tests/test_model.py::test_todos_startable PASSED [ 78%] ../../../../dev/tests/test_model.py::test_filename_uid_colision PASSED [ 78%] ../../../../dev/tests/test_model.py::test_hide_cancelled PASSED [ 79%] ../../../../dev/tests/test_model.py::test_illegal_start_suppression PASSED [ 79%] ../../../../dev/tests/test_model.py::test_default_status PASSED [ 80%] ../../../../dev/tests/test_model.py::test_nullify_field PASSED [ 80%] ../../../../dev/tests/test_model.py::test_duplicate_list PASSED [ 81%] ../../../../dev/tests/test_model.py::test_unreadable_ics PASSED [ 81%] ../../../../dev/tests/test_model.py::test_cached_property_caching PASSED [ 82%] ../../../../dev/tests/test_model.py::test_cached_property_overwriting PASSED [ 82%] ../../../../dev/tests/test_model.py::test_cached_property_property PASSED [ 83%] ../../../../dev/tests/test_model.py::test_deleting_todo_without_list_fails PASSED [ 83%] ../../../../dev/tests/test_model.py::test_saving_todo_without_list_fails PASSED [ 84%] ../../../../dev/tests/test_model.py::test_todo_path_without_list PASSED [ 84%] ../../../../dev/tests/test_porcelain.py::test_list_all PASSED [ 85%] ../../../../dev/tests/test_porcelain.py::test_list_start_date PASSED [ 85%] ../../../../dev/tests/test_porcelain.py::test_list_due_date PASSED [ 86%] ../../../../dev/tests/test_porcelain.py::test_list_nodue PASSED [ 86%] ../../../../dev/tests/test_porcelain.py::test_list_priority PASSED [ 87%] ../../../../dev/tests/test_porcelain.py::test_show PASSED [ 87%] ../../../../dev/tests/test_porcelain.py::test_simple_action PASSED [ 88%] ../../../../dev/tests/test_porcelain.py::test_format_datetime PASSED [ 88%] ../../../../dev/tests/test_porcelain.py::test_parse_datetime PASSED [ 89%] ../../../../dev/tests/test_porcelain.py::test_formatting_parsing_consitency PASSED [ 89%] ../../../../dev/tests/test_ui.py::test_todo_editor_priority PASSED [ 90%] ../../../../dev/tests/test_ui.py::test_todo_editor_list PASSED [ 90%] ../../../../dev/tests/test_ui.py::test_todo_editor_summary PASSED [ 91%] ../../../../dev/tests/test_ui.py::test_todo_editor_due PASSED [ 91%] ../../../../dev/tests/test_ui.py::test_toggle_help PASSED [ 92%] ../../../../dev/tests/test_ui.py::test_show_save_errors PASSED [ 92%] ../../../../dev/tests/test_ui.py::test_save_completed[True-True] PASSED [ 93%] ../../../../dev/tests/test_ui.py::test_save_completed[True-False] PASSED [ 93%] ../../../../dev/tests/test_ui.py::test_save_completed[False-True] PASSED [ 94%] ../../../../dev/tests/test_ui.py::test_save_completed[False-False] PASSED [ 94%] ../../../../dev/tests/test_ui.py::test_ctrl_c_clears FAILED [ 95%] ../../../../dev/tests/test_widgets.py::test_extended_edit_delete_word PASSED [ 95%] ../../../../dev/tests/test_widgets.py::test_extended_edit_delete_sol PASSED [ 96%] ../../../../dev/tests/test_widgets.py::test_extended_edit_delete_eol PASSED [ 96%] ../../../../dev/tests/test_widgets.py::test_extended_edit_goto_sol PASSED [ 97%] ../../../../dev/tests/test_widgets.py::test_extended_edit_goto_eol PASSED [ 97%] ../../../../dev/tests/test_widgets.py::test_extended_edit_delete_next_char PASSED [ 98%] ../../../../dev/tests/test_widgets.py::test_extended_edit_input PASSED [ 98%] ../../../../dev/tests/test_widgets.py::test_extended_edit_editor PASSED [ 99%] ../../../../dev/tests/test_widgets.py::test_priority_selector PASSED [100%] =================================== FAILURES =================================== ______________________________ test_ctrl_c_clears ______________________________ default_formatter = todo_factory = .inner at 0x40059a2700> def test_ctrl_c_clears(default_formatter, todo_factory): todo = todo_factory() editor = TodoEditor(todo, [todo.list], default_formatter) # Simulate that ctrl+c gets pressed, since we can't *really* do that # trivially inside unit tests. > with mock.patch( "urwid.main_loop.MainLoop.run", side_effect=KeyboardInterrupt ), mock.patch( "urwid.main_loop.MainLoop.stop", ) as mocked_stop: tests/test_ui.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/unittest/mock.py:1421: in __enter__ self.target = self.getter() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'urwid.main_loop.MainLoop' def resolve_name(name): """ Resolve a name to an object. It is expected that `name` will be a string in one of the following formats, where W is shorthand for a valid Python identifier and dot stands for a literal period in these pseudo-regexes: W(.W)* W(.W)*:(W(.W)*)? The first form is intended for backward compatibility only. It assumes that some part of the dotted name is a package, and the rest is an object somewhere within that package, possibly nested inside other objects. Because the place where the package stops and the object hierarchy starts can't be inferred by inspection, repeated attempts to import must be done with this form. In the second form, the caller makes the division point clear through the provision of a single colon: the dotted name to the left of the colon is a package to be imported, and the dotted name to the right is the object hierarchy within that package. Only one import is needed in this form. If it ends with the colon, then a module object is returned. The function will return an object (which might be a module), or raise one of the following exceptions: ValueError - if `name` isn't in a recognised format ImportError - if an import failed when it shouldn't have AttributeError - if a failure occurred when traversing the object hierarchy within the imported package to get to the desired object. """ global _NAME_PATTERN if _NAME_PATTERN is None: # Lazy import to speedup Python startup time import re dotted_words = r'(?!\d)(\w+)(\.(?!\d)(\w+))*' _NAME_PATTERN = re.compile(f'^(?P{dotted_words})' f'(?P:(?P{dotted_words})?)?$', re.UNICODE) m = _NAME_PATTERN.match(name) if not m: raise ValueError(f'invalid format: {name!r}') gd = m.groupdict() if gd.get('cln'): # there is a colon - a one-step import is all that's needed mod = importlib.import_module(gd['pkg']) parts = gd.get('obj') parts = parts.split('.') if parts else [] else: # no colon - have to iterate to find the package boundary parts = name.split('.') modname = parts.pop(0) # first part *must* be a module/package. mod = importlib.import_module(modname) while parts: p = parts[0] s = f'{modname}.{p}' try: mod = importlib.import_module(s) parts.pop(0) modname = s except ImportError: break # if we reach this point, mod is the module, already imported, and # parts is the list of parts in the object hierarchy to be traversed, or # an empty list if just the module is wanted. result = mod for p in parts: > result = getattr(result, p) E AttributeError: module 'urwid' has no attribute 'main_loop' /usr/lib/python3.11/pkgutil.py:715: AttributeError =============================== warnings summary =============================== tests/test_cli.py: 10 warnings tests/test_ui.py: 27 warnings /usr/lib/python3.11/site-packages/urwid/wimp.py:267: PendingDeprecationWarning: only for backwards compatibility.You may also use the new standard container property `focus_position` to get the focus. self._w.focus_col = 0 tests/test_cli.py: 7 warnings tests/test_ui.py: 12 warnings /usr/lib/python3.11/site-packages/urwid/signals.py:168: DeprecationWarning: Don't use user_arg argument, use user_args instead. warnings.warn( ../../../../usr/lib/python3.11/site-packages/_pytest/cacheprovider.py:451 /usr/lib/python3.11/site-packages/_pytest/cacheprovider.py:451: PytestCacheWarning: could not create cache path /dev/.pytest_cache/v/cache/nodeids: [Errno 13] Permission denied: '/dev/.pytest_cache' config.cache.set("cache/nodeids", sorted(self.cached_nodeids)) ../../../../usr/lib/python3.11/site-packages/_pytest/cacheprovider.py:405 /usr/lib/python3.11/site-packages/_pytest/cacheprovider.py:405: PytestCacheWarning: could not create cache path /dev/.pytest_cache/v/cache/lastfailed: [Errno 13] Permission denied: '/dev/.pytest_cache' config.cache.set("cache/lastfailed", self.lastfailed) ../../../../usr/lib/python3.11/site-packages/_pytest/stepwise.py:56 /usr/lib/python3.11/site-packages/_pytest/stepwise.py:56: PytestCacheWarning: could not create cache path /dev/.pytest_cache/v/cache/stepwise: [Errno 13] Permission denied: '/dev/.pytest_cache' session.config.cache.set(STEPWISE_CACHE_DIR, []) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED ../../../../dev/tests/test_ui.py::test_ctrl_c_clears - AttributeError:... ====== 1 failed, 190 passed, 5 skipped, 3 xfailed, 59 warnings in 22.36s ======= ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/root16/build receiving incremental file list todoman-4.2.1-2-riscv64-build.log todoman-4.2.1-2-riscv64-check.log sent 62 bytes received 6,110 bytes 4,114.67 bytes/sec total size is 27,626 speedup is 4.48