0s autopkgtest [12:31:24]: starting date and time: 2025-11-17 12:31:24+0000 0s autopkgtest [12:31:24]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [12:31:24]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.7cg98owd/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:python3-defaults --apt-upgrade csvkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python3-defaults/3.13.7-2 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-s390x --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@bos03-s390x-15.secgroup --name adt-resolute-s390x-csvkit-20251117-121825-juju-7f2275-prod-proposed-migration-environment-15-f0f42666-dcb7-4788-81f5-7a93c72c4ad6 --image adt/ubuntu-resolute-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-proposed-migration-s390x -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 3s Creating nova instance adt-resolute-s390x-csvkit-20251117-121825-juju-7f2275-prod-proposed-migration-environment-15-f0f42666-dcb7-4788-81f5-7a93c72c4ad6 from image adt/ubuntu-resolute-s390x-server-20251117.img (UUID a3a3e3b9-e6ba-478c-a5e9-fce6f0982a95)... 59s autopkgtest [12:32:23]: testbed dpkg architecture: s390x 59s autopkgtest [12:32:23]: testbed apt version: 3.1.11 59s autopkgtest [12:32:23]: @@@@@@@@@@@@@@@@@@@@ test bed setup 60s autopkgtest [12:32:24]: testbed release detected to be: None 60s autopkgtest [12:32:24]: updating testbed package index (apt update) 61s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [87.8 kB] 61s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 61s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 61s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 61s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [9848 B] 61s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [868 kB] 61s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [22.9 kB] 61s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [81.1 kB] 61s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x Packages [138 kB] 61s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/restricted s390x Packages [940 B] 61s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/universe s390x Packages [545 kB] 61s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse s390x Packages [10.6 kB] 62s Fetched 1764 kB in 1s (1529 kB/s) 62s Reading package lists... 63s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 63s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 63s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 63s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 64s Reading package lists... 64s Reading package lists... 64s Building dependency tree... 64s Reading state information... 64s Calculating upgrade... 64s The following packages will be upgraded: 64s libpython3-stdlib python3 python3-minimal usbutils 64s 4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 64s Need to get 148 kB of archives. 64s After this operation, 4096 B disk space will be freed. 64s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3-minimal s390x 3.13.7-2 [27.8 kB] 64s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3 s390x 3.13.7-2 [23.9 kB] 64s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x libpython3-stdlib s390x 3.13.7-2 [10.6 kB] 64s Get:4 http://ftpmaster.internal/ubuntu resolute/main s390x usbutils s390x 1:019-1 [85.6 kB] 64s dpkg-preconfigure: unable to re-open stdin: No such file or directory 64s Fetched 148 kB in 0s (438 kB/s) 65s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 61309 files and directories currently installed.) 65s Preparing to unpack .../python3-minimal_3.13.7-2_s390x.deb ... 65s Unpacking python3-minimal (3.13.7-2) over (3.13.7-1) ... 65s Setting up python3-minimal (3.13.7-2) ... 65s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 61309 files and directories currently installed.) 65s Preparing to unpack .../python3_3.13.7-2_s390x.deb ... 65s running python pre-rtupdate hooks for python3.13... 65s Unpacking python3 (3.13.7-2) over (3.13.7-1) ... 65s Preparing to unpack .../libpython3-stdlib_3.13.7-2_s390x.deb ... 65s Unpacking libpython3-stdlib:s390x (3.13.7-2) over (3.13.7-1) ... 65s Preparing to unpack .../usbutils_1%3a019-1_s390x.deb ... 65s Unpacking usbutils (1:019-1) over (1:018-2) ... 65s Setting up usbutils (1:019-1) ... 65s Setting up libpython3-stdlib:s390x (3.13.7-2) ... 65s Setting up python3 (3.13.7-2) ... 65s running python rtupdate hooks for python3.13... 65s running python post-rtupdate hooks for python3.13... 65s Processing triggers for man-db (2.13.1-1) ... 66s autopkgtest [12:32:30]: upgrading testbed (apt dist-upgrade and autopurge) 66s Reading package lists... 66s Building dependency tree... 66s Reading state information... 66s Calculating upgrade... 66s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 66s Reading package lists... 66s Building dependency tree... 66s Reading state information... 67s Solving dependencies... 67s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 69s autopkgtest [12:32:33]: testbed running kernel: Linux 6.17.0-5-generic #5-Ubuntu SMP Mon Sep 22 08:56:47 UTC 2025 69s autopkgtest [12:32:33]: @@@@@@@@@@@@@@@@@@@@ apt-source csvkit 72s Get:1 http://ftpmaster.internal/ubuntu resolute/universe csvkit 2.0.1-3 (dsc) [2475 B] 72s Get:2 http://ftpmaster.internal/ubuntu resolute/universe csvkit 2.0.1-3 (tar) [4005 kB] 72s Get:3 http://ftpmaster.internal/ubuntu resolute/universe csvkit 2.0.1-3 (diff) [5500 B] 72s gpgv: Signature made Mon Aug 19 04:53:25 2024 UTC 72s gpgv: using RSA key E50AFD55ADD27AAB97163A8B21D20589974B3E96 72s gpgv: issuer "tmancill@debian.org" 72s gpgv: Can't check signature: No public key 72s dpkg-source: warning: cannot verify inline signature for ./csvkit_2.0.1-3.dsc: no acceptable signature found 73s autopkgtest [12:32:37]: testing package csvkit version 2.0.1-3 73s autopkgtest [12:32:37]: build not needed 81s autopkgtest [12:32:45]: test command1: preparing testbed 81s Reading package lists... 81s Building dependency tree... 81s Reading state information... 81s Solving dependencies... 81s The following NEW packages will be installed: 81s libpython3.14-minimal libpython3.14-stdlib libxslt1.1 python3-agate 81s python3-agatedbf python3-agateexcel python3-agatesql python3-all 81s python3-csvkit python3-dbfread python3-et-xmlfile python3-greenlet 81s python3-iniconfig python3-isodate python3-leather python3-lxml 81s python3-olefile python3-openpyxl python3-parsedatetime python3-pluggy 81s python3-pytest python3-pytimeparse python3-slugify python3-sqlalchemy 81s python3-text-unidecode python3-xlrd python3.14 python3.14-minimal 81s 0 upgraded, 28 newly installed, 0 to remove and 0 not upgraded. 81s Need to get 11.5 MB of archives. 81s After this operation, 48.7 MB of additional disk space will be used. 81s Get:1 http://ftpmaster.internal/ubuntu resolute/main s390x libpython3.14-minimal s390x 3.14.0-4 [904 kB] 82s Get:2 http://ftpmaster.internal/ubuntu resolute/main s390x python3.14-minimal s390x 3.14.0-4 [2509 kB] 82s Get:3 http://ftpmaster.internal/ubuntu resolute/main s390x libpython3.14-stdlib s390x 3.14.0-4 [2373 kB] 83s Get:4 http://ftpmaster.internal/ubuntu resolute/main s390x libxslt1.1 s390x 1.1.43-0.3 [163 kB] 83s Get:5 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-isodate all 0.7.2-2 [18.8 kB] 83s Get:6 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-leather all 0.4.0-1 [19.8 kB] 83s Get:7 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-parsedatetime all 2.6-3 [32.8 kB] 83s Get:8 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytimeparse all 1.1.5-4 [8500 B] 83s Get:9 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-text-unidecode all 1.3-2 [57.5 kB] 83s Get:10 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-slugify all 8.0.4-4 [14.2 kB] 83s Get:11 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-agate all 1.13.0-1 [48.4 kB] 83s Get:12 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-dbfread all 2.0.7-5 [15.4 kB] 83s Get:13 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-agatedbf all 0.2.2-2 [4264 B] 83s Get:14 http://ftpmaster.internal/ubuntu resolute/main s390x python3-olefile all 0.47-1 [37.1 kB] 83s Get:15 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-et-xmlfile all 2.0.0-1 [79.4 kB] 83s Get:16 http://ftpmaster.internal/ubuntu resolute/main s390x python3-lxml s390x 6.0.2-1 [2478 kB] 83s Get:17 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-openpyxl all 3.1.5+dfsg-3 [153 kB] 83s Get:18 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-xlrd all 2.0.2-2 [83.4 kB] 83s Get:19 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-agateexcel all 0.4.1-1 [7412 B] 83s Get:20 http://ftpmaster.internal/ubuntu resolute/main s390x python3-greenlet s390x 3.2.4-2 [183 kB] 83s Get:21 http://ftpmaster.internal/ubuntu resolute/main s390x python3-sqlalchemy all 2.0.40+ds1-2 [1220 kB] 83s Get:22 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-agatesql all 0.7.2-1 [8358 B] 83s Get:23 http://ftpmaster.internal/ubuntu resolute/main s390x python3.14 s390x 3.14.0-4 [805 kB] 83s Get:24 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3-all s390x 3.13.7-2 [892 B] 83s Get:25 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-csvkit all 2.0.1-3 [30.2 kB] 83s Get:26 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-iniconfig all 2.1.0-1 [6840 B] 83s Get:27 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pluggy all 1.6.0-1 [21.0 kB] 83s Get:28 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest all 8.3.5-2 [252 kB] 84s Fetched 11.5 MB in 2s (5104 kB/s) 84s Selecting previously unselected package libpython3.14-minimal:s390x. 84s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 61309 files and directories currently installed.) 84s Preparing to unpack .../00-libpython3.14-minimal_3.14.0-4_s390x.deb ... 84s Unpacking libpython3.14-minimal:s390x (3.14.0-4) ... 84s Selecting previously unselected package python3.14-minimal. 84s Preparing to unpack .../01-python3.14-minimal_3.14.0-4_s390x.deb ... 84s Unpacking python3.14-minimal (3.14.0-4) ... 84s Selecting previously unselected package libpython3.14-stdlib:s390x. 84s Preparing to unpack .../02-libpython3.14-stdlib_3.14.0-4_s390x.deb ... 84s Unpacking libpython3.14-stdlib:s390x (3.14.0-4) ... 84s Selecting previously unselected package libxslt1.1:s390x. 84s Preparing to unpack .../03-libxslt1.1_1.1.43-0.3_s390x.deb ... 84s Unpacking libxslt1.1:s390x (1.1.43-0.3) ... 84s Selecting previously unselected package python3-isodate. 84s Preparing to unpack .../04-python3-isodate_0.7.2-2_all.deb ... 84s Unpacking python3-isodate (0.7.2-2) ... 84s Selecting previously unselected package python3-leather. 84s Preparing to unpack .../05-python3-leather_0.4.0-1_all.deb ... 84s Unpacking python3-leather (0.4.0-1) ... 84s Selecting previously unselected package python3-parsedatetime. 84s Preparing to unpack .../06-python3-parsedatetime_2.6-3_all.deb ... 84s Unpacking python3-parsedatetime (2.6-3) ... 84s Selecting previously unselected package python3-pytimeparse. 84s Preparing to unpack .../07-python3-pytimeparse_1.1.5-4_all.deb ... 84s Unpacking python3-pytimeparse (1.1.5-4) ... 84s Selecting previously unselected package python3-text-unidecode. 84s Preparing to unpack .../08-python3-text-unidecode_1.3-2_all.deb ... 84s Unpacking python3-text-unidecode (1.3-2) ... 84s Selecting previously unselected package python3-slugify. 84s Preparing to unpack .../09-python3-slugify_8.0.4-4_all.deb ... 84s Unpacking python3-slugify (8.0.4-4) ... 84s Selecting previously unselected package python3-agate. 84s Preparing to unpack .../10-python3-agate_1.13.0-1_all.deb ... 84s Unpacking python3-agate (1.13.0-1) ... 84s Selecting previously unselected package python3-dbfread. 84s Preparing to unpack .../11-python3-dbfread_2.0.7-5_all.deb ... 84s Unpacking python3-dbfread (2.0.7-5) ... 84s Selecting previously unselected package python3-agatedbf. 84s Preparing to unpack .../12-python3-agatedbf_0.2.2-2_all.deb ... 84s Unpacking python3-agatedbf (0.2.2-2) ... 84s Selecting previously unselected package python3-olefile. 84s Preparing to unpack .../13-python3-olefile_0.47-1_all.deb ... 84s Unpacking python3-olefile (0.47-1) ... 84s Selecting previously unselected package python3-et-xmlfile. 84s Preparing to unpack .../14-python3-et-xmlfile_2.0.0-1_all.deb ... 84s Unpacking python3-et-xmlfile (2.0.0-1) ... 84s Selecting previously unselected package python3-lxml:s390x. 84s Preparing to unpack .../15-python3-lxml_6.0.2-1_s390x.deb ... 84s Unpacking python3-lxml:s390x (6.0.2-1) ... 84s Selecting previously unselected package python3-openpyxl. 84s Preparing to unpack .../16-python3-openpyxl_3.1.5+dfsg-3_all.deb ... 84s Unpacking python3-openpyxl (3.1.5+dfsg-3) ... 84s Selecting previously unselected package python3-xlrd. 84s Preparing to unpack .../17-python3-xlrd_2.0.2-2_all.deb ... 84s Unpacking python3-xlrd (2.0.2-2) ... 84s Selecting previously unselected package python3-agateexcel. 84s Preparing to unpack .../18-python3-agateexcel_0.4.1-1_all.deb ... 84s Unpacking python3-agateexcel (0.4.1-1) ... 84s Selecting previously unselected package python3-greenlet. 84s Preparing to unpack .../19-python3-greenlet_3.2.4-2_s390x.deb ... 84s Unpacking python3-greenlet (3.2.4-2) ... 84s Selecting previously unselected package python3-sqlalchemy. 84s Preparing to unpack .../20-python3-sqlalchemy_2.0.40+ds1-2_all.deb ... 84s Unpacking python3-sqlalchemy (2.0.40+ds1-2) ... 84s Selecting previously unselected package python3-agatesql. 84s Preparing to unpack .../21-python3-agatesql_0.7.2-1_all.deb ... 84s Unpacking python3-agatesql (0.7.2-1) ... 84s Selecting previously unselected package python3.14. 84s Preparing to unpack .../22-python3.14_3.14.0-4_s390x.deb ... 84s Unpacking python3.14 (3.14.0-4) ... 84s Selecting previously unselected package python3-all. 84s Preparing to unpack .../23-python3-all_3.13.7-2_s390x.deb ... 84s Unpacking python3-all (3.13.7-2) ... 84s Selecting previously unselected package python3-csvkit. 84s Preparing to unpack .../24-python3-csvkit_2.0.1-3_all.deb ... 84s Unpacking python3-csvkit (2.0.1-3) ... 84s Selecting previously unselected package python3-iniconfig. 84s Preparing to unpack .../25-python3-iniconfig_2.1.0-1_all.deb ... 84s Unpacking python3-iniconfig (2.1.0-1) ... 84s Selecting previously unselected package python3-pluggy. 84s Preparing to unpack .../26-python3-pluggy_1.6.0-1_all.deb ... 84s Unpacking python3-pluggy (1.6.0-1) ... 84s Selecting previously unselected package python3-pytest. 84s Preparing to unpack .../27-python3-pytest_8.3.5-2_all.deb ... 84s Unpacking python3-pytest (8.3.5-2) ... 84s Setting up python3-iniconfig (2.1.0-1) ... 84s Setting up python3-parsedatetime (2.6-3) ... 85s Setting up python3-dbfread (2.0.7-5) ... 85s Setting up python3-olefile (0.47-1) ... 85s Setting up libpython3.14-minimal:s390x (3.14.0-4) ... 85s Setting up python3-pytimeparse (1.1.5-4) ... 85s Setting up python3-isodate (0.7.2-2) ... 85s Setting up python3-leather (0.4.0-1) ... 85s Setting up python3-greenlet (3.2.4-2) ... 85s Setting up python3-pluggy (1.6.0-1) ... 85s Setting up python3-text-unidecode (1.3-2) ... 86s Setting up libxslt1.1:s390x (1.1.43-0.3) ... 86s Setting up python3-et-xmlfile (2.0.0-1) ... 86s Setting up python3-xlrd (2.0.2-2) ... 86s Setting up python3.14-minimal (3.14.0-4) ... 87s Setting up libpython3.14-stdlib:s390x (3.14.0-4) ... 87s Setting up python3-pytest (8.3.5-2) ... 87s Setting up python3-sqlalchemy (2.0.40+ds1-2) ... 89s Setting up python3-slugify (8.0.4-4) ... 89s Setting up python3-lxml:s390x (6.0.2-1) ... 89s Setting up python3.14 (3.14.0-4) ... 90s Setting up python3-agate (1.13.0-1) ... 90s Setting up python3-agatesql (0.7.2-1) ... 90s Setting up python3-all (3.13.7-2) ... 90s Setting up python3-agatedbf (0.2.2-2) ... 90s Setting up python3-openpyxl (3.1.5+dfsg-3) ... 91s Setting up python3-agateexcel (0.4.1-1) ... 91s Setting up python3-csvkit (2.0.1-3) ... 91s Processing triggers for systemd (257.9-0ubuntu2) ... 91s Processing triggers for man-db (2.13.1-1) ... 91s Processing triggers for libc-bin (2.42-2ubuntu2) ... 92s autopkgtest [12:32:56]: test command1: set -e ; cp -r examples tests "$AUTOPKGTEST_TMP" ; for py in $(py3versions -r 2>/dev/null) ; do cd "$AUTOPKGTEST_TMP" ; echo "Testing with $py:" ; $py -m pytest -v ; done 92s autopkgtest [12:32:56]: test command1: [----------------------- 92s Testing with python3.14: 93s ============================= test session starts ============================== 93s platform linux -- Python 3.14.0, pytest-8.3.5, pluggy-1.6.0 -- /usr/bin/python3.14 93s cachedir: .pytest_cache 93s rootdir: /tmp/autopkgtest.3MwvzF/autopkgtest_tmp 93s plugins: typeguard-4.4.2 93s collecting ... collected 339 items 93s 93s tests/test_cleanup.py::TestCleanup::test_fix_rows PASSED [ 0%] 93s tests/test_cleanup.py::TestCleanup::test_real_world_join_fail PASSED [ 0%] 93s tests/test_cli.py::TestCli::test_match_column_identifier_numeric PASSED [ 0%] 93s tests/test_cli.py::TestCli::test_match_column_identifier_string PASSED [ 1%] 93s tests/test_cli.py::TestCli::test_match_column_which_could_be_integer_name_is_treated_as_positional_id PASSED [ 1%] 93s tests/test_cli.py::TestCli::test_parse_column_identifiers PASSED [ 1%] 93s tests/test_cli.py::TestCli::test_range_notation PASSED [ 2%] 93s tests/test_cli.py::TestCli::test_range_notation_open_ended PASSED [ 2%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_csv PASSED [ 2%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_dbf PASSED [ 2%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_fixed PASSED [ 3%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_invalid PASSED [ 3%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_json PASSED [ 3%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_xls PASSED [ 4%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_xls_uppercase PASSED [ 4%] 93s tests/test_convert/test_convert.py::TestConvert::test_guess_xlsx PASSED [ 4%] 93s tests/test_convert/test_fixed.py::TestFixed::test_fixed PASSED [ 5%] 93s tests/test_convert/test_fixed.py::TestFixed::test_fixed_no_inference PASSED [ 5%] 93s tests/test_convert/test_fixed.py::TestFixed::test_fixed_skip_lines PASSED [ 5%] 93s tests/test_convert/test_fixed.py::TestFixed::test_fixed_streaming PASSED [ 5%] 93s tests/test_convert/test_fixed.py::TestFixed::test_one_based_row_decoder PASSED [ 6%] 93s tests/test_convert/test_fixed.py::TestFixed::test_schema_decoder_in_action PASSED [ 6%] 93s tests/test_convert/test_fixed.py::TestFixed::test_schema_decoder_init PASSED [ 6%] 93s tests/test_convert/test_fixed.py::TestFixed::test_schematic_line_parser PASSED [ 7%] 93s tests/test_grep.py::TestGrep::test_any_match PASSED [ 7%] 93s tests/test_grep.py::TestGrep::test_any_match_and_inverse PASSED [ 7%] 93s tests/test_grep.py::TestGrep::test_column_names_in_patterns PASSED [ 7%] 93s tests/test_grep.py::TestGrep::test_duplicate_column_ids_in_patterns PASSED [ 8%] 93s tests/test_grep.py::TestGrep::test_index_out_of_range PASSED [ 8%] 93s tests/test_grep.py::TestGrep::test_inverse PASSED [ 8%] 93s tests/test_grep.py::TestGrep::test_mixed_indices_and_column_names_in_patterns PASSED [ 9%] 93s tests/test_grep.py::TestGrep::test_multiline PASSED [ 9%] 93s tests/test_grep.py::TestGrep::test_no_header PASSED [ 9%] 93s tests/test_grep.py::TestGrep::test_pattern PASSED [ 10%] 93s tests/test_grep.py::TestGrep::test_regex PASSED [ 10%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_changes_character_encoding PASSED [ 10%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_changes_line_endings PASSED [ 10%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_empty PASSED [ 11%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_empty_columns PASSED [ 11%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_empty_columns_long_row PASSED [ 11%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_empty_columns_short_row PASSED [ 12%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_empty_columns_zero PASSED [ 12%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_enable_all_checks PASSED [ 12%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_fill_short_rows PASSED [ 12%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_fill_short_rows_separator PASSED [ 13%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_header_normalize_space PASSED [ 13%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_join_short_rows PASSED [ 13%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_join_short_rows_separator PASSED [ 14%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_label PASSED [ 14%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_label_default PASSED [ 14%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_label_default_stdin PASSED [ 15%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_launch_new_instance PASSED [ 15%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_no_header_row PASSED [ 15%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_options FAILED [ 15%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_removes_bom PASSED [ 16%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_removes_optional_quote_characters PASSED [ 16%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_simple PASSED [ 16%] 93s tests/test_utilities/test_csvclean.py::TestCSVClean::test_skip_lines PASSED [ 17%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_delete_empty PASSED [ 17%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_empty PASSED [ 17%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_exclude PASSED [ 17%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_include_and_exclude PASSED [ 18%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_invalid_column PASSED [ 18%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_invalid_options PASSED [ 18%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_launch_new_instance PASSED [ 19%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_linenumbers PASSED [ 19%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_names PASSED [ 19%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_names_with_skip_lines PASSED [ 20%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_no_header_row PASSED [ 20%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_null_byte PASSED [ 20%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_ragged PASSED [ 20%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_simple PASSED [ 21%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_skip_lines PASSED [ 21%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_truncate PASSED [ 21%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_unicode PASSED [ 22%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_with_bzip2 PASSED [ 22%] 93s tests/test_utilities/test_csvcut.py::TestCSVCut::test_with_gzip PASSED [ 22%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_asv PASSED [ 23%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_delimiter PASSED [ 23%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_doublequote PASSED [ 23%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_empty PASSED [ 23%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_escapechar PASSED [ 24%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_launch_new_instance PASSED [ 24%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_linenumbers PASSED [ 24%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_lineterminator PASSED [ 25%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_no_header_row PASSED [ 25%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_quotechar PASSED [ 25%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_skip_header PASSED [ 25%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_skip_header_no_header_row PASSED [ 26%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_skip_lines PASSED [ 26%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormat::test_tabs PASSED [ 26%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_asv PASSED [ 27%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_delimiter PASSED [ 27%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_doublequote PASSED [ 27%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_empty PASSED [ 28%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_escapechar PASSED [ 28%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_launch_new_instance PASSED [ 28%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_linenumbers PASSED [ 28%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_lineterminator PASSED [ 29%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_locale PASSED [ 29%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_no_header_row PASSED [ 29%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_quotechar PASSED [ 30%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_skip_header PASSED [ 30%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_skip_header_no_header_row PASSED [ 30%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_skip_lines PASSED [ 30%] 93s tests/test_utilities/test_csvformat.py::TestCSVFormatQuoteNonNumeric::test_tabs PASSED [ 31%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_any_match PASSED [ 31%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_empty PASSED [ 31%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_invalid_column PASSED [ 32%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_invalid_options PASSED [ 32%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_invert_match PASSED [ 32%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_kwargs_with_line_numbers PASSED [ 33%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_launch_new_instance PASSED [ 33%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_match PASSED [ 33%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_match_utf8 PASSED [ 33%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_match_utf8_bom PASSED [ 34%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_match_with_line_numbers PASSED [ 34%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_names PASSED [ 34%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_no_match PASSED [ 35%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_options FAILED [ 35%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_re_match PASSED [ 35%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_re_match_utf8 PASSED [ 35%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_skip_lines PASSED [ 36%] 93s tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_string_match PASSED [ 36%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_blanks PASSED [ 36%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_empty PASSED [ 37%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_inner PASSED [ 37%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_join_options FAILED [ 37%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_launch_new_instance PASSED [ 38%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_left PASSED [ 38%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_left_short_columns PASSED [ 38%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_no_blanks PASSED [ 38%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_no_header_row PASSED [ 39%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_no_inference PASSED [ 39%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_options FAILED [ 39%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_outer PASSED [ 40%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_right PASSED [ 40%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_right_indices PASSED [ 40%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_sequential PASSED [ 41%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_single PASSED [ 41%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_sniff_limit_no_limit PASSED [ 41%] 93s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_sniff_limit_zero_limit PASSED [ 41%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_blanks PASSED [ 42%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_duplicate_keys PASSED [ 42%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_empty PASSED [ 42%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_geojson_point PASSED [ 43%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_geojson_shape PASSED [ 43%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_geojson_with_crs PASSED [ 43%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_geojson_with_id PASSED [ 43%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_geojson_with_no_bbox PASSED [ 44%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_indentation PASSED [ 44%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_keying PASSED [ 44%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_latlon_options FAILED [ 45%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_launch_new_instance PASSED [ 45%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_ndgeojson PASSED [ 45%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_ndgeojson_streaming PASSED [ 46%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_ndjson PASSED [ 46%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_ndjson_streaming PASSED [ 46%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_no_blanks PASSED [ 46%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_no_header_row PASSED [ 47%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_no_inference PASSED [ 47%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_options FAILED [ 47%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_simple PASSED [ 48%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_sniff_limit PASSED [ 48%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_tsv PASSED [ 48%] 93s tests/test_utilities/test_csvjson.py::TestCSVJSON::test_tsv_streaming PASSED [ 48%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_blanks PASSED [ 49%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_empty PASSED [ 49%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_encoding PASSED [ 49%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_launch_new_instance PASSED [ 50%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_linenumbers PASSED [ 50%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_max_column_width PASSED [ 50%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_max_columns PASSED [ 51%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_max_precision PASSED [ 51%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_max_precision_no_number_ellipsis PASSED [ 51%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_max_rows PASSED [ 51%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_no_blanks PASSED [ 52%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_no_header_row PASSED [ 52%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_no_inference PASSED [ 52%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_no_number_ellipsis PASSED [ 53%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_runs PASSED [ 53%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_simple PASSED [ 53%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_sniff_limit_no_limit PASSED [ 53%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_sniff_limit_zero_limit PASSED [ 54%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_stdin PASSED [ 54%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_unicode PASSED [ 54%] 93s tests/test_utilities/test_csvlook.py::TestCSVLook::test_unicode_bom PASSED [ 55%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_blanks PASSED [ 55%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_empty PASSED [ 55%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_encoding PASSED [ 56%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_ignore_case PASSED [ 56%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_invalid_column PASSED [ 56%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_invalid_options PASSED [ 56%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_launch_new_instance PASSED [ 57%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_names PASSED [ 57%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_no_blanks PASSED [ 57%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_no_header_row PASSED [ 58%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_no_inference PASSED [ 58%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_runs PASSED [ 58%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_sort_date PASSED [ 58%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_sort_string_reverse PASSED [ 59%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_sort_t_and_nulls PASSED [ 59%] 93s tests/test_utilities/test_csvsort.py::TestCSVSort::test_stdin PASSED [ 59%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_before_after_insert PASSED [ 60%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_blanks PASSED [ 60%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_create_if_not_exists PASSED [ 60%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_create_table PASSED [ 61%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_empty PASSED [ 61%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_insert_options FAILED [ 61%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_launch_new_instance PASSED [ 61%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_linenumbers PASSED [ 62%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_no_blanks PASSED [ 62%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_no_create_if_not_exists PASSED [ 62%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_no_header_row PASSED [ 63%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_no_inference PASSED [ 63%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_no_prefix_unique_constraint PASSED [ 63%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_options FAILED [ 64%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_prefix_unique_constraint PASSED [ 64%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_query PASSED [ 64%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_query_empty PASSED [ 64%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_query_file PASSED [ 65%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_query_text PASSED [ 65%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_query_update PASSED [ 65%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_stdin PASSED [ 66%] 93s tests/test_utilities/test_csvsql.py::TestCSVSQL::test_stdin_and_filename PASSED [ 66%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_empty PASSED [ 66%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_explicit_grouping PASSED [ 66%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_filenames_grouping PASSED [ 67%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_launch_new_instance PASSED [ 67%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_multiple_file_stack PASSED [ 67%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_multiple_file_stack_col PASSED [ 68%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_multiple_file_stack_col_ragged PASSED [ 68%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_multiple_file_stack_col_ragged_stdin PASSED [ 68%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_options FAILED [ 69%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_single_file_stack PASSED [ 69%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_skip_lines PASSED [ 69%] 93s tests/test_utilities/test_csvstack.py::TestCSVStack::test_skip_lines_stdin PASSED [ 69%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_empty PASSED [ 70%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_explicit_grouping PASSED [ 70%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_filenames_grouping PASSED [ 70%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_grouped_filenames PASSED [ 71%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_grouped_filenames_and_named_column PASSED [ 71%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_grouped_manual_and_named_column PASSED [ 71%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_launch_new_instance PASSED [ 71%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_multiple_file_stack PASSED [ 72%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_multiple_file_stack_col PASSED [ 72%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_multiple_file_stack_col_ragged PASSED [ 72%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_multiple_file_stack_col_ragged_stdin PASSED [ 73%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_no_header_row_basic PASSED [ 73%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_no_header_row_basic_stdin PASSED [ 73%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_options FAILED [ 74%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_single_file_stack PASSED [ 74%] 93s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_skip_lines PASSED [ 74%] 94s tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_skip_lines_stdin PASSED [ 74%] 94s tests/test_utilities/test_csvstat.py::TestCSVStat::test_columns PASSED [ 75%] 94s tests/test_utilities/test_csvstat.py::TestCSVStat::test_count_only PASSED [ 75%] 94s tests/test_utilities/test_csvstat.py::TestCSVStat::test_csv PASSED [ 75%] 95s tests/test_utilities/test_csvstat.py::TestCSVStat::test_csv_columns PASSED [ 76%] 95s tests/test_utilities/test_csvstat.py::TestCSVStat::test_decimal_format PASSED [ 76%] 95s tests/test_utilities/test_csvstat.py::TestCSVStat::test_empty PASSED [ 76%] 95s tests/test_utilities/test_csvstat.py::TestCSVStat::test_encoding PASSED [ 76%] 95s tests/test_utilities/test_csvstat.py::TestCSVStat::test_format_options FAILED [ 77%] 96s tests/test_utilities/test_csvstat.py::TestCSVStat::test_freq PASSED [ 77%] 96s tests/test_utilities/test_csvstat.py::TestCSVStat::test_freq_count PASSED [ 77%] 97s tests/test_utilities/test_csvstat.py::TestCSVStat::test_freq_list PASSED [ 78%] 97s tests/test_utilities/test_csvstat.py::TestCSVStat::test_invalid_column PASSED [ 78%] 97s tests/test_utilities/test_csvstat.py::TestCSVStat::test_invalid_options PASSED [ 78%] 98s tests/test_utilities/test_csvstat.py::TestCSVStat::test_json PASSED [ 79%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_json_columns PASSED [ 79%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_launch_new_instance PASSED [ 79%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_linenumbers PASSED [ 79%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_max_length PASSED [ 80%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_names PASSED [ 80%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_no_header_row PASSED [ 80%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_options FAILED [ 81%] 99s tests/test_utilities/test_csvstat.py::TestCSVStat::test_runs PASSED [ 81%] 100s tests/test_utilities/test_csvstat.py::TestCSVStat::test_unique PASSED [ 81%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_args FAILED [ 82%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_blanks PASSED [ 82%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_csv PASSED [ 82%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_csv_with_skip_lines PASSED [ 82%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_dbf PASSED [ 83%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_geojson PASSED [ 83%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_json PASSED [ 83%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_ndjson PASSED [ 84%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_nested_json PASSED [ 84%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_tsv PASSED [ 84%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_tsv_streaming PASSED [ 84%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls PASSED [ 85%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls_with_sheet PASSED [ 85%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls_with_skip_lines PASSED [ 85%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls_with_unicode_sheet PASSED [ 86%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls_with_write_sheets PASSED [ 86%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xls_with_write_sheets_with_names PASSED [ 86%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx PASSED [ 87%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx_with_sheet PASSED [ 87%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx_with_skip_lines PASSED [ 87%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx_with_unicode_sheet PASSED [ 87%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx_with_write_sheets PASSED [ 88%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx_with_write_sheets_with_names PASSED [ 88%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_csv_datetime_inference PASSED [ 88%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_csv_no_headers PASSED [ 89%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_csv_no_headers_streaming PASSED [ 89%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_csv_no_inference PASSED [ 89%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_date_format PASSED [ 89%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_date_format_default PASSED [ 90%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_date_like_number PASSED [ 90%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_empty PASSED [ 90%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_geojson_no_inference PASSED [ 91%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_json_no_inference PASSED [ 91%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_launch_new_instance PASSED [ 91%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_locale PASSED [ 92%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_names PASSED [ 92%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_names_xls PASSED [ 92%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_names_xlsx PASSED [ 92%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_ndjson_no_inference PASSED [ 93%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_no_blanks PASSED [ 93%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_null_value PASSED [ 93%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_null_value_blanks PASSED [ 94%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_numeric_date_format PASSED [ 94%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_numeric_date_format_default PASSED [ 94%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_options FAILED [ 94%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_version PASSED [ 95%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_xls_no_inference PASSED [ 95%] 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_xlsx_no_inference PASSED [ 95%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_empty PASSED [ 96%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_encoding PASSED [ 96%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_file PASSED [ 96%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_file_with_query PASSED [ 97%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_launch_new_instance PASSED [ 97%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_linenumbers PASSED [ 97%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_no_header_row PASSED [ 97%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_query PASSED [ 98%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_stdin PASSED [ 98%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_stdin_with_file PASSED [ 98%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_stdin_with_file_and_query PASSED [ 99%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_stdin_with_query PASSED [ 99%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_unicode PASSED [ 99%] 100s tests/test_utilities/test_sql2csv.py::TestSQL2CSV::test_wildcard_on_sqlite PASSED [100%] 100s 100s =================================== FAILURES =================================== 100s __________________________ TestCSVClean.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s for args, message in ( 100s ( 100s [], 100s 'No checks or fixes were enabled. See available options with: csvclean --help', 100s ), 100s ( 100s ['--join-short-rows', '--fill-short-rows'], 100s 'The --join-short-rows and --fill-short-rows options are mutually exclusive.', 100s ), 100s ): 100s with self.subTest(args=args): 100s > self.assertError(launch_new_instance, args, message) 100s 100s tests/test_utilities/test_csvclean.py:62: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: No checks or[60 chars]help' != 'csvclean: error: No checks or fixes were [48 chars]help' 100s E - python3.14 -m pytest: error: No checks or fixes were enabled. See available options with: csvclean --help 100s E ? ^^^^^ -------------- 100s E + csvclean: error: No checks or fixes were enabled. See available options with: csvclean --help 100s E ? ^^^^^^^ 100s ___________________________ TestCSVGrep.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s for args, message in ( 100s ([], 'You must specify at least one column to search using the -c option.'), 100s (['-c', '1'], 'One of -r, -m or -f must be specified, unless using the -n option.'), 100s ): 100s with self.subTest(args=args): 100s > self.assertError(launch_new_instance, args, message) 100s 100s tests/test_utilities/test_csvgrep.py:23: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: You must spe[51 chars]ion.' != 'csvgrep: error: You must specify at least[38 chars]ion.' 100s E - python3.14 -m pytest: error: You must specify at least one column to search using the -c option. 100s E ? ------------------- 100s E + csvgrep: error: You must specify at least one column to search using the -c option. 100s E ? ++++++ 100s ________________________ TestCSVJoin.test_join_options _________________________ 100s 100s self = 100s 100s def test_join_options(self): 100s for option in ('--left', '--right', '--outer'): 100s with self.subTest(option=option): 100s > self.assertError( 100s launch_new_instance, 100s [option], 100s 'You must provide join column names when performing an outer join.', 100s ) 100s 100s tests/test_utilities/test_csvjoin.py:31: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: You must pro[49 chars]oin.' != 'csvjoin: error: You must provide join col[36 chars]oin.' 100s E - python3.14 -m pytest: error: You must provide join column names when performing an outer join. 100s E ? ^^^^ -------------- 100s E + csvjoin: error: You must provide join column names when performing an outer join. 100s E ? ^^^^ + 100s ___________________________ TestCSVJoin.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s for args, message in ( 100s ( 100s ['-c' '1,2'], 100s 'The number of join column names must match the number of files, ' 100s 'or be a single column name that exists in all files.', 100s ), 100s (['-c', '1', '--left', '--right'], 'It is not valid to specify both a left and a right join.'), 100s ): 100s with self.subTest(args=args): 100s > self.assertError(launch_new_instance, args, message) 100s 100s tests/test_utilities/test_csvjoin.py:26: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: The number o[100 chars]les.' != 'csvjoin: error: The number of join column[87 chars]les.' 100s E - python3.14 -m pytest: error: The number of join column names must match the number of files, or be a single column name that exists in all files. 100s E ? ^^^^ -------------- 100s E + csvjoin: error: The number of join column names must match the number of files, or be a single column name that exists in all files. 100s E ? ^^^^ + 100s _______________________ TestCSVJSON.test_latlon_options ________________________ 100s 100s self = 100s 100s def test_latlon_options(self): 100s for option, message in ( 100s ('lat', '--lon is required whenever --lat is specified.'), 100s ('lon', '--lat is required whenever --lon is specified.'), 100s ('crs', '--crs is only allowed when --lat and --lon are also specified.'), 100s ('type', '--type is only allowed when --lat and --lon are also specified.'), 100s ('geometry', '--geometry is only allowed when --lat and --lon are also specified.'), 100s ): 100s with self.subTest(option=option): 100s > self.assertError(launch_new_instance, [f'--{option}', 'value'], message) 100s 100s tests/test_utilities/test_csvjson.py:33: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: --lon is required whenever --lat is specified.' != 'csvjson: error: --lon is required whenever --lat is specified.' 100s E - python3.14 -m pytest: error: --lon is required whenever --lat is specified. 100s E ? ^^^^ -------------- 100s E + csvjson: error: --lon is required whenever --lat is specified. 100s E ? ^^^^^ 100s ___________________________ TestCSVJSON.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s > self.assertError( 100s launch_new_instance, 100s ['--key', 'value', '--stream'], 100s '--key is only allowed with --stream when --lat and --lon are also specified.', 100s ) 100s 100s tests/test_utilities/test_csvjson.py:18: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: --key is onl[60 chars]ied.' != 'csvjson: error: --key is only allowed wit[47 chars]ied.' 100s E - python3.14 -m pytest: error: --key is only allowed with --stream when --lat and --lon are also specified. 100s E ? ^^^^ -------------- 100s E + csvjson: error: --key is only allowed with --stream when --lat and --lon are also specified. 100s E ? ^^^^^ 100s ________________________ TestCSVSQL.test_insert_options ________________________ 100s 100s self = 100s 100s def test_insert_options(self): 100s for args in ( 100s ['--no-create'], 100s ['--create-if-not-exists'], 100s ['--overwrite'], 100s ['--before-insert'], 100s ['--after-insert'], 100s ['--chunk-size', '1'], 100s ): 100s with self.subTest(args=args): 100s > self.assertError( 100s launch_new_instance, 100s args, 100s f'The {args[0]} option is only valid if --insert is also specified.' 100s ) 100s 100s tests/test_utilities/test_csvsql.py:53: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: The --no-cre[51 chars]ied.' != 'csvsql: error: The --no-create option is [37 chars]ied.' 100s E - python3.14 -m pytest: error: The --no-create option is only valid if --insert is also specified. 100s E ? ^^^^^^^^^^^^^^^^^^ ^ 100s E + csvsql: error: The --no-create option is only valid if --insert is also specified. 100s E ? ^ ^^^^ 100s ___________________________ TestCSVSQL.test_options ____________________________ 100s 100s self = 100s 100s def test_options(self): 100s for args, message in ( 100s ( 100s ['--db', 'sqlite:///:memory:', '--dialect', 'sqlite'], 100s 'The --dialect option is only valid when neither --db nor --query are specified.', 100s ), 100s ( 100s ['--insert'], 100s 'The --insert option is only valid when either --db or --query is specified.', 100s ), 100s ( 100s ['--db', 'sqlite:///:memory:', '--insert', '--no-create', '--overwrite'], 100s 'The --overwrite option is only valid if --no-create is not specified.', 100s ), 100s ( 100s ['--db', 'sqlite:///:memory:', '--insert', '--no-create', '--create-if-not-exists'], 100s 'The --no-create and --create-if-not-exists options are mutually exclusive.', 100s ), 100s ): 100s with self.subTest(args=args): 100s > self.assertError(launch_new_instance, args, message) 100s 100s tests/test_utilities/test_csvsql.py:41: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: The --dialec[63 chars]ied.' != 'csvsql: error: The --dialect option is on[49 chars]ied.' 100s E - python3.14 -m pytest: error: The --dialect option is only valid when neither --db nor --query are specified. 100s E ? ^^^^^^^^^^^^^^^^^^ ^ 100s E + csvsql: error: The --dialect option is only valid when neither --db nor --query are specified. 100s E ? ^ ^^^^ 100s __________________________ TestCSVStack.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s > self.assertError( 100s launch_new_instance, 100s ['-g', '1,2'], 100s 'The number of grouping values must be equal to the number of CSV files being stacked.', 100s ) 100s 100s tests/test_utilities/test_csvstack.py:17: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: The number o[69 chars]ked.' != 'csvstack: error: The number of grouping v[57 chars]ked.' 100s E - python3.14 -m pytest: error: The number of grouping values must be equal to the number of CSV files being stacked. 100s E ? ^^^^^^^^^^^^^^^^^^ 100s E + csvstack: error: The number of grouping values must be equal to the number of CSV files being stacked. 100s E ? ^^^ +++ 100s _________________________ TestNoHeaderRow.test_options _________________________ 100s 100s self = 100s 100s def test_options(self): 100s > self.assertError( 100s launch_new_instance, 100s ['-g', '1,2'], 100s 'The number of grouping values must be equal to the number of CSV files being stacked.', 100s ) 100s 100s tests/test_utilities/test_csvstack.py:17: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: The number o[69 chars]ked.' != 'csvstack: error: The number of grouping v[57 chars]ked.' 100s E - python3.14 -m pytest: error: The number of grouping values must be equal to the number of CSV files being stacked. 100s E ? ^^^^^^^^^^^^^^^^^^ 100s E + csvstack: error: The number of grouping values must be equal to the number of CSV files being stacked. 100s E ? ^^^ +++ 100s _______________________ TestCSVStat.test_format_options ________________________ 100s 100s self = 100s 100s def test_format_options(self): 100s for option in ('csv', 'json', 'count'): 100s with self.subTest(option=option): 100s > self.assertError( 100s launch_new_instance, 100s ['--min', f'--{option}'], 100s f'You may not specify --{option} and an operation (--mean, --median, etc) at the same time.', 100s ) 100s 100s tests/test_utilities/test_csvstat.py:28: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: You may not [68 chars]ime.' != 'csvstat: error: You may not specify --csv[55 chars]ime.' 100s E - python3.14 -m pytest: error: You may not specify --csv and an operation (--mean, --median, etc) at the same time. 100s E ? ^^^^^^^^^^^^^^^^^^ 100s E + csvstat: error: You may not specify --csv and an operation (--mean, --median, etc) at the same time. 100s E ? ^^^ ++ 100s ___________________________ TestCSVStat.test_options ___________________________ 100s 100s self = 100s 100s def test_options(self): 100s > self.assertError( 100s launch_new_instance, 100s ['--min', '--max'], 100s 'Only one operation argument may be specified (--mean, --median, etc).', 100s ) 100s 100s tests/test_utilities/test_csvstat.py:19: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: Only one ope[53 chars]tc).' != 'csvstat: error: Only one operation argume[40 chars]tc).' 100s E - python3.14 -m pytest: error: Only one operation argument may be specified (--mean, --median, etc). 100s E ? ^^^^^^^^^^^^^^^^^^ 100s E + csvstat: error: Only one operation argument may be specified (--mean, --median, etc). 100s E ? ^^^ ++ 100s _____________________________ TestIn2CSV.test_args _____________________________ 100s 100s self = 100s 100s def test_args(self): 100s for args in ([], ['-']): 100s with self.subTest(args=args): 100s > self.assertError( 100s launch_new_instance, 100s [], 100s 'You must specify a format when providing input as piped data via STDIN.', 100s args=args, 100s ) 100s 100s tests/test_utilities/test_in2csv.py:33: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: You must spe[55 chars]DIN.' != 'in2csv: error: You must specify a format [41 chars]DIN.' 100s E - python3.14 -m pytest: error: You must specify a format when providing input as piped data via STDIN. 100s E ? ^^^^^ ^^^^^^^^^^^^ ^ 100s E + in2csv: error: You must specify a format when providing input as piped data via STDIN. 100s E ? ^ ^^ ^ 100s ___________________________ TestIn2CSV.test_options ____________________________ 100s 100s self = 100s 100s def test_options(self): 100s for options, args, message in ( 100s ( 100s [], 100s ['dummy.unknown'], 100s 'Unable to automatically determine the format of the input file. ' 100s 'Try specifying a format with --format.', 100s ), 100s ( 100s ['-n'], 100s ['dummy.csv'], 100s 'You cannot use the -n or --names options with non-Excel files.', 100s ), 100s ): 100s with self.subTest(args=options + args): 100s > self.assertError(launch_new_instance, options, message, args=args) 100s 100s tests/test_utilities/test_in2csv.py:55: 100s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 100s tests/utils.py:84: in assertError 100s self.assertEqual(f.getvalue().splitlines()[-1], f'{command}: error: {message}') 100s E AssertionError: 'python3.14 -m pytest: error: Unable to au[86 chars]mat.' != 'in2csv: error: Unable to automatically de[72 chars]mat.' 100s E - python3.14 -m pytest: error: Unable to automatically determine the format of the input file. Try specifying a format with --format. 100s E ? ^^^^^ ^^^^^^^^^^^^ ^ 100s E + in2csv: error: Unable to automatically determine the format of the input file. Try specifying a format with --format. 100s E ? ^ ^^ ^ 100s =============================== warnings summary =============================== 100s ../../../usr/lib/python3/dist-packages/pytimeparse/__init__.py:19 100s /usr/lib/python3/dist-packages/pytimeparse/__init__.py:19: DeprecationWarning: codecs.open() is deprecated. Use open() instead. 100s with open(path.join(path.dirname(__file__), 'VERSION'), 100s 100s tests/test_utilities/test_csvgrep.py: 18 warnings 100s /usr/lib/python3/dist-packages/csvkit/utilities/csvgrep.py:31: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments. 100s '-f', '--file', dest='matchfile', type=FileType('r'), action='store', 100s 100s tests/test_utilities/test_csvjoin.py: 2 warnings 100s tests/test_utilities/test_csvjson.py: 1 warning 100s tests/test_utilities/test_csvlook.py: 4 warnings 100s tests/test_utilities/test_csvsort.py: 1 warning 100s tests/test_utilities/test_csvsql.py: 2 warnings 100s tests/test_utilities/test_csvstat.py: 1 warning 100s tests/test_utilities/test_in2csv.py: 7 warnings 100s /usr/lib/python3/dist-packages/agate/table/from_csv.py:83: RuntimeWarning: Error sniffing CSV dialect: Could not determine delimiter 100s kwargs['dialect'] = csv.Sniffer().sniff(sample) 100s 100s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_no_inference 100s /usr/lib/python3/dist-packages/agate/utils.py:288: DuplicateColumnWarning: Column name "b2" already exists in Table. Column will be renamed to "b2_2". 100s warn_duplicate_column(new_value, final_value) 100s 100s tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_no_inference 100s /usr/lib/python3/dist-packages/agate/utils.py:288: DuplicateColumnWarning: Column name "c2" already exists in Table. Column will be renamed to "c2_2". 100s warn_duplicate_column(new_value, final_value) 100s 100s tests/test_utilities/test_csvstat.py::TestCSVStat::test_decimal_format 100s tests/test_utilities/test_csvstat.py::TestCSVStat::test_decimal_format 100s /usr/lib/python3/dist-packages/agate/utils.py:272: UnnamedColumnWarning: Column 9 has no name. Using "j". 100s warn_unnamed_column(i, new_value) 100s 100s tests/test_utilities/test_in2csv.py: 10 warnings 100s /usr/lib/python3/dist-packages/agate/utils.py:272: UnnamedColumnWarning: Column 7 has no name. Using "h". 100s warn_unnamed_column(i, new_value) 100s 100s tests/test_utilities/test_in2csv.py::TestIn2CSV::test_convert_xlsx 100s /usr/lib/python3/dist-packages/openpyxl/worksheet/_reader.py:329: UserWarning: Unknown extension is not supported and will be removed 100s warn(msg) 100s 100s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 100s =========================== short test summary info ============================ 100s FAILED tests/test_utilities/test_csvclean.py::TestCSVClean::test_options - As... 100s FAILED tests/test_utilities/test_csvgrep.py::TestCSVGrep::test_options - Asse... 100s FAILED tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_join_options 100s FAILED tests/test_utilities/test_csvjoin.py::TestCSVJoin::test_options - Asse... 100s FAILED tests/test_utilities/test_csvjson.py::TestCSVJSON::test_latlon_options 100s FAILED tests/test_utilities/test_csvjson.py::TestCSVJSON::test_options - Asse... 100s FAILED tests/test_utilities/test_csvsql.py::TestCSVSQL::test_insert_options 100s FAILED tests/test_utilities/test_csvsql.py::TestCSVSQL::test_options - Assert... 100s FAILED tests/test_utilities/test_csvstack.py::TestCSVStack::test_options - As... 100s FAILED tests/test_utilities/test_csvstack.py::TestNoHeaderRow::test_options 100s FAILED tests/test_utilities/test_csvstat.py::TestCSVStat::test_format_options 100s FAILED tests/test_utilities/test_csvstat.py::TestCSVStat::test_options - Asse... 100s FAILED tests/test_utilities/test_in2csv.py::TestIn2CSV::test_args - Assertion... 100s FAILED tests/test_utilities/test_in2csv.py::TestIn2CSV::test_options - Assert... 100s ================= 14 failed, 325 passed, 52 warnings in 7.84s ================== 101s autopkgtest [12:33:05]: test command1: -----------------------] 101s autopkgtest [12:33:05]: test command1: - - - - - - - - - - results - - - - - - - - - - 101s command1 FAIL non-zero exit status 1 102s autopkgtest [12:33:06]: @@@@@@@@@@@@@@@@@@@@ summary 102s command1 FAIL non-zero exit status 1