0s autopkgtest [11:45:17]: starting date and time: 2025-05-06 11:45:17+0000 0s autopkgtest [11:45:17]: git checkout: 9986aa8c Merge branch 'skia/fix_network_interface' into 'ubuntu/production' 0s autopkgtest [11:45:17]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.cf3v500_/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:tqdm,src:pytest,src:python-aiohttp,src:fsspec --apt-upgrade fsspec --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=tqdm/4.67.1-5 pytest/8.3.5-2 python-aiohttp/3.11.16-1 fsspec/2025.3.2-1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@sto01-ppc64el-2.secgroup --name adt-questing-ppc64el-fsspec-20250506-114517-juju-7f2275-prod-proposed-migration-environment-2-ba99039f-8a27-4610-93aa-03c1eda353bb --image adt/ubuntu-questing-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-autopkgtest-workers-ppc64el -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 74s autopkgtest [11:46:31]: testbed dpkg architecture: ppc64el 74s autopkgtest [11:46:31]: testbed apt version: 3.0.0 74s autopkgtest [11:46:31]: @@@@@@@@@@@@@@@@@@@@ test bed setup 75s autopkgtest [11:46:32]: testbed release detected to be: None 75s autopkgtest [11:46:32]: updating testbed package index (apt update) 75s Get:1 http://ftpmaster.internal/ubuntu questing-proposed InRelease [110 kB] 76s Hit:2 http://ftpmaster.internal/ubuntu questing InRelease 76s Hit:3 http://ftpmaster.internal/ubuntu questing-updates InRelease 76s Hit:4 http://ftpmaster.internal/ubuntu questing-security InRelease 76s Get:5 http://ftpmaster.internal/ubuntu questing-proposed/main Sources [72.4 kB] 76s Get:6 http://ftpmaster.internal/ubuntu questing-proposed/universe Sources [595 kB] 76s Get:7 http://ftpmaster.internal/ubuntu questing-proposed/multiverse Sources [27.3 kB] 76s Get:8 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el Packages [139 kB] 76s Get:9 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el Packages [601 kB] 76s Get:10 http://ftpmaster.internal/ubuntu questing-proposed/multiverse ppc64el Packages [18.1 kB] 76s Fetched 1563 kB in 1s (1797 kB/s) 77s Reading package lists... 78s autopkgtest [11:46:35]: upgrading testbed (apt dist-upgrade and autopurge) 78s Reading package lists... 78s Building dependency tree... 78s Reading state information... 78s Calculating upgrade...Starting pkgProblemResolver with broken count: 0 78s Starting 2 pkgProblemResolver with broken count: 0 78s Done 79s Entering ResolveByKeep 79s 79s Calculating upgrade... 79s The following packages will be upgraded: 79s libperl5.40 perl perl-base perl-modules-5.40 python3-dbus 79s 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 79s Need to get 10.5 MB of archives. 79s After this operation, 58.4 kB disk space will be freed. 79s Get:1 http://ftpmaster.internal/ubuntu questing/main ppc64el libperl5.40 ppc64el 5.40.1-3 [4949 kB] 79s Get:2 http://ftpmaster.internal/ubuntu questing/main ppc64el perl ppc64el 5.40.1-3 [262 kB] 79s Get:3 http://ftpmaster.internal/ubuntu questing/main ppc64el perl-base ppc64el 5.40.1-3 [1923 kB] 79s Get:4 http://ftpmaster.internal/ubuntu questing/main ppc64el perl-modules-5.40 all 5.40.1-3 [3217 kB] 80s Get:5 http://ftpmaster.internal/ubuntu questing/main ppc64el python3-dbus ppc64el 1.4.0-1 [109 kB] 80s Fetched 10.5 MB in 0s (24.2 MB/s) 80s (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 ... 78710 files and directories currently installed.) 80s Preparing to unpack .../libperl5.40_5.40.1-3_ppc64el.deb ... 80s Unpacking libperl5.40:ppc64el (5.40.1-3) over (5.40.1-2ubuntu0.1) ... 81s Preparing to unpack .../perl_5.40.1-3_ppc64el.deb ... 81s Unpacking perl (5.40.1-3) over (5.40.1-2ubuntu0.1) ... 81s Preparing to unpack .../perl-base_5.40.1-3_ppc64el.deb ... 81s Unpacking perl-base (5.40.1-3) over (5.40.1-2ubuntu0.1) ... 81s Setting up perl-base (5.40.1-3) ... 81s (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 ... 78710 files and directories currently installed.) 81s Preparing to unpack .../perl-modules-5.40_5.40.1-3_all.deb ... 81s Unpacking perl-modules-5.40 (5.40.1-3) over (5.40.1-2ubuntu0.1) ... 81s Preparing to unpack .../python3-dbus_1.4.0-1_ppc64el.deb ... 81s Unpacking python3-dbus (1.4.0-1) over (1.3.2-5build5) ... 81s Setting up python3-dbus (1.4.0-1) ... 82s Setting up perl-modules-5.40 (5.40.1-3) ... 82s Setting up libperl5.40:ppc64el (5.40.1-3) ... 82s Setting up perl (5.40.1-3) ... 82s Processing triggers for man-db (2.13.1-1) ... 82s Processing triggers for libc-bin (2.41-6ubuntu1) ... 83s Reading package lists... 83s Building dependency tree... 83s Reading state information... 83s Starting pkgProblemResolver with broken count: 0 83s Starting 2 pkgProblemResolver with broken count: 0 83s Done 83s Solving dependencies... 83s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 85s autopkgtest [11:46:42]: testbed running kernel: Linux 6.14.0-15-generic #15-Ubuntu SMP Sun Apr 6 14:52:42 UTC 2025 86s autopkgtest [11:46:43]: @@@@@@@@@@@@@@@@@@@@ apt-source fsspec 87s Get:1 http://ftpmaster.internal/ubuntu questing-proposed/universe fsspec 2025.3.2-1 (dsc) [2580 B] 87s Get:2 http://ftpmaster.internal/ubuntu questing-proposed/universe fsspec 2025.3.2-1 (tar) [432 kB] 87s Get:3 http://ftpmaster.internal/ubuntu questing-proposed/universe fsspec 2025.3.2-1 (diff) [7208 B] 87s gpgv: Signature made Fri Apr 4 17:43:51 2025 UTC 87s gpgv: using RSA key 13796755BBC72BB8ABE2AEB5FA9DEC5DE11C63F1 87s gpgv: issuer "eamanu@debian.org" 87s gpgv: Can't check signature: No public key 87s dpkg-source: warning: cannot verify inline signature for ./fsspec_2025.3.2-1.dsc: no acceptable signature found 87s autopkgtest [11:46:44]: testing package fsspec version 2025.3.2-1 88s autopkgtest [11:46:45]: build not needed 88s autopkgtest [11:46:45]: test fsspec-tests: preparing testbed 88s Reading package lists... 89s Building dependency tree... 89s Reading state information... 89s Starting pkgProblemResolver with broken count: 1 89s Starting 2 pkgProblemResolver with broken count: 1 89s Investigating (0) python3-aiohttp:ppc64el < none -> 3.11.16-1 @un puN Ib > 89s Broken python3-aiohttp:ppc64el Depends on python3-yarl:ppc64el < none -> 1.13.1-1build2 @un puN > (>= 1.18.3) 89s Considering python3-yarl:ppc64el 0 as a solution to python3-aiohttp:ppc64el 0 89s Re-Instated python3-yarl:ppc64el 89s Broken python3-aiohttp:ppc64el Depends on python3-async-timeout:ppc64el < none | 5.0.1-1 @un uH > (>= 4.0.1) 89s Considering python3-async-timeout:ppc64el 0 as a solution to python3-aiohttp:ppc64el 0 89s Re-Instated python3-async-timeout:ppc64el 89s Broken python3-aiohttp:ppc64el Depends on python3-aiohappyeyeballs:ppc64el < none | 2.6.1-1 @un uH > 89s Considering python3-aiohappyeyeballs:ppc64el 1 as a solution to python3-aiohttp:ppc64el 0 89s Re-Instated python3-aiohappyeyeballs:ppc64el 89s Broken python3-aiohttp:ppc64el Depends on python3-aiosignal:ppc64el < none | 1.3.2-1 @un uH > 89s Considering python3-aiosignal:ppc64el 1 as a solution to python3-aiohttp:ppc64el 0 89s Re-Instated python3-frozenlist:ppc64el 89s Re-Instated python3-aiosignal:ppc64el 89s Broken python3-aiohttp:ppc64el Depends on python3-propcache:ppc64el < none | 0.3.1-1 @un uH > 89s Considering python3-propcache:ppc64el 1 as a solution to python3-aiohttp:ppc64el 0 89s Re-Instated python3-propcache:ppc64el 89s Done 89s Some packages could not be installed. This may mean that you have 89s requested an impossible situation or if you are using the unstable 89s distribution that some required packages have not yet been created 89s or been moved out of Incoming. 89s The following information may help to resolve the situation: 89s 89s The following packages have unmet dependencies: 89s python3-aiohttp : Depends: python3-yarl (>= 1.18.3) but 1.13.1-1build2 is to be installed 89s E: Unable to correct problems, you have held broken packages. 89s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from questing-proposed 89s Reading package lists... 89s Building dependency tree... 89s Reading state information... 90s Starting pkgProblemResolver with broken count: 0 90s Starting 2 pkgProblemResolver with broken count: 0 90s Done 90s The following NEW packages will be installed: 90s fonts-font-awesome fonts-lato libblas3 libgfortran5 libjs-jquery 90s libjs-sphinxdoc libjs-underscore liblapack3 python-fsspec-doc 90s python3-aiohappyeyeballs python3-aiohttp python3-aiosignal python3-all 90s python3-async-generator python3-async-timeout python3-frozenlist 90s python3-fsspec python3-iniconfig python3-multidict python3-numpy 90s python3-numpy-dev python3-pluggy python3-propcache python3-pytest 90s python3-pytest-asyncio python3-pytest-mock python3-pytest-vcr python3-tqdm 90s python3-vcr python3-wrapt python3-yarl sphinx-rtd-theme-common 90s The following packages will be upgraded: 90s gcc-15-base libatomic1 libgcc-s1 libstdc++6 90s 4 upgraded, 32 newly installed, 0 to remove and 55 not upgraded. 90s Need to get 16.2 MB of archives. 90s After this operation, 71.4 MB of additional disk space will be used. 90s Get:1 http://ftpmaster.internal/ubuntu questing/main ppc64el fonts-lato all 2.015-1 [2781 kB] 90s Get:2 http://ftpmaster.internal/ubuntu questing/main ppc64el python3-numpy-dev ppc64el 1:2.2.4+ds-1 [154 kB] 90s Get:3 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el gcc-15-base ppc64el 15.1.0-2ubuntu1 [54.7 kB] 90s Get:4 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el libgcc-s1 ppc64el 15.1.0-2ubuntu1 [40.1 kB] 90s Get:5 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el libatomic1 ppc64el 15.1.0-2ubuntu1 [11.0 kB] 90s Get:6 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el libstdc++6 ppc64el 15.1.0-2ubuntu1 [920 kB] 90s Get:7 http://ftpmaster.internal/ubuntu questing/main ppc64el libblas3 ppc64el 3.12.1-2 [239 kB] 90s Get:8 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el libgfortran5 ppc64el 15.1.0-2ubuntu1 [614 kB] 90s Get:9 http://ftpmaster.internal/ubuntu questing/main ppc64el liblapack3 ppc64el 3.12.1-2 [2813 kB] 90s Get:10 http://ftpmaster.internal/ubuntu questing/main ppc64el python3-numpy ppc64el 1:2.2.4+ds-1 [4853 kB] 90s Get:11 http://ftpmaster.internal/ubuntu questing/main ppc64el fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [516 kB] 90s Get:12 http://ftpmaster.internal/ubuntu questing/main ppc64el libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 90s Get:13 http://ftpmaster.internal/ubuntu questing/main ppc64el libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [118 kB] 90s Get:14 http://ftpmaster.internal/ubuntu questing-proposed/main ppc64el libjs-sphinxdoc all 8.2.3-1 [27.8 kB] 90s Get:15 http://ftpmaster.internal/ubuntu questing/main ppc64el sphinx-rtd-theme-common all 3.0.2+dfsg-2 [1014 kB] 90s Get:16 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python-fsspec-doc all 2025.3.2-1 [321 kB] 90s Get:17 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-aiohappyeyeballs all 2.6.1-1 [11.1 kB] 90s Get:18 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-multidict ppc64el 6.4.3-1 [52.8 kB] 90s Get:19 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-propcache ppc64el 0.3.1-1 [43.7 kB] 91s Get:20 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-yarl ppc64el 1.19.0-1 [93.2 kB] 91s Get:21 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-async-timeout all 5.0.1-1 [6830 B] 91s Get:22 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-frozenlist ppc64el 1.6.0-1 [104 kB] 91s Get:23 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-aiosignal all 1.3.2-1 [5182 B] 91s Get:24 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-aiohttp ppc64el 3.11.16-1 [373 kB] 91s Get:25 http://ftpmaster.internal/ubuntu questing/main ppc64el python3-all ppc64el 3.13.3-1 [880 B] 91s Get:26 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-async-generator all 1.10-4 [17.5 kB] 91s Get:27 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-fsspec all 2025.3.2-1 [217 kB] 91s Get:28 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-iniconfig all 1.1.1-2 [6024 B] 91s Get:29 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-pluggy all 1.5.0-1 [21.0 kB] 91s Get:30 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-pytest all 8.3.5-2 [252 kB] 91s Get:31 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-pytest-asyncio all 0.25.1-1 [17.0 kB] 91s Get:32 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-pytest-mock all 3.14.0-2 [11.7 kB] 91s Get:33 http://ftpmaster.internal/ubuntu questing/main ppc64el python3-wrapt ppc64el 1.15.0-4build1 [35.7 kB] 91s Get:34 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-vcr all 7.0.0-2 [33.3 kB] 91s Get:35 http://ftpmaster.internal/ubuntu questing/universe ppc64el python3-pytest-vcr all 1.0.2-4 [5228 B] 91s Get:36 http://ftpmaster.internal/ubuntu questing-proposed/universe ppc64el python3-tqdm all 4.67.1-5 [92.1 kB] 91s Fetched 16.2 MB in 1s (21.5 MB/s) 91s Selecting previously unselected package fonts-lato. 91s (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 ... 78710 files and directories currently installed.) 91s Preparing to unpack .../fonts-lato_2.015-1_all.deb ... 91s Unpacking fonts-lato (2.015-1) ... 91s Selecting previously unselected package python3-numpy-dev:ppc64el. 91s Preparing to unpack .../python3-numpy-dev_1%3a2.2.4+ds-1_ppc64el.deb ... 91s Unpacking python3-numpy-dev:ppc64el (1:2.2.4+ds-1) ... 91s Preparing to unpack .../gcc-15-base_15.1.0-2ubuntu1_ppc64el.deb ... 91s Unpacking gcc-15-base:ppc64el (15.1.0-2ubuntu1) over (15-20250404-0ubuntu1) ... 91s Setting up gcc-15-base:ppc64el (15.1.0-2ubuntu1) ... 91s (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 ... 78794 files and directories currently installed.) 91s Preparing to unpack .../libgcc-s1_15.1.0-2ubuntu1_ppc64el.deb ... 91s Unpacking libgcc-s1:ppc64el (15.1.0-2ubuntu1) over (15-20250404-0ubuntu1) ... 91s Setting up libgcc-s1:ppc64el (15.1.0-2ubuntu1) ... 91s (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 ... 78794 files and directories currently installed.) 91s Preparing to unpack .../libatomic1_15.1.0-2ubuntu1_ppc64el.deb ... 91s Unpacking libatomic1:ppc64el (15.1.0-2ubuntu1) over (15-20250404-0ubuntu1) ... 91s Preparing to unpack .../libstdc++6_15.1.0-2ubuntu1_ppc64el.deb ... 91s Unpacking libstdc++6:ppc64el (15.1.0-2ubuntu1) over (15-20250404-0ubuntu1) ... 92s Setting up libstdc++6:ppc64el (15.1.0-2ubuntu1) ... 92s Selecting previously unselected package libblas3:ppc64el. 92s (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 ... 78794 files and directories currently installed.) 92s Preparing to unpack .../00-libblas3_3.12.1-2_ppc64el.deb ... 92s Unpacking libblas3:ppc64el (3.12.1-2) ... 92s Selecting previously unselected package libgfortran5:ppc64el. 92s Preparing to unpack .../01-libgfortran5_15.1.0-2ubuntu1_ppc64el.deb ... 92s Unpacking libgfortran5:ppc64el (15.1.0-2ubuntu1) ... 92s Selecting previously unselected package liblapack3:ppc64el. 92s Preparing to unpack .../02-liblapack3_3.12.1-2_ppc64el.deb ... 92s Unpacking liblapack3:ppc64el (3.12.1-2) ... 92s Selecting previously unselected package python3-numpy. 92s Preparing to unpack .../03-python3-numpy_1%3a2.2.4+ds-1_ppc64el.deb ... 92s Unpacking python3-numpy (1:2.2.4+ds-1) ... 92s Selecting previously unselected package fonts-font-awesome. 92s Preparing to unpack .../04-fonts-font-awesome_5.0.10+really4.7.0~dfsg-4.1_all.deb ... 92s Unpacking fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 92s Selecting previously unselected package libjs-jquery. 92s Preparing to unpack .../05-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 92s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 92s Selecting previously unselected package libjs-underscore. 92s Preparing to unpack .../06-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ... 92s Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... 92s Selecting previously unselected package libjs-sphinxdoc. 92s Preparing to unpack .../07-libjs-sphinxdoc_8.2.3-1_all.deb ... 92s Unpacking libjs-sphinxdoc (8.2.3-1) ... 92s Selecting previously unselected package sphinx-rtd-theme-common. 92s Preparing to unpack .../08-sphinx-rtd-theme-common_3.0.2+dfsg-2_all.deb ... 92s Unpacking sphinx-rtd-theme-common (3.0.2+dfsg-2) ... 92s Selecting previously unselected package python-fsspec-doc. 92s Preparing to unpack .../09-python-fsspec-doc_2025.3.2-1_all.deb ... 92s Unpacking python-fsspec-doc (2025.3.2-1) ... 92s Selecting previously unselected package python3-aiohappyeyeballs. 92s Preparing to unpack .../10-python3-aiohappyeyeballs_2.6.1-1_all.deb ... 92s Unpacking python3-aiohappyeyeballs (2.6.1-1) ... 92s Selecting previously unselected package python3-multidict. 92s Preparing to unpack .../11-python3-multidict_6.4.3-1_ppc64el.deb ... 92s Unpacking python3-multidict (6.4.3-1) ... 92s Selecting previously unselected package python3-propcache. 92s Preparing to unpack .../12-python3-propcache_0.3.1-1_ppc64el.deb ... 92s Unpacking python3-propcache (0.3.1-1) ... 92s Selecting previously unselected package python3-yarl. 92s Preparing to unpack .../13-python3-yarl_1.19.0-1_ppc64el.deb ... 92s Unpacking python3-yarl (1.19.0-1) ... 92s Selecting previously unselected package python3-async-timeout. 92s Preparing to unpack .../14-python3-async-timeout_5.0.1-1_all.deb ... 92s Unpacking python3-async-timeout (5.0.1-1) ... 92s Selecting previously unselected package python3-frozenlist. 92s Preparing to unpack .../15-python3-frozenlist_1.6.0-1_ppc64el.deb ... 92s Unpacking python3-frozenlist (1.6.0-1) ... 92s Selecting previously unselected package python3-aiosignal. 92s Preparing to unpack .../16-python3-aiosignal_1.3.2-1_all.deb ... 92s Unpacking python3-aiosignal (1.3.2-1) ... 92s Selecting previously unselected package python3-aiohttp. 92s Preparing to unpack .../17-python3-aiohttp_3.11.16-1_ppc64el.deb ... 92s Unpacking python3-aiohttp (3.11.16-1) ... 92s Selecting previously unselected package python3-all. 92s Preparing to unpack .../18-python3-all_3.13.3-1_ppc64el.deb ... 92s Unpacking python3-all (3.13.3-1) ... 92s Selecting previously unselected package python3-async-generator. 92s Preparing to unpack .../19-python3-async-generator_1.10-4_all.deb ... 92s Unpacking python3-async-generator (1.10-4) ... 92s Selecting previously unselected package python3-fsspec. 92s Preparing to unpack .../20-python3-fsspec_2025.3.2-1_all.deb ... 92s Unpacking python3-fsspec (2025.3.2-1) ... 92s Selecting previously unselected package python3-iniconfig. 92s Preparing to unpack .../21-python3-iniconfig_1.1.1-2_all.deb ... 92s Unpacking python3-iniconfig (1.1.1-2) ... 92s Selecting previously unselected package python3-pluggy. 92s Preparing to unpack .../22-python3-pluggy_1.5.0-1_all.deb ... 92s Unpacking python3-pluggy (1.5.0-1) ... 92s Selecting previously unselected package python3-pytest. 92s Preparing to unpack .../23-python3-pytest_8.3.5-2_all.deb ... 92s Unpacking python3-pytest (8.3.5-2) ... 92s Selecting previously unselected package python3-pytest-asyncio. 92s Preparing to unpack .../24-python3-pytest-asyncio_0.25.1-1_all.deb ... 92s Unpacking python3-pytest-asyncio (0.25.1-1) ... 92s Selecting previously unselected package python3-pytest-mock. 92s Preparing to unpack .../25-python3-pytest-mock_3.14.0-2_all.deb ... 92s Unpacking python3-pytest-mock (3.14.0-2) ... 92s Selecting previously unselected package python3-wrapt. 92s Preparing to unpack .../26-python3-wrapt_1.15.0-4build1_ppc64el.deb ... 92s Unpacking python3-wrapt (1.15.0-4build1) ... 92s Selecting previously unselected package python3-vcr. 92s Preparing to unpack .../27-python3-vcr_7.0.0-2_all.deb ... 92s Unpacking python3-vcr (7.0.0-2) ... 92s Selecting previously unselected package python3-pytest-vcr. 92s Preparing to unpack .../28-python3-pytest-vcr_1.0.2-4_all.deb ... 92s Unpacking python3-pytest-vcr (1.0.2-4) ... 92s Selecting previously unselected package python3-tqdm. 92s Preparing to unpack .../29-python3-tqdm_4.67.1-5_all.deb ... 92s Unpacking python3-tqdm (4.67.1-5) ... 92s Setting up python3-iniconfig (1.1.1-2) ... 92s Setting up fonts-lato (2.015-1) ... 92s Setting up python3-async-generator (1.10-4) ... 93s Setting up python3-fsspec (2025.3.2-1) ... 93s Setting up python3-tqdm (4.67.1-5) ... 93s Setting up python3-all (3.13.3-1) ... 93s Setting up python3-multidict (6.4.3-1) ... 93s Setting up python3-frozenlist (1.6.0-1) ... 93s Setting up python3-aiosignal (1.3.2-1) ... 93s Setting up python3-async-timeout (5.0.1-1) ... 93s Setting up libblas3:ppc64el (3.12.1-2) ... 94s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 94s Setting up python3-numpy-dev:ppc64el (1:2.2.4+ds-1) ... 94s Setting up libatomic1:ppc64el (15.1.0-2ubuntu1) ... 94s Setting up python3-wrapt (1.15.0-4build1) ... 94s Setting up python3-aiohappyeyeballs (2.6.1-1) ... 94s Setting up libgfortran5:ppc64el (15.1.0-2ubuntu1) ... 94s Setting up python3-pluggy (1.5.0-1) ... 94s Setting up python3-propcache (0.3.1-1) ... 94s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 94s Setting up python3-yarl (1.19.0-1) ... 94s Setting up fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 94s Setting up sphinx-rtd-theme-common (3.0.2+dfsg-2) ... 94s Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... 94s Setting up liblapack3:ppc64el (3.12.1-2) ... 94s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 94s Setting up python3-pytest (8.3.5-2) ... 94s Setting up python3-aiohttp (3.11.16-1) ... 95s Setting up python3-vcr (7.0.0-2) ... 95s Setting up python3-numpy (1:2.2.4+ds-1) ... 97s Setting up libjs-sphinxdoc (8.2.3-1) ... 97s Setting up python3-pytest-asyncio (0.25.1-1) ... 97s Setting up python3-pytest-mock (3.14.0-2) ... 97s Setting up python3-pytest-vcr (1.0.2-4) ... 97s Setting up python-fsspec-doc (2025.3.2-1) ... 97s Processing triggers for man-db (2.13.1-1) ... 97s Processing triggers for libc-bin (2.41-6ubuntu1) ... 98s autopkgtest [11:46:55]: test fsspec-tests: [----------------------- 98s 'fsspec/tests' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests' 98s 'fsspec/tests/__init__.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/__init__.py' 98s 'fsspec/tests/abstract' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract' 98s 'fsspec/tests/abstract/__init__.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/__init__.py' 98s 'fsspec/tests/abstract/common.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/common.py' 98s 'fsspec/tests/abstract/copy.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/copy.py' 98s 'fsspec/tests/abstract/get.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/get.py' 98s 'fsspec/tests/abstract/mv.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/mv.py' 98s 'fsspec/tests/abstract/open.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/open.py' 98s 'fsspec/tests/abstract/pipe.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/pipe.py' 98s 'fsspec/tests/abstract/put.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/abstract/put.py' 98s 'fsspec/tests/data' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/data' 98s 'fsspec/tests/data/listing.html' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/data/listing.html' 98s 'fsspec/tests/test_api.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_api.py' 98s 'fsspec/tests/test_async.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_async.py' 98s 'fsspec/tests/test_caches.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_caches.py' 98s 'fsspec/tests/test_callbacks.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_callbacks.py' 98s 'fsspec/tests/test_compression.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_compression.py' 98s 'fsspec/tests/test_config.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_config.py' 98s 'fsspec/tests/test_core.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_core.py' 98s 'fsspec/tests/test_downstream.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_downstream.py' 98s 'fsspec/tests/test_file.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_file.py' 98s 'fsspec/tests/test_fuse.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_fuse.py' 98s 'fsspec/tests/test_generic.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_generic.py' 98s 'fsspec/tests/test_gui.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_gui.py' 98s 'fsspec/tests/test_mapping.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_mapping.py' 98s 'fsspec/tests/test_parquet.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_parquet.py' 98s 'fsspec/tests/test_registry.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_registry.py' 98s 'fsspec/tests/test_spec.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_spec.py' 98s 'fsspec/tests/test_utils.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/test_utils.py' 98s 'fsspec/tests/conftest.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/tests/conftest.py' 98s 'fsspec/implementations/tests' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests' 98s 'fsspec/implementations/tests/__init__.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/__init__.py' 98s 'fsspec/implementations/tests/cassettes' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes' 98s 'fsspec/implementations/tests/cassettes/test_dbfs' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_file_listing.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_file_listing.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_mkdir.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_mkdir.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_pyarrow_non_partitioned.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_read_pyarrow_non_partitioned.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_read_range.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_read_range_chunked.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_read_range_chunked.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_and_read.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_write_and_read.yaml' 98s 'fsspec/implementations/tests/cassettes/test_dbfs/test_dbfs_write_pyarrow_non_partitioned.yaml' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/cassettes/test_dbfs/test_dbfs_write_pyarrow_non_partitioned.yaml' 98s 'fsspec/implementations/tests/conftest.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/conftest.py' 98s 'fsspec/implementations/tests/ftp_tls.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/ftp_tls.py' 98s 'fsspec/implementations/tests/keycert.pem' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/keycert.pem' 98s 'fsspec/implementations/tests/local' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/local' 98s 'fsspec/implementations/tests/local/__init__.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/local/__init__.py' 98s 'fsspec/implementations/tests/local/local_fixtures.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/local/local_fixtures.py' 98s 'fsspec/implementations/tests/local/local_test.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/local/local_test.py' 98s 'fsspec/implementations/tests/memory' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/memory' 98s 'fsspec/implementations/tests/memory/__init__.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/memory/__init__.py' 98s 'fsspec/implementations/tests/memory/memory_fixtures.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/memory/memory_fixtures.py' 98s 'fsspec/implementations/tests/memory/memory_test.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/memory/memory_test.py' 98s 'fsspec/implementations/tests/out.zip' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/out.zip' 98s 'fsspec/implementations/tests/test_archive.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_archive.py' 98s 'fsspec/implementations/tests/test_arrow.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_arrow.py' 98s 'fsspec/implementations/tests/test_asyn_wrapper.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_asyn_wrapper.py' 98s 'fsspec/implementations/tests/test_cached.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_cached.py' 98s 'fsspec/implementations/tests/test_common.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_common.py' 98s 'fsspec/implementations/tests/test_dask.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_dask.py' 98s 'fsspec/implementations/tests/test_data.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_data.py' 98s 'fsspec/implementations/tests/test_dbfs.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_dbfs.py' 98s 'fsspec/implementations/tests/test_dirfs.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_dirfs.py' 98s 'fsspec/implementations/tests/test_ftp.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_ftp.py' 98s 'fsspec/implementations/tests/test_git.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_git.py' 98s 'fsspec/implementations/tests/test_github.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_github.py' 98s 'fsspec/implementations/tests/test_http.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http.py' 98s 'fsspec/implementations/tests/test_http_sync.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py' 98s 'fsspec/implementations/tests/test_jupyter.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_jupyter.py' 98s 'fsspec/implementations/tests/test_libarchive.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_libarchive.py' 98s 'fsspec/implementations/tests/test_local.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_local.py' 98s 'fsspec/implementations/tests/test_memory.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_memory.py' 98s 'fsspec/implementations/tests/test_reference.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_reference.py' 98s 'fsspec/implementations/tests/test_sftp.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_sftp.py' 98s 'fsspec/implementations/tests/test_smb.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_smb.py' 98s 'fsspec/implementations/tests/test_tar.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_tar.py' 98s 'fsspec/implementations/tests/test_webhdfs.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_webhdfs.py' 98s 'fsspec/implementations/tests/test_zip.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_zip.py' 98s 'fsspec/conftest.py' -> '/tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/conftest.py' 98s === python3.13 === 99s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:207: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 99s The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" 99s 99s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 100s ============================= test session starts ============================== 100s platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 100s rootdir: /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp 100s plugins: typeguard-4.4.2, vcr-1.0.2, mock-3.14.0, asyncio-0.25.1 100s asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=None 100s collected 790 items / 2 skipped 100s 100s tests/test_api.py ...............x...... [ 2%] 103s tests/test_async.py .........s... [ 4%] 104s tests/test_caches.py ................................................... [ 10%] 104s ........................................................................ [ 20%] 104s ....................... [ 22%] 104s tests/test_callbacks.py ........ [ 23%] 104s tests/test_compression.py ...sss [ 24%] 104s tests/test_config.py ....... [ 25%] 104s tests/test_core.py .................................................ss.. [ 32%] 104s sss.s [ 32%] 104s tests/test_file.py sssssssss.s [ 34%] 105s tests/test_generic.py ...... [ 35%] 105s tests/test_mapping.py ................. [ 37%] 105s tests/test_parquet.py ssssssssssssssssssssssssssssssssssssssssssssssssss [ 43%] 105s ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 52%] 105s ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 61%] 105s tests/test_registry.py ......s [ 62%] 135s tests/test_spec.py ....................x................................ [ 69%] 136s .....ssssssssss......................................................... [ 78%] 136s ........................................................................ [ 87%] 136s ................................. [ 91%] 136s tests/test_utils.py .................................................... [ 98%] 136s ............... [100%] 136s 136s =============================== warnings summary =============================== 136s tests/test_async.py::test_async_streamed_file_write 136s /usr/lib/python3.13/functools.py:59: RuntimeWarning: coroutine 'test_run_coros_in_chunks..runner' was never awaited 136s getattr(wrapper, attr).update(getattr(wrapped, attr, {})) 136s Enable tracemalloc to get traceback where the object was allocated. 136s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 136s 136s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 136s =========== 565 passed, 225 skipped, 2 xfailed, 1 warning in 37.02s ============ 137s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:207: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 137s The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" 137s 137s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 139s ============================= test session starts ============================== 139s platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 139s rootdir: /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp 139s plugins: typeguard-4.4.2, vcr-1.0.2, mock-3.14.0, asyncio-0.25.1 139s asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=None 139s collected 1005 items / 3 deselected / 7 skipped / 1002 selected 139s 139s implementations_tests/local/local_test.py .............................. [ 2%] 140s ........................................................................ [ 10%] 140s ................................. [ 13%] 140s implementations_tests/memory/memory_test.py ............................ [ 16%] 140s ........................................................................ [ 23%] 140s ..................................... [ 27%] 143s implementations_tests/test_archive.py .................................. [ 30%] 151s ...................................................sssssssssssssssss [ 37%] 151s implementations_tests/test_asyn_wrapper.py ......... [ 38%] 159s implementations_tests/test_cached.py ..........ssssssss......sss........ [ 41%] 160s ..........ssssssssssssssss.s........ssss..................... [ 47%] 160s implementations_tests/test_common.py ssss [ 48%] 160s implementations_tests/test_data.py .. [ 48%] 160s implementations_tests/test_dirfs.py .................................... [ 51%] 160s ........................................................................ [ 59%] 160s .......................... [ 61%] 160s implementations_tests/test_ftp.py sssssssssssssssssss [ 63%] 658s implementations_tests/test_github.py .FF.. [ 64%] 659s implementations_tests/test_http.py ..................................... [ 67%] 661s .................... [ 69%] 663s implementations_tests/test_http_sync.py F.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 73%] 664s .FFFFFF [ 73%] 664s implementations_tests/test_libarchive.py s [ 73%] 664s implementations_tests/test_local.py .s........................s......... [ 77%] 664s ....................................................ss........ss.sssss.. [ 84%] 664s .....sss....s.......................... [ 88%] 664s implementations_tests/test_memory.py .............................. [ 91%] 665s implementations_tests/test_reference.py ..................s.....ss..ssss [ 94%] 665s s [ 94%] 665s implementations_tests/test_tar.py ......................... [ 97%] 665s implementations_tests/test_webhdfs.py ssssssssssss [ 98%] 665s implementations_tests/test_zip.py ............... [100%] 665s 665s =================================== FAILURES =================================== 665s _________________________ test_github_open_large_file __________________________ 665s 665s self = 665s addr_infos = [] 665s req = 665s timeout = ClientTimeout(total=300, connect=None, sock_read=None, sock_connect=30, ceil_threshold=5) 665s client_error = 665s args = (functools.partial(, loop=<_UnixSelectorEventLoop running=True closed=False debug=False>),) 665s kwargs = {'server_hostname': 'raw.githubusercontent.com', 'ssl': } 665s 665s async def _wrap_create_connection( 665s self, 665s *args: Any, 665s addr_infos: List[aiohappyeyeballs.AddrInfoType], 665s req: ClientRequest, 665s timeout: "ClientTimeout", 665s client_error: Type[Exception] = ClientConnectorError, 665s **kwargs: Any, 665s ) -> Tuple[asyncio.Transport, ResponseHandler]: 665s try: 665s async with ceil_timeout( 665s timeout.sock_connect, ceil_threshold=timeout.ceil_threshold 665s ): 665s > sock = await aiohappyeyeballs.start_connection( 665s addr_infos=addr_infos, 665s local_addr_infos=self._local_addr_infos, 665s happy_eyeballs_delay=self._happy_eyeballs_delay, 665s interleave=self._interleave, 665s loop=self._loop, 665s ) 665s 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1115: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/impl.py:87: in start_connection 665s sock, _, _ = await _staggered.staggered_race( 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:165: in staggered_race 665s done = await _wait_one( 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s futures = {.run_one_coro() done, defined at /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:115> result=None>} 665s loop = <_UnixSelectorEventLoop running=True closed=False debug=False> 665s 665s async def _wait_one( 665s futures: "Iterable[asyncio.Future[Any]]", 665s loop: asyncio.AbstractEventLoop, 665s ) -> _T: 665s """Wait for the first future to complete.""" 665s wait_next = loop.create_future() 665s 665s def _on_completion(fut: "asyncio.Future[Any]") -> None: 665s if not wait_next.done(): 665s wait_next.set_result(fut) 665s 665s for f in futures: 665s f.add_done_callback(_on_completion) 665s 665s try: 665s > return await wait_next 665s E asyncio.exceptions.CancelledError 665s 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:46: CancelledError 665s 665s The above exception was the direct cause of the following exception: 665s 665s self = , method = 'GET' 665s str_or_url = URL('https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv') 665s 665s async def _request( 665s self, 665s method: str, 665s str_or_url: StrOrURL, 665s *, 665s params: Query = None, 665s data: Any = None, 665s json: Any = None, 665s cookies: Optional[LooseCookies] = None, 665s headers: Optional[LooseHeaders] = None, 665s skip_auto_headers: Optional[Iterable[str]] = None, 665s auth: Optional[BasicAuth] = None, 665s allow_redirects: bool = True, 665s max_redirects: int = 10, 665s compress: Union[str, bool, None] = None, 665s chunked: Optional[bool] = None, 665s expect100: bool = False, 665s raise_for_status: Union[ 665s None, bool, Callable[[ClientResponse], Awaitable[None]] 665s ] = None, 665s read_until_eof: bool = True, 665s proxy: Optional[StrOrURL] = None, 665s proxy_auth: Optional[BasicAuth] = None, 665s timeout: Union[ClientTimeout, _SENTINEL] = sentinel, 665s verify_ssl: Optional[bool] = None, 665s fingerprint: Optional[bytes] = None, 665s ssl_context: Optional[SSLContext] = None, 665s ssl: Union[SSLContext, bool, Fingerprint] = True, 665s server_hostname: Optional[str] = None, 665s proxy_headers: Optional[LooseHeaders] = None, 665s trace_request_ctx: Optional[Mapping[str, Any]] = None, 665s read_bufsize: Optional[int] = None, 665s auto_decompress: Optional[bool] = None, 665s max_line_size: Optional[int] = None, 665s max_field_size: Optional[int] = None, 665s ) -> ClientResponse: 665s 665s # NOTE: timeout clamps existing connect and read timeouts. We cannot 665s # set the default to None because we need to detect if the user wants 665s # to use the existing timeouts by setting timeout to None. 665s 665s if self.closed: 665s raise RuntimeError("Session is closed") 665s 665s ssl = _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint) 665s 665s if data is not None and json is not None: 665s raise ValueError( 665s "data and json parameters can not be used at the same time" 665s ) 665s elif json is not None: 665s data = payload.JsonPayload(json, dumps=self._json_serialize) 665s 665s if not isinstance(chunked, bool) and chunked is not None: 665s warnings.warn("Chunk size is deprecated #1615", DeprecationWarning) 665s 665s redirects = 0 665s history: List[ClientResponse] = [] 665s version = self._version 665s params = params or {} 665s 665s # Merge with default headers and transform to CIMultiDict 665s headers = self._prepare_headers(headers) 665s 665s try: 665s url = self._build_url(str_or_url) 665s except ValueError as e: 665s raise InvalidUrlClientError(str_or_url) from e 665s 665s assert self._connector is not None 665s if url.scheme not in self._connector.allowed_protocol_schema_set: 665s raise NonHttpUrlClientError(url) 665s 665s skip_headers: Optional[Iterable[istr]] 665s if skip_auto_headers is not None: 665s skip_headers = { 665s istr(i) for i in skip_auto_headers 665s } | self._skip_auto_headers 665s elif self._skip_auto_headers: 665s skip_headers = self._skip_auto_headers 665s else: 665s skip_headers = None 665s 665s if proxy is None: 665s proxy = self._default_proxy 665s if proxy_auth is None: 665s proxy_auth = self._default_proxy_auth 665s 665s if proxy is None: 665s proxy_headers = None 665s else: 665s proxy_headers = self._prepare_headers(proxy_headers) 665s try: 665s proxy = URL(proxy) 665s except ValueError as e: 665s raise InvalidURL(proxy) from e 665s 665s if timeout is sentinel: 665s real_timeout: ClientTimeout = self._timeout 665s else: 665s if not isinstance(timeout, ClientTimeout): 665s real_timeout = ClientTimeout(total=timeout) 665s else: 665s real_timeout = timeout 665s # timeout is cumulative for all request operations 665s # (request, redirects, responses, data consuming) 665s tm = TimeoutHandle( 665s self._loop, real_timeout.total, ceil_threshold=real_timeout.ceil_threshold 665s ) 665s handle = tm.start() 665s 665s if read_bufsize is None: 665s read_bufsize = self._read_bufsize 665s 665s if auto_decompress is None: 665s auto_decompress = self._auto_decompress 665s 665s if max_line_size is None: 665s max_line_size = self._max_line_size 665s 665s if max_field_size is None: 665s max_field_size = self._max_field_size 665s 665s traces = [ 665s Trace( 665s self, 665s trace_config, 665s trace_config.trace_config_ctx(trace_request_ctx=trace_request_ctx), 665s ) 665s for trace_config in self._trace_configs 665s ] 665s 665s for trace in traces: 665s await trace.send_request_start(method, url.update_query(params), headers) 665s 665s timer = tm.timer() 665s try: 665s with timer: 665s # https://www.rfc-editor.org/rfc/rfc9112.html#name-retrying-requests 665s retry_persistent_connection = ( 665s self._retry_connection and method in IDEMPOTENT_METHODS 665s ) 665s while True: 665s url, auth_from_url = strip_auth_from_url(url) 665s if not url.raw_host: 665s # NOTE: Bail early, otherwise, causes `InvalidURL` through 665s # NOTE: `self._request_class()` below. 665s err_exc_cls = ( 665s InvalidUrlRedirectClientError 665s if redirects 665s else InvalidUrlClientError 665s ) 665s raise err_exc_cls(url) 665s # If `auth` was passed for an already authenticated URL, 665s # disallow only if this is the initial URL; this is to avoid issues 665s # with sketchy redirects that are not the caller's responsibility 665s if not history and (auth and auth_from_url): 665s raise ValueError( 665s "Cannot combine AUTH argument with " 665s "credentials encoded in URL" 665s ) 665s 665s # Override the auth with the one from the URL only if we 665s # have no auth, or if we got an auth from a redirect URL 665s if auth is None or (history and auth_from_url is not None): 665s auth = auth_from_url 665s 665s if ( 665s auth is None 665s and self._default_auth 665s and ( 665s not self._base_url or self._base_url_origin == url.origin() 665s ) 665s ): 665s auth = self._default_auth 665s # It would be confusing if we support explicit 665s # Authorization header with auth argument 665s if ( 665s headers is not None 665s and auth is not None 665s and hdrs.AUTHORIZATION in headers 665s ): 665s raise ValueError( 665s "Cannot combine AUTHORIZATION header " 665s "with AUTH argument or credentials " 665s "encoded in URL" 665s ) 665s 665s all_cookies = self._cookie_jar.filter_cookies(url) 665s 665s if cookies is not None: 665s tmp_cookie_jar = CookieJar( 665s quote_cookie=self._cookie_jar.quote_cookie 665s ) 665s tmp_cookie_jar.update_cookies(cookies) 665s req_cookies = tmp_cookie_jar.filter_cookies(url) 665s if req_cookies: 665s all_cookies.load(req_cookies) 665s 665s if proxy is not None: 665s proxy = URL(proxy) 665s elif self._trust_env: 665s with suppress(LookupError): 665s proxy, proxy_auth = get_env_proxy_for_url(url) 665s 665s req = self._request_class( 665s method, 665s url, 665s params=params, 665s headers=headers, 665s skip_auto_headers=skip_headers, 665s data=data, 665s cookies=all_cookies, 665s auth=auth, 665s version=version, 665s compress=compress, 665s chunked=chunked, 665s expect100=expect100, 665s loop=self._loop, 665s response_class=self._response_class, 665s proxy=proxy, 665s proxy_auth=proxy_auth, 665s timer=timer, 665s session=self, 665s ssl=ssl if ssl is not None else True, 665s server_hostname=server_hostname, 665s proxy_headers=proxy_headers, 665s traces=traces, 665s trust_env=self.trust_env, 665s ) 665s 665s # connection timeout 665s try: 665s > conn = await self._connector.connect( 665s req, traces=traces, timeout=real_timeout 665s ) 665s 665s /usr/lib/python3/dist-packages/aiohttp/client.py:703: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:548: in connect 665s proto = await self._create_connection(req, traces, timeout) 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1056: in _create_connection 665s _, proto = await self._create_direct_connection(req, traces, timeout) 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1400: in _create_direct_connection 665s raise last_exc 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1369: in _create_direct_connection 665s transp, proto = await self._wrap_create_connection( 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1112: in _wrap_create_connection 665s async with ceil_timeout( 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s exc_type = 665s exc_val = CancelledError(), exc_tb = 665s 665s async def __aexit__( 665s self, 665s exc_type: Optional[Type[BaseException]], 665s exc_val: Optional[BaseException], 665s exc_tb: Optional[TracebackType], 665s ) -> Optional[bool]: 665s assert self._state in (_State.ENTERED, _State.EXPIRING) 665s 665s if self._timeout_handler is not None: 665s self._timeout_handler.cancel() 665s self._timeout_handler = None 665s 665s if self._state is _State.EXPIRING: 665s self._state = _State.EXPIRED 665s 665s if self._task.uncancel() <= self._cancelling and exc_type is not None: 665s # Since there are no new cancel requests, we're 665s # handling this. 665s if issubclass(exc_type, exceptions.CancelledError): 665s > raise TimeoutError from exc_val 665s E TimeoutError 665s 665s /usr/lib/python3.13/asyncio/timeouts.py:116: TimeoutError 665s 665s The above exception was the direct cause of the following exception: 665s 665s self = 665s url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv' 665s kwargs = {}, info = {} 665s session = 665s policy = 'get' 665s 665s async def _info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s session = await self.set_session() 665s 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > await _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:427: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:839: in _file_info 665s r = await session.get(url, allow_redirects=ar, **kwargs) 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = , method = 'GET' 665s str_or_url = URL('https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv') 665s 665s async def _request( 665s self, 665s method: str, 665s str_or_url: StrOrURL, 665s *, 665s params: Query = None, 665s data: Any = None, 665s json: Any = None, 665s cookies: Optional[LooseCookies] = None, 665s headers: Optional[LooseHeaders] = None, 665s skip_auto_headers: Optional[Iterable[str]] = None, 665s auth: Optional[BasicAuth] = None, 665s allow_redirects: bool = True, 665s max_redirects: int = 10, 665s compress: Union[str, bool, None] = None, 665s chunked: Optional[bool] = None, 665s expect100: bool = False, 665s raise_for_status: Union[ 665s None, bool, Callable[[ClientResponse], Awaitable[None]] 665s ] = None, 665s read_until_eof: bool = True, 665s proxy: Optional[StrOrURL] = None, 665s proxy_auth: Optional[BasicAuth] = None, 665s timeout: Union[ClientTimeout, _SENTINEL] = sentinel, 665s verify_ssl: Optional[bool] = None, 665s fingerprint: Optional[bytes] = None, 665s ssl_context: Optional[SSLContext] = None, 665s ssl: Union[SSLContext, bool, Fingerprint] = True, 665s server_hostname: Optional[str] = None, 665s proxy_headers: Optional[LooseHeaders] = None, 665s trace_request_ctx: Optional[Mapping[str, Any]] = None, 665s read_bufsize: Optional[int] = None, 665s auto_decompress: Optional[bool] = None, 665s max_line_size: Optional[int] = None, 665s max_field_size: Optional[int] = None, 665s ) -> ClientResponse: 665s 665s # NOTE: timeout clamps existing connect and read timeouts. We cannot 665s # set the default to None because we need to detect if the user wants 665s # to use the existing timeouts by setting timeout to None. 665s 665s if self.closed: 665s raise RuntimeError("Session is closed") 665s 665s ssl = _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint) 665s 665s if data is not None and json is not None: 665s raise ValueError( 665s "data and json parameters can not be used at the same time" 665s ) 665s elif json is not None: 665s data = payload.JsonPayload(json, dumps=self._json_serialize) 665s 665s if not isinstance(chunked, bool) and chunked is not None: 665s warnings.warn("Chunk size is deprecated #1615", DeprecationWarning) 665s 665s redirects = 0 665s history: List[ClientResponse] = [] 665s version = self._version 665s params = params or {} 665s 665s # Merge with default headers and transform to CIMultiDict 665s headers = self._prepare_headers(headers) 665s 665s try: 665s url = self._build_url(str_or_url) 665s except ValueError as e: 665s raise InvalidUrlClientError(str_or_url) from e 665s 665s assert self._connector is not None 665s if url.scheme not in self._connector.allowed_protocol_schema_set: 665s raise NonHttpUrlClientError(url) 665s 665s skip_headers: Optional[Iterable[istr]] 665s if skip_auto_headers is not None: 665s skip_headers = { 665s istr(i) for i in skip_auto_headers 665s } | self._skip_auto_headers 665s elif self._skip_auto_headers: 665s skip_headers = self._skip_auto_headers 665s else: 665s skip_headers = None 665s 665s if proxy is None: 665s proxy = self._default_proxy 665s if proxy_auth is None: 665s proxy_auth = self._default_proxy_auth 665s 665s if proxy is None: 665s proxy_headers = None 665s else: 665s proxy_headers = self._prepare_headers(proxy_headers) 665s try: 665s proxy = URL(proxy) 665s except ValueError as e: 665s raise InvalidURL(proxy) from e 665s 665s if timeout is sentinel: 665s real_timeout: ClientTimeout = self._timeout 665s else: 665s if not isinstance(timeout, ClientTimeout): 665s real_timeout = ClientTimeout(total=timeout) 665s else: 665s real_timeout = timeout 665s # timeout is cumulative for all request operations 665s # (request, redirects, responses, data consuming) 665s tm = TimeoutHandle( 665s self._loop, real_timeout.total, ceil_threshold=real_timeout.ceil_threshold 665s ) 665s handle = tm.start() 665s 665s if read_bufsize is None: 665s read_bufsize = self._read_bufsize 665s 665s if auto_decompress is None: 665s auto_decompress = self._auto_decompress 665s 665s if max_line_size is None: 665s max_line_size = self._max_line_size 665s 665s if max_field_size is None: 665s max_field_size = self._max_field_size 665s 665s traces = [ 665s Trace( 665s self, 665s trace_config, 665s trace_config.trace_config_ctx(trace_request_ctx=trace_request_ctx), 665s ) 665s for trace_config in self._trace_configs 665s ] 665s 665s for trace in traces: 665s await trace.send_request_start(method, url.update_query(params), headers) 665s 665s timer = tm.timer() 665s try: 665s with timer: 665s # https://www.rfc-editor.org/rfc/rfc9112.html#name-retrying-requests 665s retry_persistent_connection = ( 665s self._retry_connection and method in IDEMPOTENT_METHODS 665s ) 665s while True: 665s url, auth_from_url = strip_auth_from_url(url) 665s if not url.raw_host: 665s # NOTE: Bail early, otherwise, causes `InvalidURL` through 665s # NOTE: `self._request_class()` below. 665s err_exc_cls = ( 665s InvalidUrlRedirectClientError 665s if redirects 665s else InvalidUrlClientError 665s ) 665s raise err_exc_cls(url) 665s # If `auth` was passed for an already authenticated URL, 665s # disallow only if this is the initial URL; this is to avoid issues 665s # with sketchy redirects that are not the caller's responsibility 665s if not history and (auth and auth_from_url): 665s raise ValueError( 665s "Cannot combine AUTH argument with " 665s "credentials encoded in URL" 665s ) 665s 665s # Override the auth with the one from the URL only if we 665s # have no auth, or if we got an auth from a redirect URL 665s if auth is None or (history and auth_from_url is not None): 665s auth = auth_from_url 665s 665s if ( 665s auth is None 665s and self._default_auth 665s and ( 665s not self._base_url or self._base_url_origin == url.origin() 665s ) 665s ): 665s auth = self._default_auth 665s # It would be confusing if we support explicit 665s # Authorization header with auth argument 665s if ( 665s headers is not None 665s and auth is not None 665s and hdrs.AUTHORIZATION in headers 665s ): 665s raise ValueError( 665s "Cannot combine AUTHORIZATION header " 665s "with AUTH argument or credentials " 665s "encoded in URL" 665s ) 665s 665s all_cookies = self._cookie_jar.filter_cookies(url) 665s 665s if cookies is not None: 665s tmp_cookie_jar = CookieJar( 665s quote_cookie=self._cookie_jar.quote_cookie 665s ) 665s tmp_cookie_jar.update_cookies(cookies) 665s req_cookies = tmp_cookie_jar.filter_cookies(url) 665s if req_cookies: 665s all_cookies.load(req_cookies) 665s 665s if proxy is not None: 665s proxy = URL(proxy) 665s elif self._trust_env: 665s with suppress(LookupError): 665s proxy, proxy_auth = get_env_proxy_for_url(url) 665s 665s req = self._request_class( 665s method, 665s url, 665s params=params, 665s headers=headers, 665s skip_auto_headers=skip_headers, 665s data=data, 665s cookies=all_cookies, 665s auth=auth, 665s version=version, 665s compress=compress, 665s chunked=chunked, 665s expect100=expect100, 665s loop=self._loop, 665s response_class=self._response_class, 665s proxy=proxy, 665s proxy_auth=proxy_auth, 665s timer=timer, 665s session=self, 665s ssl=ssl if ssl is not None else True, 665s server_hostname=server_hostname, 665s proxy_headers=proxy_headers, 665s traces=traces, 665s trust_env=self.trust_env, 665s ) 665s 665s # connection timeout 665s try: 665s conn = await self._connector.connect( 665s req, traces=traces, timeout=real_timeout 665s ) 665s except asyncio.TimeoutError as exc: 665s > raise ConnectionTimeoutError( 665s f"Connection timeout to host {url}" 665s ) from exc 665s E aiohttp.client_exceptions.ConnectionTimeoutError: Connection timeout to host https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv 665s 665s /usr/lib/python3/dist-packages/aiohttp/client.py:707: ConnectionTimeoutError 665s 665s The above exception was the direct cause of the following exception: 665s 665s def test_github_open_large_file(): 665s # test opening a large file >1 MB 665s # use block_size=0 to get a streaming interface to the file, ensuring that 665s # we fetch only the parts we need instead of downloading the full file all 665s # at once 665s > with fsspec.open( 665s "github://mwaskom:seaborn-data@83bfba7/brain_networks.csv", block_size=0 665s ) as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_github.py:15: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/core.py:105: in __enter__ 665s f = self.fs.open(self.path, mode=mode) 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/github.py:261: in _open 665s return self.http_fs.open( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:366: in _open 665s size = size or info.update(self.info(path, **kwargs)) or info["size"] 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:118: in wrapper 665s return sync(self.loop, func, *args, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:103: in sync 665s raise return_result 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:56: in _runner 665s result[0] = await coro 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv' 665s kwargs = {}, info = {} 665s session = 665s policy = 'get' 665s 665s async def _info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s session = await self.set_session() 665s 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s await _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: https://raw.githubusercontent.com/mwaskom/seaborn-data/83bfba7/brain_networks.csv 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:440: FileNotFoundError 665s __________________________ test_github_open_lfs_file ___________________________ 665s 665s self = 665s addr_infos = [] 665s req = 665s timeout = ClientTimeout(total=300, connect=None, sock_read=None, sock_connect=30, ceil_threshold=5) 665s client_error = 665s args = (functools.partial(, loop=<_UnixSelectorEventLoop running=True closed=False debug=False>),) 665s kwargs = {'server_hostname': 'media.githubusercontent.com', 'ssl': } 665s 665s async def _wrap_create_connection( 665s self, 665s *args: Any, 665s addr_infos: List[aiohappyeyeballs.AddrInfoType], 665s req: ClientRequest, 665s timeout: "ClientTimeout", 665s client_error: Type[Exception] = ClientConnectorError, 665s **kwargs: Any, 665s ) -> Tuple[asyncio.Transport, ResponseHandler]: 665s try: 665s async with ceil_timeout( 665s timeout.sock_connect, ceil_threshold=timeout.ceil_threshold 665s ): 665s > sock = await aiohappyeyeballs.start_connection( 665s addr_infos=addr_infos, 665s local_addr_infos=self._local_addr_infos, 665s happy_eyeballs_delay=self._happy_eyeballs_delay, 665s interleave=self._interleave, 665s loop=self._loop, 665s ) 665s 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1115: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/impl.py:87: in start_connection 665s sock, _, _ = await _staggered.staggered_race( 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:165: in staggered_race 665s done = await _wait_one( 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s futures = {.run_one_coro() done, defined at /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:115> result=None>} 665s loop = <_UnixSelectorEventLoop running=True closed=False debug=False> 665s 665s async def _wait_one( 665s futures: "Iterable[asyncio.Future[Any]]", 665s loop: asyncio.AbstractEventLoop, 665s ) -> _T: 665s """Wait for the first future to complete.""" 665s wait_next = loop.create_future() 665s 665s def _on_completion(fut: "asyncio.Future[Any]") -> None: 665s if not wait_next.done(): 665s wait_next.set_result(fut) 665s 665s for f in futures: 665s f.add_done_callback(_on_completion) 665s 665s try: 665s > return await wait_next 665s E asyncio.exceptions.CancelledError 665s 665s /usr/lib/python3/dist-packages/aiohappyeyeballs/_staggered.py:46: CancelledError 665s 665s The above exception was the direct cause of the following exception: 665s 665s self = , method = 'GET' 665s str_or_url = URL('https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt') 665s 665s async def _request( 665s self, 665s method: str, 665s str_or_url: StrOrURL, 665s *, 665s params: Query = None, 665s data: Any = None, 665s json: Any = None, 665s cookies: Optional[LooseCookies] = None, 665s headers: Optional[LooseHeaders] = None, 665s skip_auto_headers: Optional[Iterable[str]] = None, 665s auth: Optional[BasicAuth] = None, 665s allow_redirects: bool = True, 665s max_redirects: int = 10, 665s compress: Union[str, bool, None] = None, 665s chunked: Optional[bool] = None, 665s expect100: bool = False, 665s raise_for_status: Union[ 665s None, bool, Callable[[ClientResponse], Awaitable[None]] 665s ] = None, 665s read_until_eof: bool = True, 665s proxy: Optional[StrOrURL] = None, 665s proxy_auth: Optional[BasicAuth] = None, 665s timeout: Union[ClientTimeout, _SENTINEL] = sentinel, 665s verify_ssl: Optional[bool] = None, 665s fingerprint: Optional[bytes] = None, 665s ssl_context: Optional[SSLContext] = None, 665s ssl: Union[SSLContext, bool, Fingerprint] = True, 665s server_hostname: Optional[str] = None, 665s proxy_headers: Optional[LooseHeaders] = None, 665s trace_request_ctx: Optional[Mapping[str, Any]] = None, 665s read_bufsize: Optional[int] = None, 665s auto_decompress: Optional[bool] = None, 665s max_line_size: Optional[int] = None, 665s max_field_size: Optional[int] = None, 665s ) -> ClientResponse: 665s 665s # NOTE: timeout clamps existing connect and read timeouts. We cannot 665s # set the default to None because we need to detect if the user wants 665s # to use the existing timeouts by setting timeout to None. 665s 665s if self.closed: 665s raise RuntimeError("Session is closed") 665s 665s ssl = _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint) 665s 665s if data is not None and json is not None: 665s raise ValueError( 665s "data and json parameters can not be used at the same time" 665s ) 665s elif json is not None: 665s data = payload.JsonPayload(json, dumps=self._json_serialize) 665s 665s if not isinstance(chunked, bool) and chunked is not None: 665s warnings.warn("Chunk size is deprecated #1615", DeprecationWarning) 665s 665s redirects = 0 665s history: List[ClientResponse] = [] 665s version = self._version 665s params = params or {} 665s 665s # Merge with default headers and transform to CIMultiDict 665s headers = self._prepare_headers(headers) 665s 665s try: 665s url = self._build_url(str_or_url) 665s except ValueError as e: 665s raise InvalidUrlClientError(str_or_url) from e 665s 665s assert self._connector is not None 665s if url.scheme not in self._connector.allowed_protocol_schema_set: 665s raise NonHttpUrlClientError(url) 665s 665s skip_headers: Optional[Iterable[istr]] 665s if skip_auto_headers is not None: 665s skip_headers = { 665s istr(i) for i in skip_auto_headers 665s } | self._skip_auto_headers 665s elif self._skip_auto_headers: 665s skip_headers = self._skip_auto_headers 665s else: 665s skip_headers = None 665s 665s if proxy is None: 665s proxy = self._default_proxy 665s if proxy_auth is None: 665s proxy_auth = self._default_proxy_auth 665s 665s if proxy is None: 665s proxy_headers = None 665s else: 665s proxy_headers = self._prepare_headers(proxy_headers) 665s try: 665s proxy = URL(proxy) 665s except ValueError as e: 665s raise InvalidURL(proxy) from e 665s 665s if timeout is sentinel: 665s real_timeout: ClientTimeout = self._timeout 665s else: 665s if not isinstance(timeout, ClientTimeout): 665s real_timeout = ClientTimeout(total=timeout) 665s else: 665s real_timeout = timeout 665s # timeout is cumulative for all request operations 665s # (request, redirects, responses, data consuming) 665s tm = TimeoutHandle( 665s self._loop, real_timeout.total, ceil_threshold=real_timeout.ceil_threshold 665s ) 665s handle = tm.start() 665s 665s if read_bufsize is None: 665s read_bufsize = self._read_bufsize 665s 665s if auto_decompress is None: 665s auto_decompress = self._auto_decompress 665s 665s if max_line_size is None: 665s max_line_size = self._max_line_size 665s 665s if max_field_size is None: 665s max_field_size = self._max_field_size 665s 665s traces = [ 665s Trace( 665s self, 665s trace_config, 665s trace_config.trace_config_ctx(trace_request_ctx=trace_request_ctx), 665s ) 665s for trace_config in self._trace_configs 665s ] 665s 665s for trace in traces: 665s await trace.send_request_start(method, url.update_query(params), headers) 665s 665s timer = tm.timer() 665s try: 665s with timer: 665s # https://www.rfc-editor.org/rfc/rfc9112.html#name-retrying-requests 665s retry_persistent_connection = ( 665s self._retry_connection and method in IDEMPOTENT_METHODS 665s ) 665s while True: 665s url, auth_from_url = strip_auth_from_url(url) 665s if not url.raw_host: 665s # NOTE: Bail early, otherwise, causes `InvalidURL` through 665s # NOTE: `self._request_class()` below. 665s err_exc_cls = ( 665s InvalidUrlRedirectClientError 665s if redirects 665s else InvalidUrlClientError 665s ) 665s raise err_exc_cls(url) 665s # If `auth` was passed for an already authenticated URL, 665s # disallow only if this is the initial URL; this is to avoid issues 665s # with sketchy redirects that are not the caller's responsibility 665s if not history and (auth and auth_from_url): 665s raise ValueError( 665s "Cannot combine AUTH argument with " 665s "credentials encoded in URL" 665s ) 665s 665s # Override the auth with the one from the URL only if we 665s # have no auth, or if we got an auth from a redirect URL 665s if auth is None or (history and auth_from_url is not None): 665s auth = auth_from_url 665s 665s if ( 665s auth is None 665s and self._default_auth 665s and ( 665s not self._base_url or self._base_url_origin == url.origin() 665s ) 665s ): 665s auth = self._default_auth 665s # It would be confusing if we support explicit 665s # Authorization header with auth argument 665s if ( 665s headers is not None 665s and auth is not None 665s and hdrs.AUTHORIZATION in headers 665s ): 665s raise ValueError( 665s "Cannot combine AUTHORIZATION header " 665s "with AUTH argument or credentials " 665s "encoded in URL" 665s ) 665s 665s all_cookies = self._cookie_jar.filter_cookies(url) 665s 665s if cookies is not None: 665s tmp_cookie_jar = CookieJar( 665s quote_cookie=self._cookie_jar.quote_cookie 665s ) 665s tmp_cookie_jar.update_cookies(cookies) 665s req_cookies = tmp_cookie_jar.filter_cookies(url) 665s if req_cookies: 665s all_cookies.load(req_cookies) 665s 665s if proxy is not None: 665s proxy = URL(proxy) 665s elif self._trust_env: 665s with suppress(LookupError): 665s proxy, proxy_auth = get_env_proxy_for_url(url) 665s 665s req = self._request_class( 665s method, 665s url, 665s params=params, 665s headers=headers, 665s skip_auto_headers=skip_headers, 665s data=data, 665s cookies=all_cookies, 665s auth=auth, 665s version=version, 665s compress=compress, 665s chunked=chunked, 665s expect100=expect100, 665s loop=self._loop, 665s response_class=self._response_class, 665s proxy=proxy, 665s proxy_auth=proxy_auth, 665s timer=timer, 665s session=self, 665s ssl=ssl if ssl is not None else True, 665s server_hostname=server_hostname, 665s proxy_headers=proxy_headers, 665s traces=traces, 665s trust_env=self.trust_env, 665s ) 665s 665s # connection timeout 665s try: 665s > conn = await self._connector.connect( 665s req, traces=traces, timeout=real_timeout 665s ) 665s 665s /usr/lib/python3/dist-packages/aiohttp/client.py:703: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:548: in connect 665s proto = await self._create_connection(req, traces, timeout) 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1056: in _create_connection 665s _, proto = await self._create_direct_connection(req, traces, timeout) 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1400: in _create_direct_connection 665s raise last_exc 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1369: in _create_direct_connection 665s transp, proto = await self._wrap_create_connection( 665s /usr/lib/python3/dist-packages/aiohttp/connector.py:1112: in _wrap_create_connection 665s async with ceil_timeout( 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s exc_type = 665s exc_val = CancelledError(), exc_tb = 665s 665s async def __aexit__( 665s self, 665s exc_type: Optional[Type[BaseException]], 665s exc_val: Optional[BaseException], 665s exc_tb: Optional[TracebackType], 665s ) -> Optional[bool]: 665s assert self._state in (_State.ENTERED, _State.EXPIRING) 665s 665s if self._timeout_handler is not None: 665s self._timeout_handler.cancel() 665s self._timeout_handler = None 665s 665s if self._state is _State.EXPIRING: 665s self._state = _State.EXPIRED 665s 665s if self._task.uncancel() <= self._cancelling and exc_type is not None: 665s # Since there are no new cancel requests, we're 665s # handling this. 665s if issubclass(exc_type, exceptions.CancelledError): 665s > raise TimeoutError from exc_val 665s E TimeoutError 665s 665s /usr/lib/python3.13/asyncio/timeouts.py:116: TimeoutError 665s 665s The above exception was the direct cause of the following exception: 665s 665s self = 665s url = 'https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt' 665s kwargs = {}, info = {} 665s session = 665s policy = 'get' 665s 665s async def _info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s session = await self.set_session() 665s 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > await _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:427: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:839: in _file_info 665s r = await session.get(url, allow_redirects=ar, **kwargs) 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = , method = 'GET' 665s str_or_url = URL('https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt') 665s 665s async def _request( 665s self, 665s method: str, 665s str_or_url: StrOrURL, 665s *, 665s params: Query = None, 665s data: Any = None, 665s json: Any = None, 665s cookies: Optional[LooseCookies] = None, 665s headers: Optional[LooseHeaders] = None, 665s skip_auto_headers: Optional[Iterable[str]] = None, 665s auth: Optional[BasicAuth] = None, 665s allow_redirects: bool = True, 665s max_redirects: int = 10, 665s compress: Union[str, bool, None] = None, 665s chunked: Optional[bool] = None, 665s expect100: bool = False, 665s raise_for_status: Union[ 665s None, bool, Callable[[ClientResponse], Awaitable[None]] 665s ] = None, 665s read_until_eof: bool = True, 665s proxy: Optional[StrOrURL] = None, 665s proxy_auth: Optional[BasicAuth] = None, 665s timeout: Union[ClientTimeout, _SENTINEL] = sentinel, 665s verify_ssl: Optional[bool] = None, 665s fingerprint: Optional[bytes] = None, 665s ssl_context: Optional[SSLContext] = None, 665s ssl: Union[SSLContext, bool, Fingerprint] = True, 665s server_hostname: Optional[str] = None, 665s proxy_headers: Optional[LooseHeaders] = None, 665s trace_request_ctx: Optional[Mapping[str, Any]] = None, 665s read_bufsize: Optional[int] = None, 665s auto_decompress: Optional[bool] = None, 665s max_line_size: Optional[int] = None, 665s max_field_size: Optional[int] = None, 665s ) -> ClientResponse: 665s 665s # NOTE: timeout clamps existing connect and read timeouts. We cannot 665s # set the default to None because we need to detect if the user wants 665s # to use the existing timeouts by setting timeout to None. 665s 665s if self.closed: 665s raise RuntimeError("Session is closed") 665s 665s ssl = _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint) 665s 665s if data is not None and json is not None: 665s raise ValueError( 665s "data and json parameters can not be used at the same time" 665s ) 665s elif json is not None: 665s data = payload.JsonPayload(json, dumps=self._json_serialize) 665s 665s if not isinstance(chunked, bool) and chunked is not None: 665s warnings.warn("Chunk size is deprecated #1615", DeprecationWarning) 665s 665s redirects = 0 665s history: List[ClientResponse] = [] 665s version = self._version 665s params = params or {} 665s 665s # Merge with default headers and transform to CIMultiDict 665s headers = self._prepare_headers(headers) 665s 665s try: 665s url = self._build_url(str_or_url) 665s except ValueError as e: 665s raise InvalidUrlClientError(str_or_url) from e 665s 665s assert self._connector is not None 665s if url.scheme not in self._connector.allowed_protocol_schema_set: 665s raise NonHttpUrlClientError(url) 665s 665s skip_headers: Optional[Iterable[istr]] 665s if skip_auto_headers is not None: 665s skip_headers = { 665s istr(i) for i in skip_auto_headers 665s } | self._skip_auto_headers 665s elif self._skip_auto_headers: 665s skip_headers = self._skip_auto_headers 665s else: 665s skip_headers = None 665s 665s if proxy is None: 665s proxy = self._default_proxy 665s if proxy_auth is None: 665s proxy_auth = self._default_proxy_auth 665s 665s if proxy is None: 665s proxy_headers = None 665s else: 665s proxy_headers = self._prepare_headers(proxy_headers) 665s try: 665s proxy = URL(proxy) 665s except ValueError as e: 665s raise InvalidURL(proxy) from e 665s 665s if timeout is sentinel: 665s real_timeout: ClientTimeout = self._timeout 665s else: 665s if not isinstance(timeout, ClientTimeout): 665s real_timeout = ClientTimeout(total=timeout) 665s else: 665s real_timeout = timeout 665s # timeout is cumulative for all request operations 665s # (request, redirects, responses, data consuming) 665s tm = TimeoutHandle( 665s self._loop, real_timeout.total, ceil_threshold=real_timeout.ceil_threshold 665s ) 665s handle = tm.start() 665s 665s if read_bufsize is None: 665s read_bufsize = self._read_bufsize 665s 665s if auto_decompress is None: 665s auto_decompress = self._auto_decompress 665s 665s if max_line_size is None: 665s max_line_size = self._max_line_size 665s 665s if max_field_size is None: 665s max_field_size = self._max_field_size 665s 665s traces = [ 665s Trace( 665s self, 665s trace_config, 665s trace_config.trace_config_ctx(trace_request_ctx=trace_request_ctx), 665s ) 665s for trace_config in self._trace_configs 665s ] 665s 665s for trace in traces: 665s await trace.send_request_start(method, url.update_query(params), headers) 665s 665s timer = tm.timer() 665s try: 665s with timer: 665s # https://www.rfc-editor.org/rfc/rfc9112.html#name-retrying-requests 665s retry_persistent_connection = ( 665s self._retry_connection and method in IDEMPOTENT_METHODS 665s ) 665s while True: 665s url, auth_from_url = strip_auth_from_url(url) 665s if not url.raw_host: 665s # NOTE: Bail early, otherwise, causes `InvalidURL` through 665s # NOTE: `self._request_class()` below. 665s err_exc_cls = ( 665s InvalidUrlRedirectClientError 665s if redirects 665s else InvalidUrlClientError 665s ) 665s raise err_exc_cls(url) 665s # If `auth` was passed for an already authenticated URL, 665s # disallow only if this is the initial URL; this is to avoid issues 665s # with sketchy redirects that are not the caller's responsibility 665s if not history and (auth and auth_from_url): 665s raise ValueError( 665s "Cannot combine AUTH argument with " 665s "credentials encoded in URL" 665s ) 665s 665s # Override the auth with the one from the URL only if we 665s # have no auth, or if we got an auth from a redirect URL 665s if auth is None or (history and auth_from_url is not None): 665s auth = auth_from_url 665s 665s if ( 665s auth is None 665s and self._default_auth 665s and ( 665s not self._base_url or self._base_url_origin == url.origin() 665s ) 665s ): 665s auth = self._default_auth 665s # It would be confusing if we support explicit 665s # Authorization header with auth argument 665s if ( 665s headers is not None 665s and auth is not None 665s and hdrs.AUTHORIZATION in headers 665s ): 665s raise ValueError( 665s "Cannot combine AUTHORIZATION header " 665s "with AUTH argument or credentials " 665s "encoded in URL" 665s ) 665s 665s all_cookies = self._cookie_jar.filter_cookies(url) 665s 665s if cookies is not None: 665s tmp_cookie_jar = CookieJar( 665s quote_cookie=self._cookie_jar.quote_cookie 665s ) 665s tmp_cookie_jar.update_cookies(cookies) 665s req_cookies = tmp_cookie_jar.filter_cookies(url) 665s if req_cookies: 665s all_cookies.load(req_cookies) 665s 665s if proxy is not None: 665s proxy = URL(proxy) 665s elif self._trust_env: 665s with suppress(LookupError): 665s proxy, proxy_auth = get_env_proxy_for_url(url) 665s 665s req = self._request_class( 665s method, 665s url, 665s params=params, 665s headers=headers, 665s skip_auto_headers=skip_headers, 665s data=data, 665s cookies=all_cookies, 665s auth=auth, 665s version=version, 665s compress=compress, 665s chunked=chunked, 665s expect100=expect100, 665s loop=self._loop, 665s response_class=self._response_class, 665s proxy=proxy, 665s proxy_auth=proxy_auth, 665s timer=timer, 665s session=self, 665s ssl=ssl if ssl is not None else True, 665s server_hostname=server_hostname, 665s proxy_headers=proxy_headers, 665s traces=traces, 665s trust_env=self.trust_env, 665s ) 665s 665s # connection timeout 665s try: 665s conn = await self._connector.connect( 665s req, traces=traces, timeout=real_timeout 665s ) 665s except asyncio.TimeoutError as exc: 665s > raise ConnectionTimeoutError( 665s f"Connection timeout to host {url}" 665s ) from exc 665s E aiohttp.client_exceptions.ConnectionTimeoutError: Connection timeout to host https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt 665s 665s /usr/lib/python3/dist-packages/aiohttp/client.py:707: ConnectionTimeoutError 665s 665s The above exception was the direct cause of the following exception: 665s 665s def test_github_open_lfs_file(): 665s # test opening a git-lfs tracked file 665s > with fsspec.open( 665s "github://cBioPortal:datahub@55cd360" 665s "/public/acc_2019/data_gene_panel_matrix.txt", 665s block_size=0, 665s ) as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_github.py:24: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/core.py:105: in __enter__ 665s f = self.fs.open(self.path, mode=mode) 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/github.py:261: in _open 665s return self.http_fs.open( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:366: in _open 665s size = size or info.update(self.info(path, **kwargs)) or info["size"] 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:118: in wrapper 665s return sync(self.loop, func, *args, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:103: in sync 665s raise return_result 665s /usr/lib/python3/dist-packages/fsspec/asyn.py:56: in _runner 665s result[0] = await coro 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt' 665s kwargs = {}, info = {} 665s session = 665s policy = 'get' 665s 665s async def _info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s session = await self.set_session() 665s 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s await _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: https://media.githubusercontent.com/media/cBioPortal/datahub/55cd360/public/acc_2019/data_gene_panel_matrix.txt 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http.py:440: FileNotFoundError 665s __________________________________ test_list ___________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list(server, sync): 665s h = fsspec.filesystem("http") 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:23: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _______________________________ test_list_cache ________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True) 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:35: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ___________________ test_list_cache_with_expiry_time_cached ____________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache_with_expiry_time_cached(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True, listings_expiry_time=30) 665s 665s # First, the directory cache is not initialized. 665s assert not h.dircache 665s 665s # By querying the filesystem with "use_listings_cache=True", 665s # the cache will automatically get populated. 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:47: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ___________________ test_list_cache_with_expiry_time_purged ____________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache_with_expiry_time_purged(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True, listings_expiry_time=0.3) 665s 665s # First, the directory cache is not initialized. 665s assert not h.dircache 665s 665s # By querying the filesystem with "use_listings_cache=True", 665s # the cache will automatically get populated. 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:65: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ____________________________ test_list_cache_reuse _____________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache_reuse(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True, listings_expiry_time=5) 665s 665s # First, the directory cache is not initialized. 665s assert not h.dircache 665s 665s # By querying the filesystem with "use_listings_cache=True", 665s # the cache will automatically get populated. 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:96: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _________________________ test_ls_raises_filenotfound __________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_ls_raises_filenotfound(server, sync): 665s h = fsspec.filesystem("http") 665s 665s with pytest.raises(FileNotFoundError): 665s > h.ls(server.address + "/not-a-key") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:121: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/not-a-key 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ________________________ test_list_cache_with_max_paths ________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache_with_max_paths(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True, max_paths=5) 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:126: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ___________________ test_list_cache_with_skip_instance_cache ___________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_list_cache_with_skip_instance_cache(server, sync): 665s h = fsspec.filesystem("http", use_listings_cache=True, skip_instance_cache=True) 665s > out = h.glob(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:132: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s __________________________________ test_isdir __________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_isdir(server, sync): 665s h = fsspec.filesystem("http") 665s > assert h.isdir(server.address + "/index/") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:138: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _________________________________ test_exists __________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_exists(server, sync): 665s h = fsspec.filesystem("http") 665s assert not h.exists(server.address + "/notafile") 665s with pytest.raises(FileNotFoundError): 665s > h.cat(server.address + "/notafile") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:147: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:884: in cat 665s return self.cat_file(paths[0], **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:369: in cat_file 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/notafile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s __________________________________ test_read ___________________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_read(server, sync): 665s h = fsspec.filesystem("http") 665s out = server.address + "/index/realfile" 665s # with h.open(out, "rb") as f: 665s # assert f.read() == data 665s # with h.open(out, "rb", block_size=0) as f: 665s # assert f.read() == data 665s > with h.open(out, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:157: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________________ test_methods _________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_methods(server, sync): 665s h = fsspec.filesystem("http") 665s url = server.address + "/index/realfile" 665s > assert h.exists(url) 665s E AssertionError: assert False 665s E + where False = exists('http://127.0.0.1:39339/index/realfile') 665s E + where exists = .exists 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:166: AssertionError 665s _________________________ test_random_access[headers0] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers1] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers2] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true', 'head_ok': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers3] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_range': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers4] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true', 'head_not_auth': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers5] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_range': 'true', 'head_not_auth': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers6] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'head_give_length': 'true', 'head_ok': 'true', 'use_206': 'true'} 665s sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers7] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true', 'use_206': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _________________________ test_random_access[headers8] _________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_range': 'true', 'use_206': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {}, 665s {"give_length": "true"}, 665s {"give_length": "true", "head_ok": "true"}, 665s {"give_range": "true"}, 665s {"give_length": "true", "head_not_auth": "true"}, 665s {"give_range": "true", "head_not_auth": "true"}, 665s {"use_206": "true", "head_ok": "true", "head_give_length": "true"}, 665s {"use_206": "true", "give_length": "true"}, 665s {"use_206": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_random_access(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:187: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _______________________ test_no_range_support[headers0] ________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true', 'head_ok': 'true', 'ignore_range': 'true'} 665s sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {"ignore_range": "true", "head_ok": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_no_range_support(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:212: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _______________________ test_no_range_support[headers1] ________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_length': 'true', 'ignore_range': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {"ignore_range": "true", "head_ok": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_no_range_support(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:212: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _______________________ test_no_range_support[headers2] ________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s headers = {'give_range': 'true', 'ignore_range': 'true'}, sync = None 665s 665s @pytest.mark.parametrize( 665s "headers", 665s [ 665s {"ignore_range": "true", "head_ok": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_length": "true"}, 665s {"ignore_range": "true", "give_range": "true"}, 665s ], 665s ) 665s def test_no_range_support(server, headers, sync): 665s h = fsspec.filesystem("http", headers=headers) 665s url = server.address + "/index/realfile" 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:212: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _______________________________ test_mapper_url ________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_mapper_url(server, sync): 665s h = fsspec.filesystem("http") 665s mapper = h.get_mapper(server.address + "/index/") 665s assert mapper.root.startswith("http:") 665s > assert list(mapper) 665s E assert [] 665s E + where [] = list() 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:227: AssertionError 665s ___________________________ test_content_length_zero ___________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_content_length_zero(server, sync): 665s h = fsspec.filesystem( 665s "http", headers={"give_length": "true", "zero_length": "true"} 665s ) 665s url = server.address + "/index/realfile" 665s 665s > with h.open(url, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:240: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s ________________________________ test_download _________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s tmpdir = local('/tmp/pytest-of-root/pytest-1/test_download1'), sync = None 665s 665s def test_download(server, tmpdir, sync): 665s h = fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true "}) 665s url = server.address + "/index/realfile" 665s fn = os.path.join(tmpdir, "afile") 665s > h.get(url, fn) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:248: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:950: in get 665s rpaths = [p for p in rpaths if not (trailing_sep(p) or self.isdir(p))] 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _____________________________ test_multi_download ______________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s tmpdir = local('/tmp/pytest-of-root/pytest-1/test_multi_download1'), sync = None 665s 665s def test_multi_download(server, tmpdir, sync): 665s h = fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true "}) 665s urla = server.address + "/index/realfile" 665s urlb = server.address + "/index/otherfile" 665s fna = os.path.join(tmpdir, "afile") 665s fnb = os.path.join(tmpdir, "bfile") 665s > h.get([urla, urlb], [fna, fnb]) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:258: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:976: in get 665s self.get_file(rpath, lpath, callback=child, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:388: in get_file 665s self._raise_not_found_for_status(r, rpath) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ___________________________________ test_ls ____________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_ls(server, sync): 665s h = fsspec.filesystem("http") 665s > l = h.ls(server.address + "/data/20020401/", detail=False) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:265: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/data/20020401/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s __________________________________ test_mcat ___________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_mcat(server, sync): 665s h = fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true "}) 665s urla = server.address + "/index/realfile" 665s urlb = server.address + "/index/otherfile" 665s > out = h.cat([urla, urlb]) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:277: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:876: in cat 665s out[path] = self.cat_file(path, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:369: in cat_file 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/otherfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _____________________________ test_cat_file_range ______________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_cat_file_range(server, sync): 665s h = fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true "}) 665s urla = server.address + "/index/realfile" 665s > assert h.cat(urla, start=1, end=10) == data[1:10] 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:284: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:884: in cat 665s return self.cat_file(paths[0], **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:369: in cat_file 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _______________________________ test_mcat_expand _______________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_mcat_expand(server, sync): 665s h = fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true "}) 665s > out = h.cat(server.address + "/index/*") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:302: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:867: in cat 665s paths = self.expand_path(path, recursive=recursive) 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1147: in expand_path 665s out = self.expand_path([path], recursive, maxdepth) 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1153: in expand_path 665s bit = set(self.glob(p, maxdepth=maxdepth, **kwargs)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:609: in glob 665s allpaths = self.find( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:499: in find 665s if withdirs and path != "" and self.isdir(path): 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:650: in isdir 665s return bool(self.ls(path)) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:344: in ls 665s out = self._ls_real(url, detail=detail, **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:300: in _ls_real 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/ 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s __________________________________ test_info ___________________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_info(server, sync): 665s fs = fsspec.filesystem("http", headers={"give_etag": "true", "head_ok": "true"}) 665s > info = fs.info(server.address + "/index/realfile") 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:308: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s _____________________________ test_put_file[POST] ______________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s tmp_path = PosixPath('/tmp/pytest-of-root/pytest-1/test_put_file_POST_1') 665s method = 'POST', reset_files = None, sync = None 665s 665s @pytest.mark.parametrize("method", ["POST", "PUT"]) 665s def test_put_file(server, tmp_path, method, reset_files, sync): 665s src_file = tmp_path / "file_1" 665s src_file.write_bytes(data) 665s 665s dwl_file = tmp_path / "down_1" 665s 665s fs = fsspec.filesystem("http", headers={"head_ok": "true", "give_length": "true"}) 665s with pytest.raises(FileNotFoundError): 665s fs.info(server.address + "/hey") 665s 665s > fs.put_file(src_file, server.address + "/hey", method=method) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:323: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:438: in put_file 665s self._raise_not_found_for_status(resp, rpath) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/hey 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s ______________________________ test_put_file[PUT] ______________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s tmp_path = PosixPath('/tmp/pytest-of-root/pytest-1/test_put_file_PUT_1') 665s method = 'PUT', reset_files = None, sync = None 665s 665s @pytest.mark.parametrize("method", ["POST", "PUT"]) 665s def test_put_file(server, tmp_path, method, reset_files, sync): 665s src_file = tmp_path / "file_1" 665s src_file.write_bytes(data) 665s 665s dwl_file = tmp_path / "down_1" 665s 665s fs = fsspec.filesystem("http", headers={"head_ok": "true", "give_length": "true"}) 665s with pytest.raises(FileNotFoundError): 665s fs.info(server.address + "/hey") 665s 665s > fs.put_file(src_file, server.address + "/hey", method=method) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:323: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:438: in put_file 665s self._raise_not_found_for_status(resp, rpath) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/hey 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _________________________________ test_encoded _________________________________ 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_encoded(server, sync): 665s fs = fsspec.filesystem("http", encoded=False) 665s > out = fs.cat(server.address + "/Hello: Günter", headers={"give_path": "true"}) 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:340: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/spec.py:884: in cat 665s return self.cat_file(paths[0], **kwargs) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:369: in cat_file 665s self._raise_not_found_for_status(r, url) 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:354: in _raise_not_found_for_status 665s response.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/Hello:%20G%C3%BCnter 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s _______________________________ test_with_cache ________________________________ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s > _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:549: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:894: in _file_info 665s r.raise_for_status() 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s 665s def raise_for_status(self): 665s """Raises :class:`HTTPError`, if one occurred.""" 665s 665s http_error_msg = "" 665s if isinstance(self.reason, bytes): 665s # We attempt to decode utf-8 first because some servers 665s # choose to localize their reason strings. If the string 665s # isn't utf-8, we fall back to iso-8859-1 for all other 665s # encodings. (See PR #3538) 665s try: 665s reason = self.reason.decode("utf-8") 665s except UnicodeDecodeError: 665s reason = self.reason.decode("iso-8859-1") 665s else: 665s reason = self.reason 665s 665s if 400 <= self.status_code < 500: 665s http_error_msg = ( 665s f"{self.status_code} Client Error: {reason} for url: {self.url}" 665s ) 665s 665s elif 500 <= self.status_code < 600: 665s http_error_msg = ( 665s f"{self.status_code} Server Error: {reason} for url: {self.url}" 665s ) 665s 665s if http_error_msg: 665s > raise HTTPError(http_error_msg, response=self) 665s E requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/requests/models.py:1024: HTTPError 665s 665s The above exception was the direct cause of the following exception: 665s 665s server = namespace(address='http://127.0.0.1:39339', realfile='http://127.0.0.1:39339/index/realfile') 665s sync = None 665s 665s def test_with_cache(server, sync): 665s fs = fsspec.filesystem("http", headers={"head_ok": "true", "give_length": "true"}) 665s fn = server.address + "/index/realfile" 665s fs1 = fsspec.filesystem("blockcache", fs=fs) 665s > with fs1.open(fn, "rb") as f: 665s 665s /tmp/autopkgtest.ZiWZFH/autopkgtest_tmp/implementations_tests/test_http_sync.py:348: 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s /usr/lib/python3/dist-packages/fsspec/implementations/cached.py:458: in 665s return lambda *args, **kw: getattr(type(self), item).__get__(self)( 665s /usr/lib/python3/dist-packages/fsspec/spec.py:1310: in open 665s f = self._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/cached.py:458: in 665s return lambda *args, **kw: getattr(type(self), item).__get__(self)( 665s /usr/lib/python3/dist-packages/fsspec/implementations/cached.py:340: in _open 665s f = self.fs._open( 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:509: in _open 665s size = size or self.info(path, **kwargs)["size"] 665s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 665s 665s self = 665s url = 'http://127.0.0.1:39339/index/realfile', kwargs = {}, info = {} 665s policy = 'get' 665s 665s def info(self, url, **kwargs): 665s """Get info of URL 665s 665s Tries to access location via HEAD, and then GET methods, but does 665s not fetch the data. 665s 665s It is possible that the server does not supply any size information, in 665s which case size will be given as None (and certain operations on the 665s corresponding file will not work). 665s """ 665s info = {} 665s for policy in ["head", "get"]: 665s try: 665s info.update( 665s _file_info( 665s self.encode_url(url), 665s size_policy=policy, 665s session=self.session, 665s **self.kwargs, 665s **kwargs, 665s ) 665s ) 665s if info.get("size") is not None: 665s break 665s except Exception as exc: 665s if policy == "get": 665s # If get failed, then raise a FileNotFoundError 665s > raise FileNotFoundError(url) from exc 665s E FileNotFoundError: http://127.0.0.1:39339/index/realfile 665s 665s /usr/lib/python3/dist-packages/fsspec/implementations/http_sync.py:562: FileNotFoundError 665s =========================== short test summary info ============================ 665s FAILED implementations_tests/test_github.py::test_github_open_large_file - Fi... 665s FAILED implementations_tests/test_github.py::test_github_open_lfs_file - File... 665s FAILED implementations_tests/test_http_sync.py::test_list - requests.exceptio... 665s FAILED implementations_tests/test_http_sync.py::test_list_cache - requests.ex... 665s FAILED implementations_tests/test_http_sync.py::test_list_cache_with_expiry_time_cached 665s FAILED implementations_tests/test_http_sync.py::test_list_cache_with_expiry_time_purged 665s FAILED implementations_tests/test_http_sync.py::test_list_cache_reuse - reque... 665s FAILED implementations_tests/test_http_sync.py::test_ls_raises_filenotfound 665s FAILED implementations_tests/test_http_sync.py::test_list_cache_with_max_paths 665s FAILED implementations_tests/test_http_sync.py::test_list_cache_with_skip_instance_cache 665s FAILED implementations_tests/test_http_sync.py::test_isdir - requests.excepti... 665s FAILED implementations_tests/test_http_sync.py::test_exists - requests.except... 665s FAILED implementations_tests/test_http_sync.py::test_read - FileNotFoundError... 665s FAILED implementations_tests/test_http_sync.py::test_methods - AssertionError... 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers0] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers1] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers2] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers3] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers4] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers5] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers6] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers7] 665s FAILED implementations_tests/test_http_sync.py::test_random_access[headers8] 665s FAILED implementations_tests/test_http_sync.py::test_no_range_support[headers0] 665s FAILED implementations_tests/test_http_sync.py::test_no_range_support[headers1] 665s FAILED implementations_tests/test_http_sync.py::test_no_range_support[headers2] 665s FAILED implementations_tests/test_http_sync.py::test_mapper_url - assert [] 665s FAILED implementations_tests/test_http_sync.py::test_content_length_zero - Fi... 665s FAILED implementations_tests/test_http_sync.py::test_download - requests.exce... 665s FAILED implementations_tests/test_http_sync.py::test_multi_download - request... 665s FAILED implementations_tests/test_http_sync.py::test_ls - requests.exceptions... 665s FAILED implementations_tests/test_http_sync.py::test_mcat - requests.exceptio... 665s FAILED implementations_tests/test_http_sync.py::test_cat_file_range - request... 665s FAILED implementations_tests/test_http_sync.py::test_mcat_expand - requests.e... 665s FAILED implementations_tests/test_http_sync.py::test_info - FileNotFoundError... 665s FAILED implementations_tests/test_http_sync.py::test_put_file[POST] - request... 665s FAILED implementations_tests/test_http_sync.py::test_put_file[PUT] - requests... 665s FAILED implementations_tests/test_http_sync.py::test_encoded - requests.excep... 665s FAILED implementations_tests/test_http_sync.py::test_with_cache - FileNotFoun... 665s ==== 39 failed, 855 passed, 115 skipped, 3 deselected in 528.13s (0:08:48) ===== 666s autopkgtest [11:56:23]: test fsspec-tests: -----------------------] 666s fsspec-tests FAIL non-zero exit status 1 666s autopkgtest [11:56:23]: test fsspec-tests: - - - - - - - - - - results - - - - - - - - - - 666s autopkgtest [11:56:23]: @@@@@@@@@@@@@@@@@@@@ summary 666s fsspec-tests FAIL non-zero exit status 1 682s nova [W] Using flock in prodstack7-ppc64el 682s Creating nova instance adt-questing-ppc64el-fsspec-20250506-114517-juju-7f2275-prod-proposed-migration-environment-2-ba99039f-8a27-4610-93aa-03c1eda353bb from image adt/ubuntu-questing-ppc64el-server-20250506.img (UUID e1f89dbe-ec13-4fb8-859d-773ec93960ca)... 682s nova [W] Timed out waiting for 6b4fba4a-c3a7-4caa-9687-68b68a90f778 to get deleted.